Avconv silently ignores (incorrect) -preset option

14. kesäkuuta 2013 klo 19.07
Sijainti: Vianhallintajärjestelmät: Launchpad

Apparently avconv silently ignores a ”-preset” option passed to it on the command-line. The correct option for passing a preset file is -pre, but -preset behaves differently from other incorrect options, as no error message is output and the avconv command is executed if otherwise valid. Not erroring out on erroneous usage is confusing, particularly with presets, as the output also does not specifically say when a preset *is* being applied (you have to deduce it from the data). Unless -preset is currently being used as a placeholder in the source, I suggest it be made to error out as other incorrect options do.

I’m pasting output from five demonstration runs below. 1) is an example of correct usage of -pre, 2) of correct usage of -pre with non-existing preset, 3) of trying to use a non-existing option -asdf, and 4) of using -preset in place of -pre, one run with an existing and one with a non-existing preset name.

1) Correct usage of -pre, as indicated by ”q=0-63” (which gets read from /usr/share/avconv/libvpx-360p.avpreset):

jani@saegusa:avconv-preset-test$ avconv -y -i input.mpeg -c:v libvpx -pre libvpx-360p -an -t 1 out.webm
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
[mpeg @ 0x1bae9c0] max_analyze_duration reached
Input #0, mpeg, from ’input.mpeg’:
Duration: 01:43:01.65, start: 0.184656, bitrate: 2632 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720×576 [PAR 16:15 DAR 4:3], 1844 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 224 kb/s
[buffer @ 0x1bb0060] w:720 h:576 pixfmt:yuv420p
[libvpx @ 0x1baf380] v1.0.0
Output #0, webm, to ’out.webm’:
Metadata:
encoder : Lavf53.21.1
Stream #0.0: Video: libvpx, yuv420p, 720×576 [PAR 16:15 DAR 4:3], q=0-63, 768 kb/s, 1k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> libvpx)
Press ctrl-c to stop encoding
frame= 25 fps= 13 q=0.0 Lsize= 95kB time=1.00 bitrate= 778.2kbits/s
video:94kB audio:0kB global headers:0kB muxing overhead 0.681033%

2) Correct usage of -pre with non-existing preset, as indicated by ”could not be opened” error message:

jani@saegusa:avconv-preset-test$ avconv -y -i input.mpeg -c:v libvpx -pre xlibvpx-360p -an -t 1 out.webm
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
[mpeg @ 0x8f99c0] max_analyze_duration reached
Input #0, mpeg, from ’input.mpeg’:
Duration: 01:43:01.65, start: 0.184656, bitrate: 2632 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720×576 [PAR 16:15 DAR 4:3], 1844 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 224 kb/s
Preset xlibvpx-360p specified for stream 0:0, but could not be opened.

3) Trying to use non-existing option -asdf, as indicated by ”Unrecognized option” error message:

jani@saegusa:avconv-preset-test$ avconv -y -i input.mpeg -c:v libvpx -asdf libvpx-360p -an -t 1 out.webm
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
[mpeg @ 0x6829c0] max_analyze_duration reached
Input #0, mpeg, from ’input.mpeg’:
Duration: 01:43:01.65, start: 0.184656, bitrate: 2632 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720×576 [PAR 16:15 DAR 4:3], 1844 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 224 kb/s
Unrecognized option ’asdf’
Failed to set value ’libvpx-360p’ for option ’asdf’

4) Now, using -preset instead of -pre, regardless of validity of the parameter passed to it, the preset specified is not loaded, as indicated by ”q=-1–1”, but no ”Unrecognized option” error occurs:

jani@saegusa:avconv-preset-test$ avconv -y -i input.mpeg -c:v libvpx -preset libvpx-360p -an -t 1 out.webm
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
[mpeg @ 0xbe69c0] max_analyze_duration reached
Input #0, mpeg, from ’input.mpeg’:
Duration: 01:43:01.65, start: 0.184656, bitrate: 2632 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720×576 [PAR 16:15 DAR 4:3], 1844 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 224 kb/s
[buffer @ 0xbeef60] w:720 h:576 pixfmt:yuv420p
[libvpx @ 0xbe7380] v1.0.0
Output #0, webm, to ’out.webm’:
Metadata:
encoder : Lavf53.21.1
Stream #0.0: Video: libvpx, yuv420p, 720×576 [PAR 16:15 DAR 4:3], q=-1–1, 200 kb/s, 1k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> libvpx)
Press ctrl-c to stop encoding
frame= 25 fps= 17 q=0.0 Lsize= 25kB time=1.00 bitrate= 208.2kbits/s
video:25kB audio:0kB global headers:0kB muxing overhead 2.589469%

jani@saegusa:avconv-preset-test$ avconv -y -i input.mpeg -c:v libvpx -preset xlibvpx-360p -an -t 1 out.webm
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
[mpeg @ 0x163a9c0] max_analyze_duration reached
Input #0, mpeg, from ’input.mpeg’:
Duration: 01:43:01.65, start: 0.184656, bitrate: 2632 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720×576 [PAR 16:15 DAR 4:3], 1844 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 224 kb/s
[buffer @ 0x1642f60] w:720 h:576 pixfmt:yuv420p
[libvpx @ 0x163b380] v1.0.0
Output #0, webm, to ’out.webm’:
Metadata:
encoder : Lavf53.21.1
Stream #0.0: Video: libvpx, yuv420p, 720×576 [PAR 16:15 DAR 4:3], q=-1–1, 200 kb/s, 1k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> libvpx)
Press ctrl-c to stop encoding
frame= 25 fps= 17 q=0.0 Lsize= 25kB time=1.00 bitrate= 208.2kbits/s
video:25kB audio:0kB global headers:0kB muxing overhead 2.589469%

Vastaa viestiin sen kontekstissa (Launchpad)