2017-02-10 3 views
0

アンドロイドアプリケーションでは、amixフィルタを使用して2つのmp3ファイルをマージしています。さて、ときどき動作し、時には、それが必要とするmp3入力のペアに応じて、「メモリ不足」エラーを出します。 2つの異なるmp3ファイルをマージする2つの異なる実行のためのFFmpegログをここに貼り付けます。これはうまく動作FFmpegのamixフィルタがmp3の入力に応じて失敗する

Input #0, mp3, from '/storage/emulated/0/beatmachine/esplode/1.mp3': 
    Duration: 00:00:00.37, start: 0.000000, bitrate: 137 kb/s 
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s 
[mp3 @ 0xb5b9f600] Skipping 0 bytes of junk at 417. 
Input #1, mp3, from '/storage/emulated/0/beatmachine/esplode/7.mp3': 
    Duration: 00:00:01.78, start: 0.000000, bitrate: 129 kb/s 
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s 
Output #0, mp3, to '/storage/emulated/0/beatmachine/esplode/8.mp3': 
    Metadata: 
    TSSE   : Lavf57.25.100 
    Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default) 
    Metadata: 
     encoder   : Lavc57.24.102 libmp3lame 
Stream mapping: 
    Stream #0:0 (mp3) -> amix:input0 
    Stream #1:0 (mp3) -> amix:input1 
    amix -> Stream #0:0 (libmp3lame) 
Press [q] to stop, [?] for help 
Error while filtering: Out of memory 
size=  5kB time=00:00:00.36 bitrate= 105.0kbits/s speed=1.51x  
video:0kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 5.548245% 

これは、メモリ不足のために失敗した

Input #0, mp3, from '/storage/emulated/0/beatmachine/esplode/2.mp3': 
    Duration: 00:00:01.36, start: 0.025057, bitrate: 195 kb/s 
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 195 kb/s 
[mp3 @ 0xb5c5f600] Skipping 0 bytes of junk at 417. 
Input #1, mp3, from '/storage/emulated/0/beatmachine/esplode/4.mp3': 
    Duration: 00:00:00.21, start: 0.000000, bitrate: 143 kb/s 
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s 
Output #0, mp3, to '/storage/emulated/0/beatmachine/esplode/8.mp3': 
    Metadata: 
    TSSE   : Lavf57.25.100 
    Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default) 
    Metadata: 
     encoder   : Lavc57.24.102 libmp3lame 
Stream mapping: 
    Stream #0:0 (mp3) -> amix:input0 
    Stream #1:0 (mp3) -> amix:input1 
    amix -> Stream #0:0 (libmp3lame) 
Press [q] to stop, [?] for help 
size=  7kB time=00:00:00.73 bitrate= 79.6kbits/s speed=1.45x  
size=  13kB time=00:00:01.33 bitrate= 77.0kbits/s speed=1.76x  
video:0kB audio:12kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.010969% 

そして、これは私がにFFmpegに渡しているパラメータです:

[-i, input1, -i, input2, -filter_complex, amix=inputs=2:duration=longest[aout], -map, [aout], -ac, 2, -c:a, libmp3lame, -q:a, 9, outputmp3] 

は何ですか一方は失敗し、もう一方は失敗するように、2つのファイルのペアでは違いますか?

+0

1.動作しないコマンドから完全なコンソール出力/ログを提供します。 2.機能しない2つの入力を提供する。 3. git masterブランチから 'ffmpeg'の最新バージョンを試してください。 – LordNeckbeard

答えて

0

私は最終的に何が起こっているかを発見しました。最初の入力が2番目の入力よりも短い場合はout of memoryというエラーが出力され、ffmpegコマンドでもduration=longestが指定されていても、最初の入力が終了するとmp3ファイルが切り捨てられます。 私の場合の解決策は、最も長い入力を計算し、最初に設定することでした。私はこれが私が使用しているffmpegバージョンのバグだとも思っています。新しいバージョンで修正されたことを願っています。

関連する問題