2016-04-22 15 views
0

私はFFmpegを使用してビデオトランスコードを行っていますが、動作は非常に遅いです。Android 4.3+のMediaCodec APIを使用してビデオをトランスコードする方法

私もIntel Indeライブラリを試しましたが、私がテストした一部のAndroid端末では動作しません。

したがって、ビデオをトランスコードするためにMediaCodec Apiを使用したいと考えています。

私は BigFlakeからいくつかのサンプルコードを読んでいます。これはApiのコンセプトを得るのに役立ちます。しかし、私はまだビデオファイルをあるフォーマットから別のフォーマットにトランスコードする方法を知りません。

私は、コーデックでの作業経験を持っていない、と私は思うの流れは次のとおりです。誰もが正しい方向に私を指すことができれば

Decode input video file(frame?) -> feed into encoder -> convert the stream to a .MP4 file.

は感謝しています。

答えて

0

あなたは既に基本を理解しているようです。作業の流れが正しい - デコーダの出力をエンコーダの入力に供給します。結果を.mp4ファイルにする場合は、AVC出力をMediaMuxerに送信してください。

トリッキーな部分は、トランスコードによって達成しようとしていることと関係があります。ビデオのサイズやビットレートを変更するのは簡単です。エンコーダを適切に設定するだけで済みます。パフォーマンスを向上させるために、おそらくOpenGL ESを使用したいので、ビデオのフィルタリングはもう少し複雑です(bigflakeのDecodeEditEncode testでこれを実証しています)。フレームレートを変更すると複雑になることがあります。

最良の結果を得るには、Surfaceを使用する必要があります(API 18+が必要です)。これは、ビデオデコーダがサーフェスへの出力をサポートしていることを前提としています。もしそうでなければ、あなた自身がレンダリングする必要があります。

追加のMediaCodecの例は、Grafikaにあります。

関連する問題