問題タブ [mp4parser]

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 に答える
613 参照

java - Androidで特定の時間に複数のオーディオファイルをビデオファイルにマージする方法は?

私がやりたいことは、Android プロジェクトの特定の時間に複数のオーディオ ファイルをビデオ ファイルにマージすることです。

たとえば、2 つのオーディオ ファイルがあるとします。5 秒の長さの a1、5 秒の長さの a2、および 20 秒の長さのビデオ V1 です。したがって、時間 00:01s から 00:05s でオーディオ a1 をビデオ V1 にマージし、時間 00:10s から 00:15s でオーディオ a2 をビデオ V1 にマージします。ここでの「マージ」とは、ビデオ ファイルが特定の時間にオーディオ ファイル a1 と a2 からナレーションを追加することを意味し、追加ではありません。

Google と StackOverflow を検索した結果、Mp4Parser ライブラリを見つけましたが、残念ながら、オーディオ トラックをビデオ トラックに完全にマージすることしかできません。私の質問は、特定の時間に複数のオーディオトラックからマージする方法ですか?

私が使用したコードは次のとおりです。

どんな助けでも大歓迎です!本当にありがとう。

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

android - Android mp4parser にオーディオ オーバーレイを追加

動画をマージして mp3 オーディオ オーバーレイを追加するアプリを作成しています。

ビデオをマージしても問題はありませんが、出力ビデオでオーディオが再生されません。

これが私のコードです:

出力ビデオに音声がありません。入力 mp3 は通常の音楽トラックです。

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

android - Android mp4parser - ビットマップからトラックを作成

Androidで画像(ビットマップ)からビデオトラックを取得するには?

ビデオの最後に画像を追加する必要があります.. 5 秒間

ありがとう

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

java - mp4parser AppendTrack エラー java.lang.NullPointerException

これはエラーです:

そしてこの私のコード:

そして、 Null Element が見つかりません。

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

java - MP4 と AAC の多重化 (jcodec、MP4Parser)

jcodec で生成した MP4 ファイルがあります。

次に、Android の MediaCodec で生成した AAC ファイルを用意します。

それらを 1 つのファイルにまとめて多重化したいのですが、Android API をあまり高く制限したくないので、MP4Parserを選択しています。


これが私の現在のコードです:


コードは次の行でクラッシュします。

これをスタック トレースとして使用します。

(クラッシュはこの関数のこの行で発生します。)


それで、それが何を意味するのか本当にわかりませんか?jcodec は、MP4Parser と互換性のない MP4 ファイル (すべてのビデオ プレーヤーで動作します) を出力しますか?

これを修正するには、何を調べる必要がありますか?

アドバイスをいただければ幸いです。


編集

間違った方法で行っていましたが、これはうまくいきました

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

java - mp4parser を使用した mp4 ファイルのマージ

2 つのビデオをマージする必要があります。どちらも mp4 で、他のすべてのパラメーターは同じです。問題は、大きなサイズのファイルがある場合、それをマージできず、null ポインター例外が発生することです。これは、私が間違っていたと思うが、問題を理解できない部分です。

エラー:

