問題タブ [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 - Android ビデオの正確なシーク
MediaExtractor を使用した正確なシークに苦労していseekTo()
ます。問題なくフレームの同期を求めることができますが、特定の時間を求めたいと思います。この質問により、これを行う方法をいくつか考えましたが、それらが有効かどうかはわかりません。advance()
基本的に、ターゲット時間に達するまで、最も近い前の同期フレームを探してからエクストラクタを探す必要があります。処理中のすべてのフレーム、つまり最初の I フレームと残りの P フレームがデコーダに供給されます。これは関連するコード スニペットです ( google/grafikaの MoviePlayer に基づく):
ご想像のとおり、通常は大量のフレームをキューに入れていますが、今のところ、メモリ消費や最終的な遅延は問題ありません。問題は、dequeueInputBuffer()
メソッドがループ内でしばらくの間しか機能せず、最終的に -1 を返すことでスタックすることです。これは、ドキュメントによると、バッファーが利用できないことを意味します。を に変更するTIMEOUT_USEC
と-1
、無限ループになります。
このアプローチが正しいかどうか、またはある時点でアクセスできない理由を教えてくださいinputBuffer
。
android - 高速な Android デコード/エンコード メディア エクストラクタ
MediaMuxer ビデオ圧縮 (解像度の変更)とhttps://android.googlesource.com/platform/cts/+/kitkat-release/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTestのコードに従っています。ジャバ。
私の HTC One M8 での 1 分間のビデオの場合、小さなファイル サイズに完全に圧縮するには 40 秒かかります。ただし、私の Sony Z3 では、1 分間のビデオを圧縮するのに丸 2 分かかります。この圧縮を行うためのより効率的な方法はありますか?
例としてのWhatsappは、同じビデオ(1分)を1分20秒に圧縮しているようです。
android - Android デバイスで現在再生中のオーディオ ファイルの MediaBuffer へのアクセス
dataSource を設定すると、mediaextrator、mediacodec、およびオーディオ トラックを介してファイル/ストリームのメディア バッファにアクセスできます。
私が欲しいのは、Android の音楽アプリで再生されているオーディオのメディア バッファーにアクセスする方法だけです。
android - ローレバー hls android プレーヤー
HLS ストリームでクラスMediaExtractorを使用すると問題が発生します。
ここにあるサンプルコードに基づいて、この単純なアプリはお粗末です。mp4 ファイルでは問題ありません。メディア エクストラクタがコーデックを検出し、サーフェスビュー サーフェスに描画できます。
残念ながら、同じコードをhls ストリームに切り替えると、メディア エクストラクタ クラスはフォーマットを検出できません。
このフォーマットを正しく処理するようにメディア エクストラクタに指示する方法はありますか?
android - Android MediaExtractor readSampleData IllegalArgumentException
この質問に従おうとします AndroidのMediaMuxerを使用して複数のmp4オーディオファイルを連結し、ビデオファイルを連結します。
しかし、何らかの理由で、readSampleData を呼び出すと、MediaExtractor が IllegalArgumentException をスローします。
公式の API では、この関数は例外をまったくスローすべきではありません。どうしたの ?
ByteBuffer のサイズが原因である可能性があることを示唆する古い質問を見つけました: Android MediaMuxer readSampleData IllegalStateException
サイズの値をたくさん試しましたが、どれも問題を解決しませんでした。知っておくべき標準サイズはありますか?
どんなヒントでも役に立ちます!
android - Android で HE-AAC オーディオを識別して適切なデコードと再生を行う
MediaExtractor / MediaCodec
Android (ターゲット API レベル >= 16) でコンボを使用して、オーディオ ストリームをデコードします。MPEG-4 HE-AAC オーディオ データを含む mp4/m4a コンテナを再生するときに微妙な問題が発生しました。
トラックのクエリMediaFormat
を実行するMediaFormat.KEY_SAMPLE_RATE
と、実際には予想されるサイズの半分しか得られません。たとえば、44100 の再生サンプル レートが必要なトラックの場合、 22050 がMediaFormat
返されます。HE-AAC に関するドキュメントをいくつか読んだ後、これはそのコーデックの仕組み。
それでも、AudioTrack
インスタンスでオーディオ トラックを再生するには、22050 ではなく 44100 の正しい (再生) サンプルレートで構成する必要があります。
したがって、オーディオが API ターゲット レベル >= 16 でエンコードされた HE-AAC であることを確実に知る方法を探しているのでAudioTrack
、報告されたサンプル レートの 2 倍にサンプル レートを設定できます。
編集:私はMediaFormat
when MediaCodec
return with をチェックしMediaCodec.INFO_OUTPUT_FORMAT_CHANGED
ます。フォーマットは次のようになります。
で適切な再生を行うAudioTrack
には、サンプル レートを 2 * サンプル レート = 44100 に設定する必要があります。
csd-0
プロファイル/フォーマットなどを推測するための詳細情報が含まれているのだろうか. 上記の例では、csd-0
バッファからの 5 バイトは次のようになります。
今、私はこの「コーデック固有のデータ」の具体的な構造について疑問に思っています