Como combinar WebM e Opus para gerar MP4?

3

Estou usando o seguinte comando, mas ele está dando saída errada.

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

Saída:

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
    
por Anuj 04.02.2015 / 10:54

2 respostas

11

Os contêineres do WebM geralmente contêm vídeo VP8 ou VP9. O formato do contêiner MP4, no entanto, não suporta vídeo VP8 ou VP9, pelo menos de acordo com a autoridade de registro .

Em seu comando, você está tentando copiar o fluxo de bits do vídeo e, obviamente, ele falhará:

codec not currently supported in container

Você tem duas opções:

  1. Codifique novamente o vídeo para H.264 usando -c:v libx264 .
  2. Escolha outro contêiner de saída, como Matroska ( .mkv ), mas observe que isso não será compatível com vídeo em HTML5.

Veja também esta referência do MDN em formatos de vídeo HTML compatíveis e esta postagem de superusuário sobre como converter vídeo para HTML5: Que bando de scripts ffmpeg eu preciso para obter o" Video for everyone "compatível com HTML5?

    
por 04.02.2015 / 11:02
2
ffmpeg -i video.webm -i audio.opus -c:v copy -c:a aac -strict experimental output.mp4

deve ser algo como isto.

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

substitua aac por opus e os dois arquivos com o opus na frente (acho), deve funcionar.

    
por 27.02.2015 / 05:08

Tags