0

カメラからのフレームをエンコードする Android (Java) のアプリケーションが 1 つあります。

各フレームは、キャプチャ後に API MediaCodec でエンコードされた 1 つのバイト配列です。

フレームをビデオファイルに直接書き込むと、ffplayで開くことができます(VLCなどの別のビデオプレーヤーではありません)が、たとえば次のように表示されます。

Input #0, h263, from 'example.avi':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: h263, yuv420p, 640x480 [PAR 12:11 DAR 16:11], 25 fps, 25 tbr, 1200k tbn, 29.97 tbc
5.58 A-V:  0.000 s:0.0 aq=    0KB vq=    0KB sq=    0B f=0/0   0/0   

つまり、再生時間もビットレートも認識しません。

メタデータをファイルに書き込む必要があると思いますが、その方法がわかりません。

投稿で述べたように、アプリケーションは Java (Android API を使用) で実装されているため、ビデオ プレーヤーが私のビデオを認識できるようにするメタデータを追加する方法を知りたいです。

4

2 に答える 2

1

の出力MediaCodecは生の H.264 ストリームです。Android 4.3 (API 18) 以降では、 MediaMuxerクラスを介して実行することで、このストリームを .mp4 ファイルに変換できます。

MediaCodecおそらく興味深い関連項目は、 ByteBuffer を介して YUV データを渡す代わりに、カメラの Surface プレビューをフィードできるようになったことです。このアプローチでは、データのコピーが少なくて済み、カラー プレーンのスワップも必要ありません。

ここで CameraToMpegTest の例を参照してください。

于 2013-07-24T20:16:40.033 に答える