FFmpeg gstreamer plugin on Ubuntu 14.04
EDIT 02.25.2015: It seems to be missing even in Ubuntu 14.10. But probably the quickest way to install is:
sudo add-apt-repository ppa:mc3man/gstffmpeg-keep sudo apt-get update sudo apt-get install gstreamer0.10-ffmpeg
I was trying to develop an application that uses gstreamer 0.10 on Ubuntu 14.04 and I noticed this runtime error message:
"No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)main, codec_data=(buffer)014d401effe10015274d401ea9181b07bcde00d4040406db0ad7bdf01001000428de09c8, width=(int)854, height=(int)480, framerate=(fraction)24/1, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true'."
This is because it seems that the gstreamer 0.10 ffmpeg plugin is missing in 14.04. This also makes my Qt code fail it seems, as it uses 0.10 for the Qt Multimedia module. It used to be sufficient to install ubuntu-restricted-extras until 13.10, but it seems something has changed in 14.04. I really couldn’t find that plugin anywhere soI simply built that from the sources here. Luckily it also contains the ffmpeg sources and builds those statically it seems.
Download the package, extract and:
./configure make make install
You’ll probably need to install the usual build-essentials, gstreamer0.10, libgstreamer0.10, libgstreamer-plugins-base0.10-dev etc… It may fail with an error on a macro like this:
./libavcodec/get_bits.h: In function 'skip_bits': ./libavcodec/get_bits.h:387:1: warning: variable 're_cache' set but not used [-Wunused-but-set-variable] libavcodec/x86/h264_qpel_mmx.c: Assembler messages: libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' make[1]: *** [libavcodec/x86/dsputil_mmx.o] Error 1
If that happens just apply the patch here. Place the plugin libgstffmpeg.so into /usr/lib/x86_64-linux-gnu/gstreamer-0.10, or wherever you have your gstreamer plugins and you’re done. Bye! 😉
Worked for me in 16.04.1! Thanks.
Is your Qt built with gstreamer 1.0 maybe?
Hello,
Do I have to reinstall QT5 in order to get rid of the error, because I have manually install gst-ffmpeg-0.10 and keep getting the error:
Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, codec_data=(buffer)0164001effe1001d6764001eacd940b435f9fff00fe00ff100000303e90000bb800f162d9601000568eae13cb0, width=(int)720, height=(int)404, framerate=(fraction)24000/1001, pixel-aspect-ratio=(fraction)254/255, parsed=(boolean)true'."
Thanks for help.
Thank you for these instructions! I couldn't get gstreamer 0.10 to play anything without compiling this plugin in Ubuntu 14.10.
It is actually still missing in 14.10 it seems…
They probably fixed that then. Good to know. Thanks for pointing that out!
According to
http://smashingweb.info/things-to-do-after-installing-ubuntu-14-04-lts-for-perfect-desktop/
running
sudo apt-get install ubuntu-restricted-extras
should do the trick (and it worked for me).
Cheers!