How can I convert my mp4 files to avi using avconv?

I need to convert some mp4 files to another format (I chose avi: there may be a better one, suggestions welcome). I tried using ffmpeg but got the deprecated message so I am using avconv, but again there may be a better tool.

Here's what I'm using: avconv -i e2.mp4 -vtag libxvid -b:v 1500k e2.avi

This gives me the following output:

avconv version 0.8.9-6:0.8.9-0ubuntu0.13.10.1, Copyright (c) 2000-2013 the Libav developers
  built on Nov  9 2013 19:09:46 with gcc 4.8.1
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c677a0] multiple edit list entries, a/v desync might occur, patch welcome
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'e2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf53.21.1
    media_type      : 10
    copyright       : � 2014 British Broadcasting Corporation, all rights reserved
    title           : Episode 2
    artist          : BBC Four
    album_artist    : BBC TV
    album           : The Bridge: Series 2
    composer        : BBC iPlayer
    genre           : Drama
    comment         : Online, four individuals in masks use signs to claim responsibility for the plague.
    date            : 2014-01-04T22:00:00Z
    track           : 2
    disc            : 2
    description     : Online, four individuals in masks use signs to claim responsibility for the plague.
    show            : The Bridge: Series 2
    episode_id      : s02e02
    season_number   : 2
    episode_sort    : 2
    network         : BBC Four
  Duration: 00:57:38.16, start: 0.000000, bitrate: 2399 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 2298 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 93 kb/s
[buffer @ 0x1c69260] w:1280 h:720 pixfmt:yuv420p
Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
[ac3 @ 0x1c2a160] invalid bit rate
Output #0, avi, to 'e2.avi':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf53.21.1
    media_type      : 10
    copyright       : � 2014 British Broadcasting Corporation, all rights reserved
    title           : Episode 2
    artist          : BBC Four
    album_artist    : BBC TV
    album           : The Bridge: Series 2
    composer        : BBC iPlayer
    genre           : Drama
    comment         : Online, four individuals in masks use signs to claim responsibility for the plague.
    date            : 2014-01-04T22:00:00Z
    track           : 2
    disc            : 2
    description     : Online, four individuals in masks use signs to claim responsibility for the plague.
    show            : The Bridge: Series 2
    episode_id      : s02e02
    season_number   : 2
    episode_sort    : 2
    network         : BBC Four
    Stream #0.0(und): Video: mpeg4, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=2-31, 1500 kb/s, 90k tbn, 25 tbc
    Stream #0.1(und): Audio: ac3, 48000 Hz, stereo, flt, 200 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mpeg4)
  Stream #0:1 -> #0:1 (aac -> ac3)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height

I also get a e2.avi file which is empty. I have not used avconv before - what would be the correct way to do this? I can post more details if needed.

Thanks in advance!


Solution 1:

Since AVI is only a container to hold your data the fastest way to convert your video is to just copy the already encoded audio and video stream. This is not done by default. To force copy streams we may use the option -c as follows:

avconv -i infile.mp4 -c:a copy -c:v copy outfile.avi

Of course only a video encoding supported by the AVI container can be copied this way.

To re-encode the output video we can replace copy by any of supported codecs as listed with an E from

avconv -codecs