スレッド「AWT-EventQueue-0」での例外 java.lang.NullPointerException at com.googlecode.mp4parser.boxes.mp4.ESDescriptorBox.getContentSize(ESDescriptorBox.java:60) at com.googlecode.mp4parser.AbstractBox.getSize(AbstractBox.java) :203) com.googlecode.mp4parser.BasicContainer.getContainerSize(BasicContainer.java:70) で com.coremedia.iso.boxes.sampleentry.AudioSampleEntry.getSize(AudioSampleEntry.java:330) で com.googlecode.mp4parser.BasicContainer. getContainerSize(BasicContainer.java:70) com.coremedia.iso.boxes.SampleDescriptionBox.getSize(SampleDescriptionBox.java:112) com.googlecode.mp4parser.AbstractContainerBox.getHeader(AbstractContainerBox.java:67) com.coremedia.iso .boxes.SampleDescriptionBox.getBox(SampleDescriptionBox.java:94) com.googlecode.mp4parser.authoring.track.AppendTrack.mergeStsds(AppendTrack.java:81) com.googlecode.mp4parser.authoring.tracks.AppendTrack.(AppendTrack.java:65) で Mp4.merging.merge(merging.java:90) で gui.maingui. projectRecStopBActionPerformed(maingui.java:1281) で gui.maingui.access$2000(maingui.java:60) で gui.maingui$18.actionPerformed(maingui.java:941) で javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) ) javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) で javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) で javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) で javax java.awt.Component.processMouseEvent(Component.java:6535) で javax.swing.JComponent.processMouseEvent(JComponent.java:3324) で java.awt.Component.processEvent(Component.java:6300) で java.awt.Container.processEvent(Container.java:2236) で Java. awt.Component.dispatchEventImpl(Component.java:4891) で java.awt.Container.dispatchEventImpl(Container.java:2294) で java.awt.Component.dispatchEvent(Component.java:4713) で java.awt.LightweightDispatcher.retargetMouseEvent で(Container.java:4888) java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) で java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) で java.awt.Container.dispatchEventImpl(Container.java: 2280) で java.awt.Window.dispatchEventImpl(Window.java:2750) で java.awt.Component.dispatchEvent(Component.java:4713) で java.awt.EventQueue で。dispatchEventImpl(EventQueue.java:758) で java.awt.EventQueue.access$500(EventQueue.java:97) で java.awt.EventQueue$3.run(EventQueue.java:709) で java.awt.EventQueue$3.run( EventQueue.java:703) で java.security.AccessController.doPrivileged(Native Method) で java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) で java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java: 86) java.awt.EventQueue$4.run(EventQueue.java:731) で java.awt.EventQueue$4.run(EventQueue.java:729) で java.security.AccessController.doPrivileged(Native Method) で java.security .ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) java.awt.EventQueue.dispatchEvent(EventQueue.java:728) java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) で java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) で java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) でawt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) で java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) で java.awt.EventDispatchThread.run(EventDispatchThread.java:82) で101) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) で java.awt.EventDispatchThread.run(EventDispatchThread.java:82) で101) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) で java.awt.EventDispatchThread.run(EventDispatchThread.java:82) で

誰か助けてください!

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

android - Android Mp4Parser マージの問題

オーディオ (aac 形式) とビデオ (mp4 形式) をマージする必要があります。これには mp4parser ライブラリを使用します。

しかし、ビデオ ファイルが 5 ~ 6 分を超えると、一部のデバイスが動作しなくなります (つまり、UI がフリーズし、ユーザーは何もできませんが、Android はメッセージを表示しません。アプリを再開する唯一の方法は、デバイスを再起動します)。

コードスニペットでわかるように、すべての行をログに記録しましたが、結果ファイルをディスクに書き込む行に問題があることがわかりました。

また、さまざまなデバイスでテストしました。Moto G (第 1 世代)、Moto G (第 2 世代) (Android 5.0.2)、Nexus 5 (Android 5.1.1) は 5 ~ 6 分を超えてファイルをマージできませんが、Nexus 7 (Android 5.1.1) はファイルをマージできます。 10分以上。

それで、誰かがこれについて私に説明したり、アドバイスや例を教えてくれませんか. どうもありがとう。

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

android - Android で単一のビデオ トラックと複数のオーディオ トラックをマージする

アイデア

1 つのビデオ トラックを 1 つ (または必要に応じて 2 つ) のオーディオ トラックと結合するムービー編集アプリケーション用に、デバイスへの保存機能を作成しています。

まず、 MP4Parser (リンク) を使用して1 つのビデオ トラックにマージする複数のビデオ クリップがあります。

次に、複数のオーディオ クリップを1 つのオーディオ トラックに結合したいと考えています。これらのクリップは追加するのではなく、特定の時間に 1 つのオーディオ トラックにマージする必要があります。たとえば、2 つのオーディオ クリップ (A1、A2) と 60 秒のビデオ トラック (V1) があります。これらのオーディオ クリップは、重複していたり​​、間にホワイト ノイズが含まれていたりする可能性があります。オーディオ トラック全体の長さはビデオ トラックと一致する必要があり、最大 60 秒まで可能です。オーディオ トラック 1 には、最大 100 個のオーディオ クリップを追加できます。

  • V1 - 60.0 秒
  • A1 - 0.3 秒
  • A2 - 1.1秒

最後に、V1 ビデオ トラックに適合する、サウンドトラックも含むオプションの 2 番目のオーディオ トラックがある場合があります。

概要

これは次のようになります。

ビデオ トラック 1: [--------------------------------------------- -----------------------------------] 60秒

音声トラック 1: [-A1--A2---------------------------------------- ----------------------------] 60秒

オーディオ トラック 2: [--------------------------------------------- ----------------------------------] 60秒

問題

上記のように、音声トラックに x 秒のホワイト ノイズ (空の wav ファイル) を追加して完全な長さのトラックを取得することで問題にアプローチしようとしましたが、サウンドがオーバーラップしている場合は明らかに機能しません。この問題に取り組むには、他にどのような方法がありますか?