mpv and ffmpeg - Patch for successful build
4 Attachment(s)
As of today's update, mpv failed to build with ffmpeg. I Googled for a solution, and found some patches on Arch Linux's site (NOTE: patches are attached to this post. Download into the mpv directory and rename the files to remove .txt extension) which fixed the problem for me. I slightly modified the mpv.SlackBuild to automatically apply the patches before configuring and building.
After the line that says: Code:
Code:
chown -R root:root . Code:
for i in $CWD/*.patch; do patch -p1 < $i; done Hope this helps! |
Its kind of silly to patch software that was intentionally broken out of the developer's personal spite. You're just going to get an unsupported build and a ton of pain when mpv upstream breaks it again.
Edit: Also for those you are missing the ytdl support built into mpv. This can be used with mplayer. Code:
mpv() { |
Quote:
|
I was just looking at the github issue this morning. Apparently this is already fixed in mpv's git master, and the next release should be fine.
https://github.com/mpv-player/mpv/issues/5081 Personally, I was just going to rebuild it without libva support. |
I just tried building it and of those patches just the vaapi-Use-libva2-message-callbacks.patch seems actually needed for the new va stuff on current.
BTW, thanks for reporting this! |
Quote:
|
Quote:
|
mpv git head already includes the fixes for the new va libraries, but it won't build against ffmpeg 3.4 (something to do with using a libav api that hasn't be ported to ffmpeg yet.). it will build against ffmpeg head (3.5-dev) so when ffmpeg 3.5 is released that issue should resolve itself (unless anything else breaks in the mean time.).
The last official release of mpv, v0.27.0, will build against ffmpeg 3.4 but it doesn't have the fixes for the new va library versions, so it fails to build on current as of today's update. This is the situation we currently find ourselves in. An alternative to patching is using "git checkout -f f36d152eb7" to checkout a revision of mpv that has the vaapi changes, but still works with ffmpeg-3.4, and building from that until such time as 3.5 is out and slackware has moved to it. @marrowsuck deserves the credit for finding that. |
Quote:
|
Quote:
but v0.28 most likely wont. The revision marrowsuck identified is 302 changesets ahead of v0.27.0 and I think will be as uptodate as you'll be able to get without using ffmpeg 3.5 or the ffmpeg-mpv fork (which I don't like the idea of). Both approaches appear to be valid. Use either the git revision listed above, or 0.27 and the patch, and you should be fine for now. |
Quote:
|
I'm not seeing much of a problem. They'll obviously delay the 0.28 release until FFMPEG 3.5 is out.
|
Quote:
Code:
env BUILD_OPTS=" --disable-vaapi " ./mpv.SlackBuild |
Quote:
In case the point was not clear, mpv works fine with ffmpeg-3.4 except for the fact that wm4 intentionally broke it because of personal issues. If it happened once it could happen again and users have only a few choices. 1. Play along. 2. Go through tedious efforts to undo the damage as its done. 3. Find an alternative. 4. Fork mpv. |
Quote:
|
Quote:
In the meantime, someone in the other thread has pointed out QMPlay2, which looks like a viable alternative.... -- Pete |
Quote:
The patch I was referring to originally is referenced in my original post. My point of view is that if the program works for my needs, then that's all that matters. And there's always someone who has come across the same issues as I in any given program, and there's almost always a workaround or patch. Google is your friend. ;) Hope this helps. |
Re-reading my post, I realise it wasn't as clear as I had intended! I meant if you write a patch in future, please let us know! Sorry for any confusion!
There has been a huge flurry of upgrades in -current recently (new release imminent?), and I would expect this to cause the odd breakage. Usually I manage to work around it, but this time I came unstuck! I still haven't figured out why the MPlayer build script threw a tantrum, but I don't need to any longer, and no doubt it will be picked up by the team in due course. I really don't want to use the vdpau workaround unless I absolutely have to. Its not that I have anything against vdpau - both my other machines use ati gfx and the kernel drivers, and vdpau works fine on them. But using a translation layer from vdpau to vaapi seems like a kludge - however well intended - that I would rather avoid! Thanks for your help, and to all the other contributors to this, and the other, thread -- Pete |
Quote:
Happy Slacking! |
If they'd decided to continue with their FFMPEG fork, then my recommendation would have been to have one MPV SlackBuild that does the following:
1. installs ffmpeg (theirs) into $PKG/usr/lib$LIBDIRSUFFIX/mpv 2. builds mpv against it, using "-Wl,-rpath=/usr/lib/lib$LIBDIRSUFFIX/mpv -L$PKG/usr/lib$LIBDIRSUFFIX/mpv" This is a fairly standard way of building dependencies into a package. I did suggest this on the slackbuilds-users mailing list. |
That is a really ugly hack as far as package distribution goes, but to be fair there are no good solutions here.
|
|
I wasn't aware of the helper build script mpv project provides:
https://github.com/mpv-player/mpv-build It's as easy as this: Code:
git clone https://github.com/mpv-player/mpv-build.git Works flawlessly, just copy the resulting mpv executable where you want. |
I have a SlackBuild that uses that to build a proper Slackware package. It currently builds 0.28.
https://github.com/duganchen/my_slac...mpv.SlackBuild I'd mentioned it in another thread about this issue, but I can't find that thread right now. |
I dont have any problem with mpv + ffmeg on the contrary, only hapiness.
I can play any kind of videos (4k, hvec, ts, hdr, 10bits, etc) with hardware off course. Please do not judge me, i'm just an amateur. My personal builds first https://github.com/ericfernandesferreira/audio second https://github.com/ericfernandesferreira/video |
Just a heads up for anyone still using mpv. Nasty remote code execution: CVE-2018-6360
After a lot of prompting and resistance it looks like they've tagged a 0.27.1 and 0.28.1, but it's clear from the comments here that the mpv dev's don't consider security issues their responsibility to patch in anything other than git master, which kind of makes a mockery of tagging releases in the first place. Anyway, be warned. |
Just use my SlackBuild to build 0.28.1.
|
for good luck with version 0.28.2 you need to apply only one fourth patch
(mpv-do-not-fail-with-minor-ffmpeg-updates.patch) |
Again: just use my SlackBuild to build 0.28.2. It will build all future versions without needing to be updated.
|
Doesn't your mpv build pull down and embed it's own copy of ffmpeg? The reason I switched from mplayer to mpv in the first place was that it used the system installed ffmpeg library rather than it's own embedded version.
Now, somewhat ironically, it's easier to get mplayer to use the system library than it is mpv. |
Not only its own copy of ffmpeg, but a rage fork which does not have nearly as many developers looking at it. At least MPlayer uses the upstream ffmpeg source when you choose to build it with a static ffmpeg.
Additionally mpv recently broke the ffmpeg API compatibility again... |
Quote:
|
All times are GMT -5. The time now is 11:06 AM. |