問題タブ [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 投票する
4 に答える
1516 参照

android - Android MediaCodec dequeOutputBuffer は常に -1 を返します

をデコードするために新しいMediaCodec APIonを使用しています。開発者ページのコード スニペットを使用して、(media_codec.xml から取得した) 名前でデコーダーをインスタンス化し、サーフェスを渡し、コーデックを構成しました。Jelly Beanh264 stream

私が直面している問題は、dequeOutputBuffer が常に -1 を返すことです。
負のタイムアウトで無期限に待機しようとしましたが、うまくいきませんでした。
-1 を取得するたびに、getOutputBuffers を使用してバッファーを更新しました。

カスタム アプリを使用してメディア ソースからのデータを解析し、デコーダーに提供する場合にも、同じ問題が発生することに注意してください。

上記の入力は役に立ちます

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

android - Android MediaCodec API 動画の再生が速すぎる

現在、Android Jelly Bean MediaCodec API を使用して、単純なビデオ プレーヤーを開発しています。

トラックを抽出し、オーディオとビデオを別々のスレッドで再生します。問題は、ビデオ トラックの再生が常に速すぎることです。

問題はどこに隠されていますか?
オーディオとビデオはほぼ同じように扱われますが、オーディオは AudioTrack を介して再生され、ビデオはサーフェスにレンダリングされます。

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

android - MediaCodec:エンコーダーの出力をテスト/再生する方法。

私はAndroid開発に不慣れです。ジェリービーンズバージョンで動作するAndroid携帯用のビデオコンプレッサーアプリケーションを作成しようとしています。MediaCodecAPIを使用しています。

以下は、デコーダーとエンコーダーを起動するために行った初期設定です。ドキュメントに従ってエンコードとデコードを行いました。しかし、私が得ている出力は、それをダブルクリックするだけでは再生できません。誰かが私に出力をチェックしてそれが機能したかどうかを確認する方法を提案できますか?

私は本当にここで立ち往生しています。私を助けてください。

前もって感謝します :)

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

android - Android MediaCodec AAC エンコーダー

MediaCodecAPI レベル 16 以降の Android SDK が提供するクラスをエンコーダーと共に使用して、OMX.SEC.aac.encオーディオをファイルにエンコードします。AudioRecordクラスからオーディオ入力を取得します。AudioRecordクラスの私のインスタンスは次のように構成されています。

インスタンスから生データを再生できるAudioRecordので、問題はありません。

AudioRecordインスタンスからの出力をインスタンスに書き込み、ByteBufferエンコーダーから利用可能な入力バッファーに渡します。エンコーダからの出力は、SD カード上のファイルに書き込まれます。

これらは私のMediaCodecインスタンスの設定パラメータです:

VLC は、私の aac ファイルにストリームがないことを教えてくれます。コマンドFFMPEG -i @filename@を実行すると、次のエラーが表示されます: Invalid data found when processing input . 私がテストしたメディアプレーヤーのどれも私のファイルを再生できません。

ファイルを再生できないのはなぜですか? OpenMAXエラーは発生LogCatせず、エンコード時にアプリケーションがクラッシュすることもありません。同じ原理で動作するビデオエンコーダーを作成しましたが、動作します。

AudioRecordこれは、インスタンスからバッファにデータを読み取るコードです。

エンコーダーの関数 add は、あるバッファーの内容を別のバッファーにコピーします。

次のコードは、エンコーダーの入力バッファーを占有するために使用されます。

次のように、エンコーダーからの出力をローカル ファイルに書き込みます。

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

android - Android MediaCodec 3gpp エンコーダの出力バッファに不正なバイトが含まれている

MIC からのオーディオ ストリームを 3gpp (AMR-NB) としてエンコードしようとしています。問題は、出力バッファーに奇妙なデータが含まれていることです。コードと出力は次のとおりです。

メディア エンコーダーの作成:

MIC からの PCM データは正しいようです (ファイルに保存され、Audacity でリッスンされます)

エンコードされたバイトの読み取り (バッファ、スレッドで実行):

出力は次のとおりです。

私はグーグルで検索しましたが、助けが見つかりませんでした。MediaCodec の使用に関する Android ドキュメントも優れていません。出力バッファ コンテキストでの ByteBuffer.clear() の使用に関する多くの試行錯誤です。

よろしく、Ahti。

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

android - MediaCodec を使用して RTSP サーバーからデータをデコードする方法は?

クラスで試しsetDataSource()ましMediaExtractorたが、RTSP パスでは機能しません。クラスで同じパスを使用でき、機能しますが、代わりにクラスMediaPlayerを使用することが非常に重要です。MediaCodecAndroid には使用できる RTSP API がなく、Android 用の RTSP ライブラリも見つからないと思います。

RTSP サーバーからMediaCodecクラスにビデオ ストリームを供給する比較的簡単な方法はありますか?

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

android - メディアコーデックでビデオ フレームレートとオーディオ サンプルレートを決定する

Android で MediaCodec を使用してデコードしているビデオについて、次の情報を把握する必要があります。 - オーディオの場合: サンプル レートとチャンネル数。- ビデオの場合: フレームレート。私は通常 h264+aac をデコードしていますが、ソリューションは他の形式に拡張できるはずです。これはどのように達成できますか?