Вопрос: Извлечение субклипа из файла .webm с помощью ffmpeg


Я пытаюсь извлечь субклип из webm файл и написать mp4 фил. У меня есть следующая команда:

ffmpeg -ss 560 -i input.webm -ss 20 -t 46 -acodec copy -vcodec copy output.mp4

но я получаю следующую ошибку:

ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 22 2013 10:42:11 with gcc 4.7.2 (GCC)
  configuration: --prefix=/path/to/installations --enable-shared --enable-gpl --en
able-nonfree --enable-version3 --enable-libx264                           
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, matroska,webm, from '/path/to/input.webm':                                          
  Duration: 01:13:20.32, start: 0.000000, bitrate: 2006 kb/s
    Stream #0:0(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fp,
 30 tbr, 1k tbn, 1k tbc (default)                                         
    Stream #0:1(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
[mp4 @ 0x1493c340] track 0: could not find tag, codec not currently support
ed in container                                                           
Output #0, mp4, to '/path/to/output.mp4':                         
  Metadata:
    encoder         : Lavf54.63.104
    Stream #0:0(eng): Video: vp8, yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-3
1, 30 fps, 90k tbn, 1k tbc (default)                                      
    Stream #0:1(eng): Audio: vorbis ([221][0][0][0] / 0x00DD), 44100 Hz, st
ereo (default)                                                            
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): O
peration not permitted                                                    

Странная вещь заключается в том, что следующее хорошо работает для извлечения файлов из mp4 в mp4

ffmpeg -ss 560 -i input.mp4 -ss 20 -t 46 -acodec copy -vcodec copy output.mp4

2
2018-06-18 22:38


Источник




Ответы:


... codec not currently supported in container

Контейнер MP4 не будет принимать видеосигналы VP8 и аудиопотоки Vorbis (-acodec copy -vcodec copy). Чтобы проверить это, измените имя выходного файла на output.mkv или output.webm и работа будет работать. Если выходной контейнер должен быть MP4, вам нужно будет перекодировать в какой-то момент.


6
2018-06-18 22:59



Благодаря! Я думал, что ffmpeg автоматически перекодирует его, если потребуется. Нужно ли мне загружать / строить конкретный кодек для этого? Где я могу это найти? - Amelio Vazquez-Reina
Это будем transcode, основанный просто на имени файла вывода (хотя вам может понадобиться больше контроля, чем это). Здесь аргументы -acodec copy -vcodec copy сказать ffmpeg не перекодировать видео и аудиопотоки (чтобы скопировать их как есть), поэтому все, что он пытается сделать, это перевести их в контейнер MP4, что не удается. Удалите эти аргументы, и вы получите результат ближе к тому, что вы ожидаете. - Lou Quillio