6

Tôi hiện đang làm việc với Android Jelly Bean MediaCodec API để phát triển trình phát video đơn giản.Android MediaCodec API video phát quá nhanh

Tôi trích xuất tuyến đường, phát âm thanh và video trong các chuỗi riêng biệt. Vấn đề là theo dõi video luôn được phát quá nhanh.

Sự cố có thể bị ẩn ở đâu?
Cả âm thanh và video đều được xử lý gần như giống nhau, ngoại trừ âm thanh được phát qua AudioTrack và video được hiển thị trên bề mặt.

+0

Bạn đã nhận được thông tin này ở đâu? – BlueVoodoo

+0

Bạn có thể vui lòng đăng mã của mình không. Nó sẽ là hữu ích gỡ lỗi – itsmeagain

+0

tôi đang có cùng một vấn đề, có bạn figured nó ra? – xiaowoo

Trả lời

3

Nếu bạn hiển thị khung ở tốc độ tối đa, bạn sẽ đạt 60 khung hình/giây trên hầu hết các thiết bị. Bạn cần phải tốc độ nó theo tem thời gian trình bày được cung cấp bởi bộ mã hóa.

Ví dụ: nếu đầu vào là định dạng được Android hỗ trợ (ví dụ: tệp .mp4 điển hình), bạn có thể sử dụng lớp MediaExtractor để trích xuất từng khung. Dấu thời gian có thể được truy xuất với getSampleTime(). Bạn muốn trì hoãn hiển thị bằng sự khác biệt giữa dấu thời gian trên các khung hình liên tiếp - đừng cho rằng khung đầu tiên sẽ có dấu thời gian bằng 0.

Ngoài ra, đừng cho rằng khung hình video xuất hiện ở tốc độ không đổi (ví dụ: 30 khung hình/giây). Đối với một số nguồn, khung sẽ đến không đều.

Xem ví dụ "Phát video (TextureView)" trong Grafika, đặc biệt là lớp SpeedControlCallback. Video gen-eight-rects.mp4 sử dụng thời lượng khung biến đổi để thực hiện. Nếu bạn chọn hộp "Phát ở tốc độ 60 khung hình/giây", dấu thời gian trình bày sẽ bị bỏ qua.

Các vấn đề liên quan