2013-04-15 97 views
5

Tôi đã được yêu cầu hiển thị luồng video (luồng không phải từ HTTP) trong android, luồng là H.264 thô được Ghi và mã hóa trong PC, và tôi nhận được thông qua WIFI.Cách sử dụng lớp MediaCodec để giải mã các luồng H.264

Khi tôi nhận luồng, có thể sử dụng bộ giải mã MediaCodec để giải mã luồng và hiển thị luồng đó?

Trả lời

0

Xem các đề xuất mã hóa video here

1

Có. Cấu hình MediaCodec làm bộ giải mã "video/avc" và truyền một đầu ra Surface tới cuộc gọi configure().

API MediaCodec khá thấp và không có sẵn nhiều mã mẫu. Thay vào đó, việc sử dụng MediaPlayer có thể dễ dàng hơn.

Cập nhật: Hiện tại, có một loạt mã mẫu here. Hầu hết các tính năng này đều sử dụng các tính năng Android 4.3 (API 18), nhưng nếu bạn không cần MediaMuxer hoặc Đầu vào bề mặt là MediaCodec thì nó sẽ hoạt động trên API 16.

+0

Nhưng, tôi không thể tìm cách xử lý H. 264 luồng với MediaPlayer .any lý tưởng? – ljfxmu

+1

Hãy để tôi sao lưu một bước. Định dạng chính xác - luồng sơ cấp, PES, ... là gì? MediaCodec chấp nhận dữ liệu luồng sơ cấp, nhưng nó không chấp nhận nó là một luồng *; phải mất một loạt các "đơn vị truy cập", vì vậy nếu đó là một luồng cơ bản, bạn cần phải bảo toàn hoặc khôi phục các ranh giới "gói". Bạn cũng cần đảm bảo rằng bộ đệm đầu tiên được truyền vào có thông tin codec mà nó muốn, hiện không được ghi lại. Đặt cược tốt nhất của bạn có thể là chuyển đổi luồng ở phía PC thành một thứ mà MediaPlayer có thể xử lý. – fadden