1

Попытка вырезать фрагмент из видео MKV, но получаю ошибку.

В чем может быть причина?

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

1 ответ1

2

Пожалуйста, загрузите последнюю версию FFmpeg. Тому, что вы используете, уже более трех лет, и я вполне уверен, что он должен работать только с последней сборкой - с тех пор изменилось немало вещей. Для Windows вы можете использовать сборки Zeranoe.

Вы можете просто сделать:

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

Достаточно указать -map 0 чтобы FFmpeg отобразил все потоки из входных данных, включая субтитры. Параметр -c copy скажет, что нужно делать битовый поток для потоков видео, аудио и субтитров. Больше не нужно явно указывать кодек copy для каждого потока.

Если вы хотите отобразить только определенные аудиоканалы и каналы субтитров (например, первый звук и первый поток субтитров), выполнение этого должно работать нормально:

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

Я переместил опцию -t после ввода, так как это не опция ввода и должна быть между -i и именем вашего выходного файла. Если вы хотите, чтобы ваш разрез был более точным, рассмотрите возможность перемещения -ss после -i . Обратитесь к документации для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .