問題タブ [mediaextractor]

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 に答える
1197 参照

android - MediaExtractor.setDataSource() の呼び出し時にスローされる例外

生の H264 ストリームをファイルに配置し、内部ストレージに配置しました。File クラスを使用してファイルにアクセスすると正常に動作しますが、次のコードを使用すると例外が発生します

W/System.err: java.io.IOException: エクストラクタのインスタンス化に失敗しました。

filePath の代わりに Filedescriptor も使用しましたが、これも機能しませんでした。どうすればこれを解決できますか? ありがとう

編集: ファイルのアクセス許可がマニフェスト ファイルに追加されるため、アクセス許可の問題はありません。

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

android - ビデオをデコードし、Mediacodec で再度エンコードすると、ファイルが破損する

https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.javaを実装しようとしています が、使用してソースを変更しています動画ファイル mp4. MIME タイプは video/avc、ビットレート 288kbps、iframeinterval 100、幅: 176、高さ: 144、ファイルサイズは 6MB です。ビデオをデコードしてフレームを出力サーフェスに配置すると、フレームをビットマップに保存して、フレームをきれいに表示できます。しかし最後に、(元のビデオと同じパラメータで) エンコードした後、700kb のファイルを取得し、ビデオを見ることができません (ファイルが破損している可能性があります)。

およびデコード-エンコード部分:

フレームを画像に取り込んで問題なく表示できれば、フレームは OutputSurface に問題なく表示されると思います。また、エンコーダーの構成に異常は見られません。少なくとも、どちらが私がチェックできると思うかを言って、私を助けてくれませんか? ありがとう。

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

android - AndroidでMP3ファイルをデコードしてからAACにエンコードする最速の方法は何ですか?

MediaCodec と MediaExtractor を使用した実用的なソリューションがありますが、6 MB MP3 のデコードには 15 秒 + AAC への 15 秒のエンコードが必要です。合計 > 30 秒。10秒未満の本当に速いものが必要です。より速い解決策を知っている人はいますか?

編集

私のボトルネックは Mediacodec 自体にあります。それらが提供するバイトバッファが小さすぎます。MediaFormat を AAC に設定する場合、InputBytebuffers は一度に 4096 バイトしかなく、私には遅すぎます。ストリーミングには適していますが、File to File には適していません。

15 秒ではなく 3 秒でデコードする C lib デコーダーに切り替えます。ただし、エンコーダーにはまだ 15 秒かかります。ADTSヘッダーも追加できるC lib AACエンコーダーを持っている人はいますか?

0 投票する
2 に答える
2693 参照

android - Mp4 から音声を抽出して Sd カードに保存 (MediaExtractor)

SD カードに mp4 ビデオ ファイルがあります。ビデオからオーディオを抽出し、MediaExtractor Api を使用して、抽出したオーディオを別のファイルとして SD カードに保存したいと思います。これが私が試したコードです:

選択したオーディオ トラックを取得して SD カードに保存する方法がわかりません。

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

android - 私のAndroidでは、openglサーフェスを使用して1つのH.264ビデオを別のビデオに再コーディングすると非常に遅くなります

各フレームに追加の効果を加えて、あるビデオを別のビデオに変換する機能を開発しています。各フレームにエフェクトを適用するために、opengl-es を使用することにしました。私の入力ビデオと出力ビデオは、H.264 コーデックを使用した MP4 です。H.264 を opengl テクスチャにデコードするために MediaCodec API (android api 18+) を使用し、シェーダーでこのテクスチャを使用してサーフェスに描画します。H.264 で MediaCodec を使用すると、Android でハードウェアのデコードが行われ、高速になると思いました。しかし、そうではないようです。小さな 432x240 の 15 秒のビデオを記録すると、合計 28 秒かかりました。

私のコードとプロファイル情報を見て、何か間違ったことをしている場合は、アドバイスや批評家を共有してください。

私のコード:

そしてプロフィール情報: プロファイルは、dequeueOutputBuffer に費やされた時間のほとんどを示しています

Samsung Galaxy Note3 Intl (Qualcom) でテスト済み

0 投票する
2 に答える
795 参照

android - mediacodec デコード h264 ストリームの制限

samsung S6、Android 5.1.1でh264ストリームをデコードするために使用mediacodecしています.mediacodecへの入力バッファは「0001」で始まる必要があります(pps、spsを設定する必要はありません)、またはACodecがエラーを報告します.

また、mediaextractor を使用して mp4 ファイルを再生しようとしましたが、正常に動作しますが、mediacodec へのバッファが "0001" で始まっていません。

h264 ストリームのデコードにこのような制限がある理由がわかりません。現在、ソケットからストリームを分析し、データを小さなパッケージ (各パッケージは 0001 で始まる) に分割してから、メディアコーデックに渡す必要がありますが、非効率的です。

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

android - Android MediaCodec 正確にフレーミングする方法 オーディオをトリミングする

Android でビデオ ファイルをフレーム単位で正確にトリミングする機能を構築しています。トランスコーディングはMediaExtractor、 、MediaCodec、およびで実装されMediaMuxerます。対応するビデオ フレームと一致させるために、任意のオーディオ フレームを切り捨てる方法を教えてください。

オーディオ フレームは Decoder の出力バッファでトリミングする必要があると思います。これは、圧縮されていないオーディオ データを編集できる論理的な場所です。

イン/アウト トリムについては、未加工のオーディオ バッファに必要なオフセットとサイズの調整を計算して、使用可能なエンドキャップ フレームに押し込み、次のコードを使用してデータを送信しています。

私の問題は、データの調整が、出力オーディオ バッファにコピーされたデータのみに影響するように見え、ファイルに書き込まれるオーディオ フレームを短くしないことMediaMuxerです。出力ビデオは、クリップの最後に数ミリ秒のオーディオが欠落してしまうか、またはあまりにも多くのデータを書き込んだ場合、オーディオ フレームがクリップの最後から完全にドロップされます。

オーディオ フレームを適切にトリミングするには?