Zastosowaliśmy obie implementacje do naszej aplikacji do edycji wideo. Zasadniczo zastosowaliśmy implementację MediaCodec, jeśli wersja Androida> = 4.3 i w inny sposób używamy FFMPEG.
Problem z użyciem FFMPEG:
- jak pan powiedział, cpu intensywny proces ten sposób zużywa więcej baterii
- x264 koder jest na licencji GPL, więc warto korzystać OpenH264 enkoder zamiast które obsługują tylko Baseline profil, więc jakość obrazu jest nie najlepszy
- Ponieważ wykorzystywane oprogramowanie kodera, szybkość przetwarzania jest stosunkowo powolny, przynajmniej w porównaniu do wykonania MediaCodec
MediaCodec mają również pewne wady, choć na przykład:
- Jeśli chcesz zrobić transkodowanie, android wersja muszą być> = 4,3, chyba że chcesz do czynienia z formatu kolor przemiany siebie, która jest całkowicie bałagan, ponieważ każdy dostawca może mieć własną implementację formatu kolorów. (Od wersji 4.3 obsługa kodowania MediaCodec za pomocą powierzchni wejściowej)
- Enkoder sprzętowy może zachowywać się inaczej w różnych modelach. (Na przykład niektóre koder może produkuje ramek B, które nie są jeszcze obsługiwane przez Android MediaMuxer, więc może chcesz używać ffmpeg do części muksowania)
Więc muszę powiedzieć, jeśli tylko obsługują nowy android, należy użyj mediacodec, ale jeśli chcesz być bezpieczny (łatwiej napisać kod, który działa na każdym urządzeniu) i nie masz nic przeciwko wydajności, użyj FFMPEG z OpenH264