2016-08-07 13 views
7

Tôi có một ứng dụng đang hoạt động để phát trực tuyến video tới Chromecast (sử dụng nannoHttpd) và mọi thứ đều hoạt động tốt. Bây giờ vấn đề của tôi là: video được ghi bằng thiết bị mới có kích thước quá lớn để phát trực tiếp, vì vậy tôi muốn mã hóa lại video thành tốc độ bit thấp hơn.Chuyển mã video thành bitrate và luồng thấp hơn

Tôi đã thử ffmpeg nhưng kết quả không thỏa đáng và nó sẽ tăng kích thước apk lên 14 MB.

Bây giờ tôi đang thử api MediaCodec. Nó nhanh hơn ffmpeg, nhưng nó lấy tập tin đầu vào và ghi nó vào tập tin đầu ra và tôi muốn mã hóa lại dữ liệu byte được phục vụ bởi nannohttpd.

Bây giờ một giải pháp đến với tâm trí của tôi, đó là chuyển mã video và truyền tệp đầu ra nhưng có hai nhược điểm;

  1. Điều gì xảy ra nếu tệp quá lớn và người dùng không nhìn thấy toàn bộ video? Phần lớn CPU, tài nguyên pin bị lãng phí.
  2. Điều gì sẽ xảy ra nếu người dùng chuyển tiếp nhanh video dài đến một thời điểm chưa được mã hóa lại?
+0

Để làm rõ mọi việc: chúng ta đang nói về các tệp video trực tuyến đã được ghi lại, không có gì gần với việc mua lại trong thời gian thực + phát trực tiếp đúng không? –

+0

@ J.Jacobs-VP yeah right – ingsaurabh

Trả lời

1

1 MediaCodec chỉ thực hiện một điều mã hóa giải mã! và bạn sẽ nhận được các byte thô của dữ liệu được mã hóa mới. Vì vậy, nó là lập trình để chọn hoặc là đổ vào một container (.mp4 tập tin) bằng cách sử dụng một muxer. Vì vậy, không cần ở đây để viết lại tất cả mọi thứ trở lại vào một tập tin.

2 Tìm kiếm dữ liệu thích hợp và khởi động lại MediaCodec.

+0

Tôi biết điều này như tôi đã nêu trong câu hỏi của mình, nhưng làm thế nào để làm điều đó một số mã sẽ hữu ích, như cách tìm kiếm – ingsaurabh

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