FS#9298 - [ffmpeg] Latest ffmpeg breaks vlc transcoding
Attached to Project:
Arch Linux
Opened by Apollon Oikonomopoulos (apoikos) - Tuesday, 22 January 2008, 09:31 GMT
Last edited by Tobias Kieslich (tobias) - Monday, 11 February 2008, 20:58 GMT
Opened by Apollon Oikonomopoulos (apoikos) - Tuesday, 22 January 2008, 09:31 GMT
Last edited by Tobias Kieslich (tobias) - Monday, 11 February 2008, 20:58 GMT
|
Details
Description:
The latest version of ffmpeg introduced breaks vlc for two reasons: a) Because vlc is still linked to the old version of ffmpeg (libavcodec.so.51 instead of .52) b) Because ffmpeg is compiled with swscaler support, it doesn't export certain symbols needed by vlc's transcoder. Additional info: * Package versions: ffmpeg 20071204-1, vlc 0.8.6d-1 Steps to reproduce: Upgrade to the versions specified, open a stream with vlc and attempt to transcode it as mp4v/mpga. vlc will fail claiming there is no encoder available. Resolution: Recompile ffmpeg with swscaler disabled and then recompile vlc after patching it with the attached patch. The attached patch resolves a type conflict with the newer ffmpeg libraries. |
This task depends upon
Closed by Tobias Kieslich (tobias)
Monday, 11 February 2008, 20:58 GMT
Reason for closing: Fixed
Additional comments about closing: Paul is a hero
Monday, 11 February 2008, 20:58 GMT
Reason for closing: Fixed
Additional comments about closing: Paul is a hero
b) "Won't Implement" because of http://bugs.archlinux.org/task/7943#comment22688
Related to this ?!
FS#8531about weirdness of --enable-swscaler change.I think the way to keep everyone satisfied is to compile vlc statically against a swscaler-less ffmpeg tree (see `--with-ffmpeg-tree' configure option). I will try it tomorrow at work to see if it works and how big an impact it has on the package size.
Summary: it seems that recent ffmpeg breaks a lot of stuff in vlc. I have read that some of these problems have been ironed out in the vlc 0.9 development branch, but it seems that vlc 0.8.x still needs a relatively old version of ffmpeg to function properly. So, in a nutshell, if a newer version of the ffmpeg shared libraries is definitely needed, then compiling vlc staticaly against an older ffmpeg tree is probably the best solution.
[1] The same problem appears here as well: http://forum.videolan.org/viewtopic.php?f=2&t=42133
http://bugs.archlinux.org/task/7943
After some thought, it seemed like holding back those wanting newer ffmpeg features for too long in order to prevent breaking vlc, especially when it appears the vlc coders are writing 9.0 which works with ffmpeg, was not the Arch way. However, I'm totally open to reconsidering this if there's new input we didn't consider before.
This scenario points out why it would be useful for ffmpeg to have actual releases. If you expect developers of dependent software to guess which featureset to rely upon, they will choose differently, and upgrading will break some things and fix others in ways that are hard to predict.
Bottomline: it's been 10 days since the ffmpeg update and /usr/lib/vlc/codecs/libffmpeg_plugin.so *still* links with absent versions of libx264 and libavformat, thus making vlc virtually unusable for any ordinary media playback and leaving "extra" in an inconsistent state. VLC, despite being "crappy", has a big community of users and happens to be the best streaming-video solution available on all major platforms. I have pointed out a solution that has worked for me fine sofar and could - at least temporarily, until vlc 0.9 is out or a different decision is made - solve the problem without compromising on the system's ffmpeg package. However no-one seems to have paid any attention to it. Is *this* the Arch way? (really, no offence intended here)
[*] Hint: the fact that the so-version of libavformat changed between 20070505 and 20071204 should have warned us of a potential API breakage.
Unless someone here objects, I will rebuild vlc sometime tomorrow (Sunday 2/2) with the statically linked older ffmpeg. This is clearly only making things better in the moment, and we can continue a debate about this while vlc users are happily vlc-ing.
Apoikos, if you have further tweaked the PKGBUILD at all since you posted above, please repost here today so I can use the latest when I build/release tomorrow.
vlc E: Dependency detected and not included (speex) from files ['usr/lib/vlc/codec/libspeex_plugin.so']
vlc E: Dependency detected and not included (gnome-vfs) from files ['usr/lib/vlc/access/libaccess_gnomevfs_plugin.so']
vlc E: Dependency detected and not included (libnotify) from files ['usr/lib/vlc/misc/libnotify_plugin.so']
vlc E: Dependency detected and not included (lirc-utils) from files ['usr/lib/vlc/control/liblirc_plugin.so']
vlc E: Dependency detected and not included (sdl_image) from files ['usr/lib/vlc/codec/libsdl_image_plugin.so']
vlc E: Dependency detected and not included (libmpcdec) from files ['usr/lib/vlc/demux/libmpc_plugin.so']
vlc E: Dependency detected and not included (libmodplug) from files ['usr/lib/vlc/demux/libmod_plugin.so']
And are there any other plugins in use that may not be in the depends array and so I might not have gotten in my build?
But the list looks proper to me as they are all in the makedepends array
This is intended at least as a bandaid. I'll leave it up to Tobias what to do from here, but in the short term, please report in here whether or not this makes vlc in [extra] usable again.
VLC works just like before.