I just compiled and installed ffmpeg-4.0 on my Kubunut 17.10 laptop, and and I'm getting an error when trying to do conversions using the opus components. It appears that opus is not enabled, and I get this error: [opus @ 0x55b30ae65fc0] The encoder 'opus' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it. I added -strict -2 to the command: ffmpeg -strict -2 -y -i 40.mp4 40.opus, but this doesn't seem to help.

I saw various people say that opus is included by default now, and others said that I needed to enable --enable-libopus during compilation. Every time I try to do this, it never seems to work though. I tried ./configure --enable-libopus and make --enable-libopus, but the subroutines just acted with confusion.

Full output:

ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu 7.2.0-8ubuntu3.2) configuration: libavutil 56. 14.100 / 56. 14.100 libavcodec 58. 18.100 / 58. 18.100 libavformat 58. 12.100 / 58. 12.100 libavdevice 58. 3.100 / 58. 3.100 libavfilter 7. 16.100 / 7. 16.100 libswscale 5. 1.100 / 5. 1.100 libswresample 3. 1.100 / 3. 1.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '40.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2014-02-10T22:28:37.000000Z Duration: 00:01:56.77, start: 0.000000, bitrate: 310 kb/s Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x360 [SAR 1:1 DAR 4:3], 211 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default) Metadata: creation_time : 2014-02-10T22:28:37.000000Z handler_name : IsoMedia File Produced by Google, 5-11-2011 Stream mapping: Stream #0:1 -> #0:0 (aac (native) -> opus (native)) Press [q] to stop, [?] for help [opus @ 0x55dbad5801c0] The encoder 'opus' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it. Average Intensity Stereo band: 0.0 Dual Stereo used: -nan% Conversion failed!


Since you're trying to enable an experimental encoder, the compliance level has to be set on the output.

ffmpeg -y -i 40.mp4 -strict -2 40.opus
  • So this needs to be done every time? There isn't a way to enable this permanently? It worked BTW thanks! – Sarah Szabo Apr 21 '18 at 19:51

FFmpeg supports two Opus encoders:

  • The experimental built-in encoder named opus,
  • and libopus which depends on an external library and requires your ffmpeg to be built with --enable-libopus.

The native encoder opus is currently considered to be experimental, so it requires the output option -strict experimental (or the alias -strict -2).

libopus is very good encoder. Consider using it instead due to the current experimental status of opus, unless of course opus sounds good enough for your needs. (Disclaimer: I haven't tried opus yet. Writing this in a noisy environment so I can't do a listening test...)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.