web-dev-qa-db-ja.com

MediaCodec Androidを使用してMP4ビデオを圧縮する方法

私のAndroidアプリでは、解像度、ビットレートを変更してmp4ビデオを圧縮したいと思います。FFmpegを使いたくない(NDKを使いたくないからです)ので、 MediaCodec APIを使用します。

これが私の論理的なステップです:

  1. MediaExtractorでビデオファイルを抽出し、データをデコードします。
  2. 新しい解像度、ビットレート、エンコードデータで新しいエンコーダを作成します。
  3. MediaMuxerを使用して新しいmp4ファイルを作成します。

私の問題は、デコーダの出力とエンコーダの入力の間の接続を設定する方法がわかりません。ビデオをSurfaceにデコードしたり、Surfaceから新しいビデオをエンコードしたりできます。しかし、それらの接続方法がわかりません。

私はこれらのリンクを読みます: Android MediaCodec:mp4ビデオサイズを縮小しますAndroid新しいMediaCodecライブラリを使用してビデオ圧縮 およびBigflakeの例: https://Android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/Android/media/cts/DecodeEditEncodeTest.Java

誰かが私がしなければならないことを明確に説明できますか?

16
TOP

私はこれを使用して、Androidでビデオを操作する方法を確認しました: https://github.com/hoolrory/AndroidVideoSamplesVideoResampler.JavaCommonVideoLibrary内。

13
isma3l