ffmpeg를 사용하여 mkv 비디오 자르기

ffmpeg를 사용하여 mkv 비디오 자르기

나는 ffmpeg에 완전히 빠져 있습니다. 4:33 길이의 mkv를 얻었고 4:20에서 끝을 잘라내고 싶습니다.

나는 다양한 방법을 시도했습니다:

1) 전혀 자르지 않는다

~ > ffmpeg -t 00:04:20 -acodec copy -vcodec copy -i output3.mkv output3-cut.mkv
FFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jun 12 2012 16:27:34, gcc: 4.4.3

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
  Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
    Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4109 fps=3864 q=-1.0 Lsize=   36017kB time=272.48 bitrate=1082.8kbits/s    
video:33503kB audio:2344kB global headers:0kB muxing overhead 0.477241%

2) 4m15s 4m05s 4m를 지정하고 4m 이후에 다른 초를 지정하면 결과 파일 크기는 4:25로 줄어듭니다. 3m50s 또는 30m를 지정하면 초 값에 관계없이 3:25로 자릅니다.어떤 가치에스

~ > ffmpeg -t 4m20s -acodec copy -vcodec copy -i output3.mkv oFFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jun 12 2012 16:27:34, gcc: 4.4.3

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
  Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
    Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4001 fps=3570 q=-1.0 Lsize=   35240kB time=266.71 bitrate=1082.4kbits/s    
video:32781kB audio:2292kB global headers:0kB muxing overhead 0.475784%
utput3-cut.mkv

3) 힘들고 오랜 시간 동안 작업하여 정확히 4:20으로 잘라냈지만 파일 크기를 35Mb에서 113Mb로 변경하여 거대한 파일을 만듭니다!!!

ffmpeg -i output3.mkv -ss 00:00:00 -t 00:04:20 -sameq output3-cut.mkv

mkv 파일을 자르는 올바른 방법은 무엇입니까?

추신

Mencoder도 시도했지만 오디오 트랙이 손상되었습니다.

답변1

이론적으로는 이것으로 충분합니다:

ffmpeg -i output3.mkv -t 00:04:20 -c:v copy -c:a copy output-cut.mkv

읽기: MKV 비디오를 입력하고, 4분 20초를 인코딩하고, 오디오 및 비디오 비트스트림을 복사하여 출력 파일에 저장합니다.

동기화에 문제가 있는 경우 오디오 및 비디오를 다시 인코딩해 보세요.

ffmpeg -i output3.mkv -t 00:04:20 -c:v libx264 -c:a libfaac output-cut.mkv

물론 로 비디오 품질을 지정 -crf 23하고 해당 매개변수를 변경하여 오디오 품질을 지정할 수 있습니다 -b:a 192k. 읽다FFmpeg 블로그 게시물더 많은 정보를 위해서.


명령에 잘못된 점은 다음과 같습니다.

  • 매우 오래된 버전의 FFmpeg를 사용하고 있습니다. 소스에서 컴파일하거나 홈페이지에서 미리 컴파일된 바이너리를 다운로드하세요. 이렇게 하면 버그가 발생할 가능성이 줄어듭니다.

  • -acodec copy -vcodec copy올 수 없다~ 전에옵션 -i. 이전의 모든 것은 -iFFmpeg에게 입력 비디오를 디코딩하도록 지시합니다. "복사 디코더"가 없습니다. 이는 말이되지 않습니다. 여기서는 옵션의 순서가 중요합니다. -c:a copy그리고 -c:v copy오세요~ 후에입력 옵션과 출력 전.

  • -t 4m20s잘못된 구문입니다. 기간은 초 단위의 숫자이거나 hh:mm:ss[.xxx].

  • -t그 전에도 못 와 -i.

  • -ss 00:00:00관련이 없으며 항상 FFmpeg에 처음부터 시작하도록 지시합니다.

관련 정보