# gnash cannot find gstreamer-ffmpeg



## vatson (Jul 3, 2013)

I recently did a thorough upgrade of ports on an 8-STABLE machine that hadn't been touched a couple of years. It had gnash 0.8.8 installed before the upgrade, and YouTube worked fine. Now with gnash 0.8.10, attempting to play any video on YouTube results in these errors:


```
Couldn't find a plugin for video type video/x-h264! Please make sure you have gstreamer-ffmpeg installed

MediaHandlerGst::createAudioDecoder: Couldn't find a plugin for audio type audio/mpeg!--
MediaHandler::createFlashAudioDecoder: no available flash decoders for codec 10 (Advanced Audio Coding)
```

I do have gstreamer-ffmpeg installed. I configured the gnash port to use gstreamer (same as before the update). I compared the list of installed gstreamer* ports with the list from before the update, and they are the same (except of course most of them are newer versions):


```
# pkg_info | grep gstream | awk '{print $1}'
gstreamer-0.10.36
gstreamer-ffmpeg-0.10.13
gstreamer-plugins-0.10.36_3,3
gstreamer-plugins-a52dec-0.10.19,3
gstreamer-plugins-bad-0.10.23,3
gstreamer-plugins-core-0.10_13
gstreamer-plugins-dts-0.10.23,3
gstreamer-plugins-dvd-0.10.19,3
gstreamer-plugins-good-0.10.31,3
gstreamer-plugins-libpng-0.10.31,3
gstreamer-plugins-mad-0.10.19,3
gstreamer-plugins-mp3-0.10.0_1
gstreamer-plugins-ogg-0.10.36,3
gstreamer-plugins-pango-0.10.36_1,3
gstreamer-plugins-theora-0.10.36,3
gstreamer-plugins-ugly-0.10.19,3
gstreamer-plugins-vorbis-0.10.36,3
gstreamer-plugins-xvid-0.10.23,3
phonon-gstreamer-4.6.3
```

Clearing all cookies in Firefox, as well as blocking cookies from youtube.com, didn't help. Can anyone tell what I am missing? I am aware that YouTube has an option to use HTML5 instead of Flash, but I'm just curious what I did wrong.


----------



## vatson (Jul 5, 2013)

I may be barking up the wrong tree here, but I did notice something interesting. The gstreamer-ffmpeg port installed its shared libraries into directory /usr/local/lib/gstreamer-0.10:


```
> pkg_info -L gstreamer-ffmpeg-0.10.13
Information for gstreamer-ffmpeg-0.10.13:

Files:
/usr/local/share/licenses/gstreamer-ffmpeg-0.10.13/catalog.mk
/usr/local/share/licenses/gstreamer-ffmpeg-0.10.13/LICENSE
/usr/local/share/licenses/gstreamer-ffmpeg-0.10.13/GPLv2
/usr/local/lib/gstreamer-0.10/libgstffmpeg.la
/usr/local/lib/gstreamer-0.10/libgstffmpeg.so
/usr/local/lib/gstreamer-0.10/libgstffmpegscale.la
/usr/local/lib/gstreamer-0.10/libgstffmpegscale.so
/usr/local/lib/gstreamer-0.10/libgstpostproc.la
/usr/local/lib/gstreamer-0.10/libgstpostproc.so
```

However, the directory /usr/local/lib/gstreamer-0.10 doesn't seem to be included in the output of `ldconfig -r`. The really strange thing is that even after running `ldconfig -m /usr/local/lib/gstreamer-0.10` the shared libraries listed above (or any other libraries in /usr/local/lib/gstreamer-0.10) are still not included in the output of `ldconfig -r`.

The library itself seems to be OK:


