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
END EDIT
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! ;-)
According to
ReplyDeletehttp://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!
They probably fixed that then. Good to know. Thanks for pointing that out!
DeleteIt is actually still missing in 14.10 it seems...
DeleteWorked for me in 16.04.1! Thanks.
DeleteThank you for these instructions! I couldn't get gstreamer 0.10 to play anything without compiling this plugin in Ubuntu 14.10.
ReplyDeleteHello,
ReplyDeleteDo 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.
Is your Qt built with gstreamer 1.0 maybe?
Delete