다중 트림(오디오) ffmpeg 중 버퍼 오류

다중 트림(오디오) ffmpeg 중 버퍼 오류

오디오 파일의 여러 섹션을 자르고 연결하려고 합니다. 여러 번 검색한 결과 이것이 효과가 있는 것 같았습니다.

ffmpeg -i dd.3gpp -filter_complex "[0]atrim=start=00:00:00.060:end=00:00:46.580[a];[0]atrim=start=00:0:50.250:end=00:01:50.670[b];[a][b]concat=n=2:v=0:a=1" output.mp3

그러나 잘린 부분 사이의 간격이 짧을 때만 작동한다는 것을 깨닫는 데는 그리 오랜 시간이 걸리지 않았습니다. 두 번째로 잘린 섹션의 타임스탬프를 다음과 같이 변경합니다.

ffmpeg -i dd.3gpp -filter_complex "[0]atrim=start=00:00:00.060:end=00:00:46.580[a];[0]atrim=start=00:03:23.250:end=00:06:50.670[b];[a][b]concat=n=2:v=0:a=1" output.mp3

계속해서 이 오류가 발생합니다.

[out_0_0 @ 000001df0a98d6c0] 100개의 버퍼가 out_0_0에 대기 중입니다. 뭔가 잘못되었을 수 있습니다. [out_0_0 @ 000001df0a98d6c0] 1000개의 버퍼가 out_0_0에 대기 중입니다. 뭔가 잘못되었을 수 있습니다.

보고서

ffmpeg version git-2019-12-12-f58bda6 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20191125
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 36.101 / 56. 36.101
  libavcodec     58. 65.100 / 58. 65.100
  libavformat    58. 35.101 / 58. 35.101
  libavdevice    58.  9.101 / 58.  9.101
  libavfilter     7. 68.100 /  7. 68.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'dd.3gpp':
  Metadata:
    major_brand     : 3gp4
    minor_version   : 0
    compatible_brands: isom3gp4
    creation_time   : 2019-12-14T18:42:01.000000Z
    com.android.version: 7.0
  Duration: 00:08:46.06, start: 0.000000, bitrate: 129 kb/s
    Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2019-12-14T18:42:01.000000Z
      handler_name    : SoundHandle
Stream mapping:
  Stream #0:0 (aac) -> atrim
  Stream #0:0 (aac) -> atrim
  concat -> Stream #0:0 (libmp3lame)
Press [q] to stop, [?] for help
Output #0, mp3, to 'output.mp3':
  Metadata:
    major_brand     : 3gp4
    minor_version   : 0
    compatible_brands: isom3gp4
    com.android.version: 7.0
    TSSE            : Lavf58.35.101
    Stream #0:0: Audio: mp3 (libmp3lame), 48000 Hz, stereo, fltp (default)
    Metadata:
      encoder         : Lavc58.65.100 libmp3lame
size=     170kB time=00:00:10.84 bitrate= 128.5kbits/s speed=21.7x    
size=     256kB time=00:00:19.77 bitrate= 106.0kbits/s speed=19.7x    
size=     256kB time=00:00:28.17 bitrate=  74.4kbits/s speed=18.7x    
size=     512kB time=00:00:39.69 bitrate= 105.7kbits/s speed=19.8x    
[out_0_0 @ 000001df0a98d6c0] 100 buffers queued in out_0_0, something may be wrong.
[out_0_0 @ 000001df0a98d6c0] 1000 buffers queued in out_0_0, something may be wrong.
size=    1280kB time=00:01:33.09 bitrate= 112.6kbits/s speed=22.9x    
size=    1521kB time=00:01:37.27 bitrate= 128.1kbits/s speed=22.9x    
video:0kB audio:1520kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.023446%

뭔가 잘못하고 있는 게 있나요? 모든 제안을 환영합니다.

여기에 이미지 설명을 입력하세요

답변1

그래서 잠시 동안 두 코드를 가지고 놀다가

ffmpeg -i dd.3gpp -filter_complex "[0]atrim=start=00:00:00.060:end=00:00:46.580[a];[0]atrim=start=00:0:50.250:end=00:01:50.670[b];[a][b]concat=n=2:v=0:a=1" output.mp3

ffmpeg -i dd.3gpp -filter_complex "[0]atrim=start=00:00:00.060:end=00:00:46.580[a];[0]atrim=start=00:03:23.250:end=00:06:50.670[b];[a][b]concat=n=2:v=0:a=1" output.mp3

버퍼 오류는 두 트림 사이의 시간 간격이 짧은지 여부와 관련이 없는 것으로 보입니다.

오히려,체재타임스탬프가 문제인 것 같았습니다. S+[.m...]대신에 타임스탬프를 로 변경했습니다 .[HH:]MM:SS[.m...]

ffmpeg -i dd.3gpp -filter_complex "[0]atrim=start=0.060:end=46.580[a];[0]atrim=start=203.250:end=410.670[b];[a][b]concat=n=2:v=0:a=1" output.mp3

오류가 더 이상 표시되지 않습니다. 첫 번째 코드는 모든 타임스탬프가 초 열( 00:00:ss.m..) 내에 속하기 때문에 제대로 작동했습니다. 이 경우 서식이 왜 중요한 역할을 하는지에 대해서는 조금도 짐작할 수 없습니다. 어쩌면 여기 전문가들이 더 잘 설명할 수도 있을 것 같아요.

답변2

문제의 원인은 filter_complex로 인수를 구분하는 데 콜론 ":"이 사용된다는 것입니다. 그러니 탈출해야 합니다.

의 훌륭한 답변https://superuser.com/a/1145796

다음과 같은 문자 이스케이프 솔루션을 제공합니다.

"trim=start='00\:00\:01.23':end='00\:00\:04.56'" "trim=start=00\\\:00\\\:01.23:end=00\\\:00\\\:04.56" trim=start=00\\\\:00\\\\:01.23:end=00\\\\:00\\\\:04.56

재미있게 보내세요!

관련 정보