1

Android の MediaCodec API を使用して、Android で webm ファイルを作成しようとしています。MediaCodec.createEncoderByType("video/x-vnd.on2.vp8")この CTS テストに示されているように、VP8 エンコーダーを作成しました: https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/ Vp8EncoderTest.java

からエンコーダーに入力を渡していますSurface

そして、私はこのクラス IvfWriter を使用しています: https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/IvfWriter.javaファイルをSDカードに。

しかし、書いた後、MxPlayer (Android) でも VLC/Firefox を使用しているデスクトップでもそのファイルを再生できません。Firefox は、ファイルが破損していると報告します。

これは作成されたファイルです: https://www.dropbox.com/s/dwk42m9qz2mlagv/derp.webm

ビデオをデバッグする方法を教えていただければ幸いです。

4

2 に答える 2

3

作成した「webm」ファイルは webm ファイルではありません。これは ivf ファイル (はるかに単純な形式で、主にテスト用の VPx コーデック データを含めるために使用されます) であり、firefox はその形式をサポートしていません。ただし、VLCはそれをサポートしています。

しかし、ビデオ自体については、ファイル内のすべてのビデオ パケットですべてのバイトが 0 であるため、コードから IvfWriter クラスを呼び出す方法に何か問題があるようです。コードを詳しく見ないと、何が問題なのかを判断するのは困難です。ただし、パケットの長さはさまざまであるため、問題があるのは個々のパケットの内容だけです。

このようなデバッグを自分で行うには、次のように avconv (または ffmpeg) ツールを使用できます。avconv -loglevel debug -dump -hex -i derp.webm -f null -これにより、各パケットのメタデータ (サイズ、タイムスタンプ、フラグ) とペイロード コンテンツ自体が表示されます。

于 2014-08-13T08:17:58.443 に答える