問題タブ [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.
android - Android MediaCodec dequeOutputBuffer は常に -1 を返します
をデコードするために新しいMediaCodec API
onを使用しています。開発者ページのコード スニペットを使用して、(media_codec.xml から取得した) 名前でデコーダーをインスタンス化し、サーフェスを渡し、コーデックを構成しました。Jelly Bean
h264 stream
私が直面している問題は、dequeOutputBuffer が常に -1 を返すことです。
負のタイムアウトで無期限に待機しようとしましたが、うまくいきませんでした。
-1 を取得するたびに、getOutputBuffers を使用してバッファーを更新しました。
カスタム アプリを使用してメディア ソースからのデータを解析し、デコーダーに提供する場合にも、同じ問題が発生することに注意してください。
上記の入力は役に立ちます
android - Android MediaCodec API 動画の再生が速すぎる
現在、Android Jelly Bean MediaCodec API を使用して、単純なビデオ プレーヤーを開発しています。
トラックを抽出し、オーディオとビデオを別々のスレッドで再生します。問題は、ビデオ トラックの再生が常に速すぎることです。
問題はどこに隠されていますか?
オーディオとビデオはほぼ同じように扱われますが、オーディオは AudioTrack を介して再生され、ビデオはサーフェスにレンダリングされます。
android - MediaCodec:エンコーダーの出力をテスト/再生する方法。
私はAndroid開発に不慣れです。ジェリービーンズバージョンで動作するAndroid携帯用のビデオコンプレッサーアプリケーションを作成しようとしています。MediaCodecAPIを使用しています。
以下は、デコーダーとエンコーダーを起動するために行った初期設定です。ドキュメントに従ってエンコードとデコードを行いました。しかし、私が得ている出力は、それをダブルクリックするだけでは再生できません。誰かが私に出力をチェックしてそれが機能したかどうかを確認する方法を提案できますか?
私は本当にここで立ち往生しています。私を助けてください。
前もって感謝します :)
android - Android MediaCodec AAC エンコーダー
MediaCodec
API レベル 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 は、あるバッファーの内容を別のバッファーにコピーします。
次のコードは、エンコーダーの入力バッファーを占有するために使用されます。
次のように、エンコーダーからの出力をローカル ファイルに書き込みます。
android - Android MediaCodec 3gpp エンコーダの出力バッファに不正なバイトが含まれている
MIC からのオーディオ ストリームを 3gpp (AMR-NB) としてエンコードしようとしています。問題は、出力バッファーに奇妙なデータが含まれていることです。コードと出力は次のとおりです。
メディア エンコーダーの作成:
MIC からの PCM データは正しいようです (ファイルに保存され、Audacity でリッスンされます)
エンコードされたバイトの読み取り (バッファ、スレッドで実行):
出力は次のとおりです。
私はグーグルで検索しましたが、助けが見つかりませんでした。MediaCodec の使用に関する Android ドキュメントも優れていません。出力バッファ コンテキストでの ByteBuffer.clear() の使用に関する多くの試行錯誤です。
よろしく、Ahti。
android - MediaCodec を使用して RTSP サーバーからデータをデコードする方法は?
クラスで試しsetDataSource()
ましMediaExtractor
たが、RTSP パスでは機能しません。クラスで同じパスを使用でき、機能しますが、代わりにクラスMediaPlayer
を使用することが非常に重要です。MediaCodec
Android には使用できる RTSP API がなく、Android 用の RTSP ライブラリも見つからないと思います。
RTSP サーバーからMediaCodec
クラスにビデオ ストリームを供給する比較的簡単な方法はありますか?
android - メディアコーデックでビデオ フレームレートとオーディオ サンプルレートを決定する
Android で MediaCodec を使用してデコードしているビデオについて、次の情報を把握する必要があります。 - オーディオの場合: サンプル レートとチャンネル数。- ビデオの場合: フレームレート。私は通常 h264+aac をデコードしていますが、ソリューションは他の形式に拡張できるはずです。これはどのように達成できますか?