Usando o ffmpeg para cortar o vídeo mkv

3

Estou completamente perdido com o ffmpeg Eu tenho um mkv de 4:33 duração e gostaria de cortar o final de 4:20

Eu tentei maneiras diferentes:

1) Não corta nada

~ > 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) Corta para 4:25 se eu especificar 4m15s 4m05s 4m e outros segundos após 4m, com o mesmo tamanho de arquivo resultante. Corta para 3:25, independentemente do valor de segundos, se eu especificar 3m50s ou 30m algum valor s

~ > 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) Trabalha muito e muito tempo e corta exatamente para 4:20, mas faz um arquivo enorme, alterando o tamanho do arquivo de 35Mb para 113Mb !!!

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

Qual é o caminho certo para cortar um arquivo mkv?

ps

Eu também tentei o mencoder, mas ele danifica uma faixa de áudio

    
por zuba 21.09.2012 / 00:03

1 resposta

6

Em teoria, isso é suficiente:

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

Leia como: Insira o vídeo MKV, codifique 4:20 minutos, copie o fluxo de bits de áudio e vídeo e salve-os no arquivo de saída.

Se você tiver problemas com a sincronização, tente recodificar o áudio e o vídeo:

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

Claro, você pode especificar a qualidade do vídeo com -crf 23 e a qualidade do áudio com -b:a 192k , variando esses parâmetros. Leia nossa postagem no blog do FFmpeg para saber mais info.

Veja o que havia de errado com seus comandos:

  • Você está usando uma versão terrivelmente desatualizada do FFmpeg. Por favor, compile-o a partir da fonte ou baixe um binário pré-compilado a partir da página inicial. Isso reduzirá a possibilidade de encontrar erros.

  • -acodec copy -vcodec copy não pode vir antes da opção -i . Qualquer coisa antes de -i diz ao FFmpeg para decodificar o vídeo de entrada. Não há "decodificador de cópia" - isso não faz sentido. A ordem das opções é importante aqui. -c:a copy e -c:v copy vem depois da opção de entrada e antes da saída.

  • -t 4m20s é a sintaxe errada: a duração pode ser um número em segundos ou em hh:mm:ss[.xxx] .

  • -t também não pode vir antes de -i .

  • -ss 00:00:00 é irrelevante, apenas diria ao FFmpeg para iniciar desde o início, o que sempre acontece.

por 21.09.2012 / 00:52