問題タブ [mediamuxer]
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.
java - 画像をビデオにエンコード (Mediacodec)
Mediacodec を使用して、一連の 10 個のビットマップをビデオにエンコードする必要があります。FFmpeg や Jcodec は非常に遅いため、使用したくありません。
インターネットで検索しましたが、変更できる完全に機能するサンプル コードが見つからないようです。
これが私が試したことです:
android - 1 つの mp4 からオーディオを取得し、それを android でリサンプリングされた (より小さい) mp4 で使用する
デバイスのカメラで撮影した .mp4 ビデオをリサンプリングしてサイズを小さくするソリューションを見つけました (解像度、ビットレート、フレームレートによるサイズ変更)。問題は、オーディオが引き継がれないことです。
ソース (大きい) mp4 からオーディオを取り出して小さい mp4 にプッシュするためのいくつかの異なるオプションを調べましたが、これらの手順のいずれも正しく機能しないようです。
私は次のことを試しました: 1) ソースから PCM オーディオを抽出する方法: Android で Java を使用して mp4 から mp3 にオーディオを抽出するにはどうすればよいですか? 2) PCM を M4A に変換してから、https://github.com/tqnst/MP4ParserMergeAudioVideo/blob/master/Mp4ParserSample-master/src/jp/classmethod/sample/mp4parser/MainActivity.ジャワ
それが私が最も近い方法でしたが、オーディオは非常に遅く、小さな mp4 のビデオとはまったく一致しませんでした。
また、これのバリエーションを使用して、ある mp4 から別の mp4 への「直接コピー」を試みました: Android´s MediaMuxer を使用して複数の mp4 オーディオ ファイルを連結する
これにより、小さい mp4 が実際にはソース mp4 よりも (ファイル サイズで) 大きくなり、実際にはサウンドが移動しませんでした。
MediaMuxer の Android ドキュメントは非常にひどいものであり、これを機能させるために何をする必要があるかについて頭も尻尾もわかりません。それはかなり些細な作業のはずです....
提案やアドバイスをいただければ幸いです。
ティア
android - Android 画像から動画へ
画像をテクスチャとしてロードし、GLES を介してレンダリングして、MediaCodec Surface 入力アプローチを使用するにはどうすればよいですか?
EncodeAndMuxTest の例から始めました。
前もって感謝します。
android - mediamuxer mediacodec と mediaextractor を使用して mp4 と aac ファイルをマージする Android (mp4parser なし)
オーディオを録音してから、aac オーディオと mp4 ビデオ ファイル (ミュート、オーディオなし) をマージし、マージされた mp4 ファイルを共有しようとしています。マージされた mp4 ファイルの共有は、Samsung J2 と Xiaomi で機能しますが、mp4 ファイルは Lenovo、Micromax およびその他の電話では再生されません。テスト結果は、 https ://docs.google.com/spreadsheets/d/1eeJEM- v-smEUzY-bSxwIwFVOsAbv6KT2u3Kz3jdOb8o/edit?usp=sharing 問題が共有または不適切な多重化によるものであり、問題の原因が何かを理解できません。助けてください。
共有用のコードは recordAudio.java にあり、これは次のとおりです。
多重化のコード:
android - この値を手動で設定しない場合、どの AVC プロファイル/レベルが Android MediaCodec に設定されますか?
Android ACodec.cppでは、 と( / )からsetupAVCEncoderParameters
読み取らprofile
れ、が から来ているように見えます。したがって、以下のように/を手動で設定できると思います。level
msg
msg->findInt32("profile", &profile)
msg->findInt32("level", &level)
msg
format
MediaCodec.configure()
profile
level
MediaCodec.configure()
もちろん、設定したプロファイル/レベルをデバイスがサポートしているかどうかがわからないため、これは良い考えではないことに同意します。また、ほとんどのサンプル コードでは、これらの値がまったく設定されていませんでした。
例えば:
おそらくそれらは自動的に設定されますか?MediaCodec は、現在のデバイスがサポートしているプロファイル/レベルを照会し、自動的に選択しますか? デバイスが複数のプロファイル/レベルをサポートしている場合、どれが選択されますか? 低レベルのもの(ベースラインなど)または高レベルのもの(高など)?
android - Android MediaCodec dequeueInputBuffer は常に -1 を返します
AudioRecord オブジェクトから生データを取得し、MediaMuxer と MediaCodec を使用してファイルに保存しようとしています。
コーデックを開始し、マルチプレクサを開始し、データを入力バッファにロードしますが、そのような運はありません。
デバッグ調査の結果、 への呼び出しで問題が発生していることがわかりましたdequeueInputBuffer()
。データの最初のいくつかのチャンクは成功しているように見えますが、最終的にはコンスタントdequeueInputBuffer()
に返されます。-1
私が行方不明であることは明らかですか?これは、入力バッファがいっぱいになっているように見えますが、コーデックによって決して解放されていません。
関連コードのスニペット: