問題タブ [android-mediacodec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5319 参照

android - android media codec タイプ「video/mp4」のデコーダーをインスタンス化できません

mediamuxer クラスの実装に取り​​組んでいます。mediacodec クラスから入力を受け取ります (1 つのオーディオと 1 つのビデオ)。ただし、「video/mp4」をエンコードしようとするとエラーがスローされます

コード:

エラー:

エラーはデコーダー用であり、呼び出しはエンコーダーを作成するためのものであることに注意してください。

私はおそらくすぐにこれを理解するでしょうが、これに遭遇した他の人のためにここにあるでしょう.

0 投票する
1 に答える
1863 参照

android - Android メディアコーデックのクラッシュ

新しい API MediaCodec と MediaExtractor (API 16 から利用可能) を使用して、Android ビデオ プレーヤー アプリを構築しています。通常は問題なく動作しますが、非常に意味のないメッセージでクラッシュすることがあります。

誰かが何がうまくいかなかったのかをよりよく理解してくれたらいいのにと思います。クラッシュは通常、ビデオを開いて少し再生し、終了して別のビデオに移動すると発生します。非常に短い時間しか発生しませんが、非常に迷惑です。

0 投票する
1 に答える
4948 参照

android - Surface 入力を使用する MediaCodec: チャンク出力の生成

経由で CameraPreview データから短いシーケンシャル mp4 ファイルを生成しようとしていますMediaCodec.createInputSurface()。ただし、MediaCodecとそれに関連付けられているサーフェスを再作成するには、カメラを停止して への別の呼び出しを許可する必要がありmCamera.setPreviewTexture(...)ます。この遅延により、許容できない量のドロップ フレームが発生します。

したがって、入力サーフェスを再作成せずにCODEC_CONFIGとデータを定期的に生成する必要があるため、を呼び出す必要があります。が変更されていないと仮定すると、これは可能ですか?END_OF_STREAMmCamera.setPreviewTexture(...)MediaFormat

(私は fadden のCameraToMpegTestの例を適応させています。私の完全なコードはこちらです)

失敗した試行:

を呼び出しMediaCodec.signalEndOfInputStream()、 をドレインし、チャンク間でMediaCodec呼び出すと、への 2 回目の呼び出しで が生成されます。MediaCodec.flush()IllegalStateExceptionMediaCodec.signalEndOfInputStream()

を呼び出しMediaCodec.signalEndOfInputStream()、 を排出してMediaCodecから、MediaCodec.stop(); MediaCodec.configure(...), MediaCodec.start()再度呼び出さずにチャンク間で呼び出すとMediaCodec.createInputSurface()、次のエラーが発生します。

解決しました fadden に感謝します。完全なソリューション ソースはここにあります。

0 投票する
1 に答える
3516 参照

android - Android MediaMuxer illegalstateexception がマルチプレクサ mMediaMuxer.stop() を停止できませんでした

MediaMuxer の停止に問題があります。

私がオーディオを使用していることを除いて、 fadden の例にかなり従ったので、オーディオとビデオのトラックがまだ 100% 揃っているかどうかはわかりません。これが問題かもしれません。

mMediaMuxer.stop() のブレークポイントに到達すると、致命的なエラーが発生します。

stop を呼び出すと、MediaMuxer.mState = MUXER_STATE_INITIALIZED を伝えるのに十分な距離まで踏み込むことができます。しかし、nativeStart(mNativeObject) で失敗しています...

0 投票する
0 に答える
822 参照

android - MediaCodec flush() ピクセル化 (さまざまなソースからのデコード)

デコード プロセス中に 2 番目の MediaExtractor ソースからデコーダ バッファをロードすると、2 つのビデオ ソース間の非常に高速なピクセル化遷移が目立ち、ビデオ ソースを交換する前にデコーダをフラッシュしようとすると、ピクセル化がさらに長くなり、さらに目立つようになります。MediaCodec API を使用してクリーンなトランジションを作成する方法を知っている人はいますか?