問題タブ [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.
android - MediaExtractor.setDataSource() の呼び出し時にスローされる例外
生の H264 ストリームをファイルに配置し、内部ストレージに配置しました。File クラスを使用してファイルにアクセスすると正常に動作しますが、次のコードを使用すると例外が発生します
W/System.err: java.io.IOException: エクストラクタのインスタンス化に失敗しました。
filePath の代わりに Filedescriptor も使用しましたが、これも機能しませんでした。どうすればこれを解決できますか? ありがとう
編集: ファイルのアクセス許可がマニフェスト ファイルに追加されるため、アクセス許可の問題はありません。
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 に問題なく表示されると思います。また、エンコーダーの構成に異常は見られません。少なくとも、どちらが私がチェックできると思うかを言って、私を助けてくれませんか? ありがとう。
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エンコーダーを持っている人はいますか?
android - Mp4 から音声を抽出して Sd カードに保存 (MediaExtractor)
SD カードに mp4 ビデオ ファイルがあります。ビデオからオーディオを抽出し、MediaExtractor Api を使用して、抽出したオーディオを別のファイルとして SD カードに保存したいと思います。これが私が試したコードです:
選択したオーディオ トラックを取得して SD カードに保存する方法がわかりません。
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 秒かかりました。
私のコードとプロファイル情報を見て、何か間違ったことをしている場合は、アドバイスや批評家を共有してください。
私のコード:
Samsung Galaxy Note3 Intl (Qualcom) でテスト済み
android - mediacodec デコード h264 ストリームの制限
samsung S6、Android 5.1.1でh264ストリームをデコードするために使用mediacodec
しています.mediacodecへの入力バッファは「0001」で始まる必要があります(pps、spsを設定する必要はありません)、またはACodecがエラーを報告します.
また、mediaextractor を使用して mp4 ファイルを再生しようとしましたが、正常に動作しますが、mediacodec へのバッファが "0001" で始まっていません。
h264 ストリームのデコードにこのような制限がある理由がわかりません。現在、ソケットからストリームを分析し、データを小さなパッケージ (各パッケージは 0001 で始まる) に分割してから、メディアコーデックに渡す必要がありますが、非効率的です。
android - Android MediaCodec 正確にフレーミングする方法 オーディオをトリミングする
Android でビデオ ファイルをフレーム単位で正確にトリミングする機能を構築しています。トランスコーディングはMediaExtractor
、 、MediaCodec
、およびで実装されMediaMuxer
ます。対応するビデオ フレームと一致させるために、任意のオーディオ フレームを切り捨てる方法を教えてください。
オーディオ フレームは Decoder の出力バッファでトリミングする必要があると思います。これは、圧縮されていないオーディオ データを編集できる論理的な場所です。
イン/アウト トリムについては、未加工のオーディオ バッファに必要なオフセットとサイズの調整を計算して、使用可能なエンドキャップ フレームに押し込み、次のコードを使用してデータを送信しています。
私の問題は、データの調整が、出力オーディオ バッファにコピーされたデータのみに影響するように見え、ファイルに書き込まれるオーディオ フレームを短くしないことMediaMuxer
です。出力ビデオは、クリップの最後に数ミリ秒のオーディオが欠落してしまうか、またはあまりにも多くのデータを書き込んだ場合、オーディオ フレームがクリップの最後から完全にドロップされます。
オーディオ フレームを適切にトリミングするには?