問題タブ [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.

0 投票する
0 に答える
1713 参照

android - mp4 から動画を抽出する MediaMuxer と MediaExtractor

私は mp4 からビデオを抽出し、他のオーディオとミックスしようとしています。ビデオ部分は次のとおりです。

作品:

ビデオフォーマット:

mp4Muxer.stop() 行まで実行すると、例外が発生します。

Extract Decode Encode Mux Audioを読みましたが、それでも理由がわかりません。助けてください。

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

android - EncodeDecodeMux - Samsung デバイス - S6 Edge および S5 でテスト済み

参照: https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java

解像度とビットレートが低いビデオを作成するために、上記のコードを使用してエンコード/デコード/マルチプレクサーを実行しています。nexus5、LG g3、one plus の 4k ビデオを含むすべての解像度で問題なく動作します。

しかし、サムスンのデバイスは不適切な動作を示します。

  • 入力として 4k ビデオ (3840x2160) を取り、その解像度を 1920x1080 に下げたい場合、例外が発生します。

  • 入力として 4k ビデオ (3840x2160) を取り、その解像度を 1280x720 に下げたい場合でも例外が発生します。

  • ターゲットの解像度を 640x360 に設定すると、問題なく動作します。

これは、samsung デバイスのコーデックの問題に関連している可能性があると思います。

以下はコードスニペットです

次のステートメントは例外を引き起こします

以下はスタックトレースです

0 投票する
0 に答える
319 参照

android - Android - MediaMuxer は現在 WebM をサポートしていますか?

ドキュメントには次のように記載されています。

MediaMuxer は、基本ストリームの多重化を容易にします。現在、出力として mp4 ファイルのみをサポートし、最大で 1 つのオーディオおよび/またはビデオのエレメンタリ ストリームをサポートしています。

MediaMuxer.OutputFormat パッケージを調べると、「MUXER_OUTPUT_WEBM」定数もあります。それは単なるプレースホルダーですか、それとも MediaMuxer はオーディオとビデオのデータを多重化するための webM を既にサポートしていますか? そうでない場合、現在、webM コンテナーに多重化する方法はありますか?

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

java - android - メディアコーデックの表示時間を設定する

ビデオを作成するために、以下のコードを使用して生データを h264 にエンコードしました。非常にうまくエンコードされていますが、ビデオの再生が速すぎます。発表時間に問題があるようです。記録開始時に「tstart」の値を設定し、フレームごとに現在時刻と tstart の差を計算して queueinputbuffer に渡しますが、何も変わっていません。どの部分に問題がありますか? Android 4.3 では Surface を mediacodec に渡すことができることはわかっていますが、Android 4.1 をサポートしたいと考えています。前もって感謝します。

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

android - mp4 ファイルに mediacodec と mediamuxer を使用する場合のオーディオとビデオのトラック同期の問題

マイクからのオーディオ (didGetAudioData を上書き) とカメラからのビデオ (onpreviewframe を上書き) を多重化して mp4 ファイルを生成したいと考えています。互換性のない構成またはpresentationTimeUsに関連する問題について、誰かが問題を解決する方法を教えてくれるのではないかと思いました. 以下は私のソフトウェアでした。

ビデオ構成

以下のようにビデオプレゼンテーションPTSを取得しました。

オーディオ構成

以下のようにオーディオプレゼンテーションPTSを取得しました。

この問題は、オーディオのみにジッター機能を適用したことが原因でしたか? はいの場合、ビデオにジッター機能を適用するにはどうすればよいですか? また、 https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/EncodeDecodeTest.javaで正しいオーディオとビデオのプレゼンテーションPTSを見つけようとしました. しかし、encodedecodeTest はビデオ PTS しか提供しませんでした。これが、私の実装でオーディオとビデオの両方にシステム ナノタイムを使用した理由です。コード化されたデコードテストでビデオ プレゼンテーションPTSを使用したい場合、互換性のあるオーディオ プレゼンテーションPTSを構築するにはどうすればよいですか? 手伝ってくれてありがとう!

以下は、参照用にyuvフレームをビデオメディアコーデックにキューに入れる方法です。オーディオ部分については、presentationPTS が異なる以外は同一です。

0 投票する
0 に答える
997 参照

android - Android MediaProjection のパフォーマンスの向上

のパフォーマンスを向上させることが可能かどうかお尋ねしたいと思い MediaProjectionます。

faddenの回答後に編集されました。

アプリの疑似構造:

1) AppCompatActivity のフルスクリーン FrameLayout:

2) SurfaceViewによるカメラプレビュー

3) Camera Preview を FrameLayout に追加する

4) 入力面を作成します。

5) 仮想ディスプレイを作成し、仮想ディスプレイを Surface にレンダリングします。

6)MediaMuxerオーディオ/ビデオ マルチプレクサ ストリームに使用します。

たとえば、10 秒間。録音の:

〜20FPSです。

30FPSが欲しいです。(デバイスは 30 FPS で fullHD を記録できるので、それは可能であると思います。)

私は Android studio 2.0 から画面を記録しようと し
まし た 。


Huawei Honor 4C、Android 5.1.1 ~20 FPS でテスト済み。
Vodafone Smart Ultra 6、Android 5.1.1 でテスト済み、ビデオは最大 40 FPS です。

TinyDancerで FPS を測定してみましたが、録画中に 60 FPS を示しました。

どこが弱点ですか?記録中の CPU 使用率は 10% 未満です。

追加の質問: Android 6 の MediaProjection のパフォーマンスは向上しますか?

(注: オーバーレイ ビューでカメラ プレビューを記録します。)

0 投票する
0 に答える
536 参照

android - MediaMuxer はビデオを記録しません。問題を解決するのを手伝ってください

MediaCodec と MediaMuxer を使用して、バイト配列からビデオを録画します。しかし、その結果、ビデオを記録することはできません。システムは、「ファイルが正しくありません」と言います。以下にコード例を示します。mp4 形式のビデオ ファイルを取得する必要があります。何が問題なのか教えてください。

ログ:

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

android - サンプルがバッチで書き込まれると、Mediamuxer が破損したビデオを生成する

Android の MediaMuxer と MediaCodec を使用して MP4 ビデオを作成しようとしています。

writeSampleData() を呼び出してコーデックから直接マルチプレクサにフレームを排出すると、すべてが正常に機能し、正しいビデオが生成されます。

しかし、最初にこれらのフレームを配列に保存しようとして、後でそれらをマルチプレクサに送信することにした場合、プレゼンテーションのタイムスタンプが正しい場合でも、動作するビデオを作成できません。

何らかの理由で、mediamuxer の出力は、プレゼンテーションのタイムスタンプだけでなく、「writeSampleData」が呼び出された実際の時間にも依存しているように見えますが、正しいタイムスタンプがあれば十分であることは理解しています。

誰でもこの問題に光を当てることができますか?

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

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

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

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

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

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

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