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! ;-)