Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

avconv mp4 to webm libvorbis buffer overflow

Trying to convert a bunch of mp4 files into webm. So I run the following command. I tried a similar command with ffmpeg.

avconv -i input.mp4 -threads 8 -s 1280x720 -pre libvpx-720p -b 3900k -pass 2 -acodec libvorbis -b:a 128k -ac 2 -f webm -y output/webm

Results in:

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.32.0
  Duration: 00:01:02.90, start: 0.000000, bitrate: 1649 kb/s
    Stream #0.0(und): Video: mpeg4 (Simple Profile), yuv420p, 640x480 [PAR 4:3 DAR 16:9], 1492 kb/s, PAR 853:640 DAR 853:480, 23.94 fps, 30 tbr, 30 tbn, 30 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 152 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
[buffer @ 0x1232600] w:640 h:480 pixfmt:yuv420p
[scale @ 0x123c300] w:640 h:480 fmt:yuv420p -> w:1280 h:720 fmt:yuv420p flags:0x4
[libvpx @ 0x1256d60] v1.0.0
Output #0, webm, to 'output.webm':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.21.0
    Stream #0.0(und): Video: libvpx, yuv420p, 1280x720 [PAR 2559:2560 DAR 853:480], q=11-51, pass 2, 3900 kb/s, 1k tbn, 30 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: libvorbis, 44100 Hz, stereo, s16, 152 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg4 -> libvpx)
  Stream #0:1 -> #0:1 (aac -> libvorbis)
Press ctrl-c to stop encoding
[libvorbis @ 0x1221240] libvorbis: buffer overflow.Audio encoding failed

Notice the nice error. buffer overflow in libvorbis.

Any assistance? An Alternative conversion command?

UPDATE

The first pass looks like this:

 avconv -i input.mp4 -threads 8 -s 1280x720 -pre libvpx-720p -b 3900k -pass 1 -an -f webm -y output.webm

Thanks!

like image 953
Halsafar Avatar asked Dec 28 '22 00:12

Halsafar


1 Answers

Turns out it was an issue with -pre vs -preset in avconv. This whole ffmpeg fork to avconv has broken the community for everyone except the developers. Now googling for useful information on either tool is useless.

For those who end up here on a similar issue this is how I converted my mp4 to webm.

avconv -i "$inputFile" -threads 8 -s 1280x720 -preset libvpx-720p -b 3900k -pass 1 -an -f webm -y "$outputFile"
avconv -i "$inputFile" -threads 8 -preset libvpx-720p -pass 2 -b 3900k -acodec libvorbis -ar 44100 -ac 2 -ab 128k -f webm -y "$outputFile"

This is for 720P mp4 to 720P WEBM. You can easily adjust to 1080P, the preset exists.

like image 167
Halsafar Avatar answered Jan 04 '23 16:01

Halsafar