問題タブ [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 - 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 ドキュメントは非常にひどいものであり、これを機能させるために何をする必要があるかについて頭も尻尾もわかりません。それはかなり些細な作業のはずです....
提案やアドバイスをいただければ幸いです。
ティア
java - MediaCodec、MediaExtractor、MediaMuxer などを使用して Android でビデオを反転します。
要件: 動画ファイルを反転して、新しい動画ファイルとして Android に保存したい。すなわち。最終的な出力ファイルは、ビデオを逆再生する必要があります。
私が試したこと: 以下のコードを使用しました (AOSP https://android.googlesource.com/platform/cts/+/kitkat-release/tests/tests/media/src/android/media/ctsから取得しました) /MediaMuxerTest.java ) を少し変更します。
私が行った主な変更は、この行にあります
これは、ビデオ フレームが逆の順序で出力ファイルに書き込まれることを想定して行われました。しかし、結果は元のビデオと同じでした (反転していません)。
ここで試したことは意味がないと感じています。基本的に、ビデオフォーマット、コーデック、バイトバッファなどについてはあまり理解していません。
また、opencv、ffmpegなどの優れたJavaラッパーであるJavaCVを使用してみましたが、そのライブラリで動作するようになりました。ただし、エンコード処理に時間がかかり、ライブラリのせいで apk のサイズが大きくなりました。
Android に組み込まれている MediaCodec API を使用すると、より高速で軽量になることが期待されます。しかし、同じものを提供している場合は、他のソリューションも受け入れることができます。
Androidでこれを行う方法について誰かが助けてくれれば幸いです。また、ビデオ、コーデック、ビデオ処理などの詳細/基本を学ぶのに役立つ素晴らしい記事があれば、それも役立ちます。
android - MediaExtractor - readSampleData() の最初の結果は -1 です
Android の を使用してビデオ ファイルからフレームを抽出しようとしていますMediaExtractor
が、何らかの理由で最初の結果readSampleData()
が -1 です。私は何を間違っていますか?
ファイル自体は確かに再生可能です。
android - ExtractMpegFramesTest の例が API23 デバイスで機能しない
このビッグフレークの例をいくつかの Android デバイスで実行しようとしました。
Galaxy S3、S4、S7で試してみました。
Galaxy S3 の場合、すべて正常に動作します。最初のフレームを取得しました。これが得られたものです。
そして、Galaxy S6 と S7 で同じコードを実行しようとしましたが、同じビデオに対して奇妙な画像を受け取りました。
誰か(ファッデン笑)がこの問題の原因を知っていますか?
android - Android MediaCodec デコーダーの最初の出力 ByteBuffers を処理するにはどうすればよいですか?
Android の MediaCodec スイートを使用してオーディオ リサンプラーを作成しようとしています。
私は現在、MP3 ステレオ オーディオ ファイルを MediaExtractor に送り、MediaCodec でデコードしています。ソース オーディオのサンプル レートは 48000 です。
理解できないのは、デコーダーから受け取る最初の 4 つの出力バッファーです。
- サイズ 0、時間 0
- サイズ 0、時間 24000
- サイズ4312、タイム48000
- サイズ4608、タイム72000
- サイズ4608、タイム96000
- 等
この回答、この回答、およびこの記事から、最初の2つのバッファは単に「エンコーダの遅延」が伝播され、単に破棄される可能性があると考えています。ただし、リストした 3 番目のバッファーでループが発生します。
バッファ #4 (およびそれ以降) の場合、計算は次のようになります。
しかし、バッファ #3 で何が起こっているのでしょうか? データを単純に解釈すると、オーディオは 48000 us の時点で再生を開始し、72000 us マークの前で一時停止し、その時点で途切れることなく継続的に再生を開始することが示唆されます。
バッファ #3 のデータの前に 296 個の非表示の 0 がある可能性が高いようですが、このオフセットはコード内の変数によって示されていないようです。誰かが私のためにこれに光を当てることができますか?