O número de mapas de fluxo deve corresponder ao número de fluxos de saída que executam o ffmpeg

1

Tentando recortar um fragmento do vídeo MKV, mas recebendo um erro.

O que pode ser um motivo?

V:\VIDEO>ffmpeg -ss 00:42:35 -t 00:43:05 -i smenia.mkv -map 0:0 -map 0:1 -vcodec copy -acodec copy clientalwaysright.mkv
FFmpeg version SVN-r21566-xuggle-3.4.843, Copyright (c) 2000-2010 Fabrice Bellard, et al.
  built on Jan 31 2010 09:45:05 with gcc 4.2.4 (TDM-1 for MinGW)
  configuration: --prefix=/usr/local --extra-version=xuggle-3.4.843 --extra-cflags=-I/c/hudson/slave/workspace/xuggle_xu
bel/WindowsXP_i386/build/native/i686-pc-mingw32/captive/usr/local/include --extra-ldflags=-L/c/hudson/slave/workspace/xu
JDK5/label/WindowsXP_i386/build/native/i686-pc-mingw32/captive/usr/local/lib --enable-shared --enable-gpl --enable-nonfr
libx264 --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libfaac --enable-libopencor
mrwb --extra-cflags=-mno-cygwin --extra-cflags=-fno-common --extra-ldflags=-mno-cygwin --extra-ldflags=--out-implib --en
ign-hack
  libavutil     50. 8. 0 / 50. 8. 0
  libavcodec    52.49. 0 / 52.49. 0
  libavformat   52.48. 0 / 52.48. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0. 9. 0 /  0. 9. 0
[matroska @ 0x1f17270]max_analyze_duration reached
[matroska @ 0x1f17270]Estimating duration from bitrate, this may be inaccurate

Seems stream 0 codec frame rate differs from container frame rate: 47.95 (66893/1395) -> 23.98 (24000/1001)
Input #0, matroska, from 'smenia.mkv':
  Duration: 01:52:36.41, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: h264, yuv420p, 1280x544, PAR 1:1 DAR 40:17, 24.39 fps, 23.98 tbr, 1k tbn, 47.95 tbc
    Stream #0.1(rus): Audio: aac, 48000 Hz, stereo, s16
    Metadata:
      description     : rus MVO
    Stream #0.2(rus): Audio: aac, 48000 Hz, stereo, s16
    Metadata:
      description     : rus OVO
    Stream #0.3(eng): Audio: aac, 48000 Hz, stereo, s16
    Stream #0.4(rus): Subtitle: 0x0000
    Stream #0.5(eng): Subtitle: 0x0000
File 'clientalwaysright.mkv' already exists. Overwrite ? [y/N] y
Number of stream maps must match number of output streams
    
por Suzan Cioc 20.03.2013 / 21:58

1 resposta

2

Por favor, baixe uma versão recente do FFmpeg . O que você está usando tem mais de três anos, e eu tenho certeza que deve funcionar apenas com uma versão recente - algumas coisas foram alteradas desde então. No Windows, você pode usar as compilações do Zeranoe .

Você pode simplesmente fazer:

ffmpeg -ss 00:42:35 -i smenia.mkv -map 0 -c copy -t 00:43:05 clientalwaysright.mkv

Basta especificar -map 0 para informar ao FFmpeg para mapear todos os fluxos da entrada, incluindo as legendas. A opção -c copy dirá para fazer uma cópia de bitstream para fluxos de vídeo, áudio e legendas. Não é necessário especificar explicitamente o codec copy para cada fluxo mais.

Se você deseja apenas mapear canais de áudio e legendas específicos (por exemplo, primeiro áudio e primeiro fluxo de legendas), isso deve funcionar bem:

ffmpeg -ss 00:42:35 -i smenia.mkv -map 0:v -map 0:a:0 -map 0:s:0 -c copy -t 00:43:05 clientalwaysright.mkv

Mudei a opção -t após a entrada, já que ela não é uma opção de entrada e deve estar entre -i e seu nome de arquivo de saída. Se você quiser que seu corte seja mais preciso, considere mover -ss após -i . Consulte a documentação para saber mais.

    
por 20.03.2013 / 22:08

Tags