2012-11-22 42 views
12

Tôi muốn hợp nhất hai hoặc nhiều tệp video (chúng có thể là hai hoặc hai 3gp, hoặc bất kỳ định dạng nào khác).Làm thế nào để concat hoặc hợp nhất hai hoặc nhiều tập tin video trong Android?

+2

ffmpeg là một thư viện lớn đối phó với chuyển đổi video và những gì không. Có một liên kết java nằm ở đây: http://code.google.com/p/jjmpeg/ – appnus

+0

Tôi đã sử dụng FileInputSream để nhận các tệp srouce và sau đó SequenceInputStream (stream1, stream2) để kết hợp hai tệp, nhưng nó nghĩ rằng điều này không đúng cách làm việc với các tập tin video, android rơi xung quanh vấn đề rò rỉ bộ nhớ nếu kích thước heap kéo dài hơn 16MB – Mahesh

Trả lời

14

Công cụ chung nhất mà bạn có thể sử dụng là ffmpeg (như được ghi chú bởi @Jeremy ở trên), nhưng việc sử dụng nó trên điện thoại di động sẽ yêu cầu một số công việc; cũng là LGPL được cấp phép và một số bộ mã hóa của nó (đáng chú ý là x264) là GPL.

Một giải pháp đơn giản hơn, nếu cả hai tệp bạn muốn ghép đều sử dụng mã hóa tương tự và được chứa trong định dạng tệp bắt nguồn từ MP4 (3GP là như vậy), là sử dụng trình phân tích cú pháp MP4 thuần khiết và ghép nối các video mà không cần chạm vào chính luồng truyền thông. Hãy xem mp4parser, một trình phân tích cú pháp nguồn mở là pure-java, được cấp phép theo giấy phép Apache và thậm chí có một số example for concatenating videos trong wiki của nó.

+0

, trình phân tích cú pháp mp4 hoạt động cho 2 tệp, nhưng nó không hoạt động đúng cho hơn 2 tệp, video không được hợp nhất đúng cách. là nó làm việc cho hơn 2 tập tin cùng một lúc? – Mahesh

+0

@Mahesh hợp nhất hai tệp, sau đó hợp nhất tệp đã hợp nhất với tệp tiếp theo và tiếp tục như vậy? – Cheesebaron

+0

@Cheesebaron Đây có phải là điều bạn đang nói không? –

5

Bạn có thể thử INDE Truyền thông for Mobile, hướng dẫn đang ở đây: https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials

Nó có chuyển mã \ chức năng remuxing trong lớp MediaComposer và khả năng tham gia phân khúc tập tin tập tin \. Vì nó sử dụng API MediaCodec bên trong mã hóa được thực hiện trên GPU nên rất thân thiện với pin và hoạt động nhanh nhất có thể.

Mẫu mã cho thấy làm thế nào để cho phép tham gia hoặc chức năng khác là trên github: https://github.com/INDExOS/media-for-mobile

enter image description here enter image description here enter image description here

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