```
> file /usr/local/lib/gstreamer-0.10/libgstffmpeg.so
/usr/local/lib/gstreamer-0.10/libgstffmpeg.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (FreeBSD), dynamically linked, not stripped
> ldd /usr/local/lib/gstreamer-0.10/libgstffmpeg.so
/usr/local/lib/gstreamer-0.10/libgstffmpeg.so:
        libgstaudio-0.10.so.0 => /usr/local/lib/libgstaudio-0.10.so.0 (0x2819b000)
        libgstinterfaces-0.10.so.0 => /usr/local/lib/libgstinterfaces-0.10.so.0 (0x281d3000)
        libgstbase-0.10.so.0 => /usr/local/lib/libgstbase-0.10.so.0 (0x28e76000)
        libgstpbutils-0.10.so.0 => /usr/local/lib/libgstpbutils-0.10.so.0 (0x281e1000)
        libgstreamer-0.10.so.0 => /usr/local/lib/libgstreamer-0.10.so.0 (0x28ece000)
        libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x28f9f000)
        libffi.so.6 => /usr/local/lib/libffi.so.6 (0x28fe0000)
        libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x28fe6000)
        libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x28fea000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x28fec000)
        libintl.so.9 => /usr/local/lib/libintl.so.9 (0x290ca000)
        libpcre.so.3 => /usr/local/lib/libpcre.so.3 (0x290d3000)
        libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x29138000)
        liblzma.so.5 => /usr/lib/liblzma.so.5 (0x2925d000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x2927f000)
        libm.so.5 => /lib/libm.so.5 (0x29375000)
        libz.so.5 => /lib/libz.so.5 (0x2938e000)
        libbz2.so.4 => /usr/lib/libbz2.so.4 (0x293a0000)
        libthr.so.3 => /lib/libthr.so.3 (0x293b1000)
        libc.so.7 => /lib/libc.so.7 (0x2808f000)
```


----------



## cpm@ (Jul 5, 2013)

This is not related to the topic, but it's important. Please, read: Topics about unsupported FreeBSD versions.


----------



## vatson (Jul 5, 2013)

cpu82 said:
			
		

> This is not related to the topic, but it's important. Please, read: Topics about unsupported FreeBSD versions.



Sorry, I don't understand. I mean, I do understand that it is important to run a supported OS version, but I don't see how http://www.freebsd.org/security/index.html#sup indicates that RELENG_8 is unsupported.

Maybe my original post left an impression that I'm running 8-STABLE from couple of years ago. Actually I did upgrade the base system before updating ports:


```
> uname -a
FreeBSD disco.kodu.lan 8.4-STABLE FreeBSD 8.4-STABLE #0 r251642: Wed Jun 12 12:44:57 EEST 2013     toomas@disco.kodu.lan:/usr/obj/usr/src/sys/DISCO  i386
```


----------



## cpm@ (Jul 6, 2013)

vatson said:
			
		

> Maybe my original post left an impression that I'm running 8-STABLE from couple of years ago. Actually I did upgrade the base system before updating ports:
> 
> 
> ```
> ...



A misunderstanding, I just see your `% uname -a` output 

Check if  the HTML5 option in http://www.youtube.com/html5 is invoked. This will make you use WebM videos from YouTube and avoid Flash ones. Furthermore, the HTML5 page should indicate that h.264 is supported.

Also read the comparison of HTML5 and Flash.


----------



## vatson (Jul 6, 2013)

There was something wrong with my installation of gstreamer-ffmpeg, but I still don't know what.

I was able to finally receive an error message by deleting ~/.gstreamer-0.10/registry.i386.bin and running `gst-inspect`. This returned an error:


```
(gst-plugin-scanner:9584): GStreamer-WARNING **: Failed to load plugin '/usr/local/lib/gstreamer-0.10/libgstffmpeg.so': /usr/local/lib/gstreamer-0.10/libgstffmpeg.so: Undefined symbol "ff_deinterlace_line_mmx"
```

I tried re-building the port with empty /etc/make.conf (eliminating the CPUTYPE and CFLAGS), but this just resulted in a slightly different message:


```
(gst-plugin-scanner:23711): GStreamer-WARNING **: Failed to load plugin '/usr/local/lib/gstreamer-0.10/libgstffmpeg.so': /usr/local/lib/gstreamer-0.10/libgstffmpeg.so: Undefined symbol "ff_mlp_init_x86"
```

I guessed that my gstreamer-ffmpeg port may somehow conflict with ffmpeg1 port which I also have installed and which is required by lots of other ports. But even if I removed ffmpeg1 with `pkg_delete -f` and re-built gstreamer-ffmpeg, it still gave the same error.

Finally I just installed the binary package of gstreamer-ffmpeg, and gnash is now able to play YouTube...


----------

