3

Я использую следующую команду, но она дает неправильный вывод.

ffmpeg -i video.webm -i audio.opus -c:v copy -c:a aac -strict experimental output.mp4

Выход:

ffmpeg version 1.2.6-7:1.2.6-1~trusty1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 26 2014 18:52:58 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --arch=amd64 --disable-stripping --enable-avresample --enable-pthreads --enable-runtime-cpudetect --extra-version='7:1.2.6-1~trusty1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    53.  5.103 / 53.  5.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 'video.webm':
  Duration: 00:00:04.92, start: 0.000000, bitrate: 243 kb/s
    Stream #0:0: Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 18 fps, 18 tbr, 1k tbn, 1k tbc (default)
Input #1, ogg, from 'audio.opus':
  Duration: 00:00:05.16, start: 0.000000, bitrate: 32 kb/s
    Stream #1:0: Audio: opus, 48000 Hz, stereo, s16
[mp4 @ 0x647940] track 0: could not find tag, codec not currently supported in container
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf54.63.104
    Stream #0:0: Video: vp8, yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 18 fps, 90k tbn, 1k tbc (default)
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (libopus -> aac)
Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

3 ответа3

11

Контейнеры WebM обычно содержат видео VP8 или VP9. Контейнерный формат MP4, однако, не поддерживает видео VP8 или VP9, по крайней мере, согласно органу регистрации.

В вашей команде вы пытаетесь скопировать битовый поток видео, и, очевидно, он потерпит неудачу:

кодек в настоящее время не поддерживается в контейнере

У вас есть два варианта:

  1. Перекодируйте видео в H.264, используя -c:v libx264 .
  2. Выберите другой выходной контейнер, например Matroska (.mkv), но учтите, что он не будет совместим с HTML5-видео.

См. Также эту ссылку на MDN о поддерживаемых видеоформатах HTML и этот пост супер-пользователя о том, как конвертировать видео для HTML5: Какая группа скриптов ffmpeg мне нужна, чтобы получить HTML5-совместимое "Видео для всех"?

2
ffmpeg -i video.webm -i audio.opus -c:v copy -c:a aac -strict experimental output.mp4

это должно выглядеть примерно так.

ffmpeg -i audio.opus -i vid.webm  -c:v copy -c:a opus -strict experimental output6.webm

замените aac на opus, а два файла с opus будут впереди (я думаю), это должно сработать.

0

Простая команда с опцией копирования с преобразованием из webm в mp4 не работает из-за разницы в кодеке, которую мы не затрагиваем во время преобразования. Это все равно, что просто изменить расширение входного файла. Чтобы убедиться, что выход воспроизводится в проигрывателях / телевизорах H.264, используйте

ffmpeg -y -i "input_video.webm" -i "input_audio.webm" "output_file.mp4"  -c:v libx264 -c:a aac

Обратите внимание, что выполнение будет очень медленным и добавьте -preset veryfast зависимости от ваших потребностей в качестве. Ссылка: https://addpipe.com/blog/converting-webm-to-mp4-with-ffmpeg/

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