PyAV-Org / PyAV

Pythonic bindings for FFmpeg's libraries.
https://pyav.basswood-io.com/
BSD 3-Clause "New" or "Revised" License
2.47k stars 360 forks source link

Provide wheels on PyPI #587

Closed filips123 closed 4 years ago

filips123 commented 4 years ago

You should provide pre-build wheels of PyAV on PyPI.

Currently, if you want to use PyAV, you need to compile it manually. This can cost quite a lot of time, and on Windows, you have to install VS Build Tools which are very heavy (more than 5 GB). This makes it quite hard to install and use PyAV.

You should provide pre-built wheels for all supported Python versions and systems on PyPI. You should use CI to automatically build and publish them.

mikeboers commented 4 years ago

I'd love to, but PyAV needs to be built for the FFmpeg that you have installed. So we would also need to provide an FFmpeg, which is rediculous.

conda-forge has a PyAV package that is built against their ffmpeg package.

filips123 commented 4 years ago

Are there so many incompatibilities between different FFmpeg? So it isn't possible to have same PyAV build for different FFmpeg versions?

mikeboers commented 4 years ago

There are a few. There used to be a lot more...

At a glance I wonder if they can be removed due to us only supporting >4.0 now. Let's see!

Okay... I'll open this back up and make another issue about removing those shims. Although I don't expect I'll actually work on them for a long time. If someone wants to open a PR, that would be keen.

mikeboers commented 4 years ago

Or... you know... with all those "should"s you're throwing around, I would accept payment for features.

filips123 commented 4 years ago

Or... you know... with all those "should"s you're throwing around, I would accept payment for features.

Sorry, I didn't mean that you must implement this immediately. I said "should" because I meant that it would be nice to have this, but not required. And I thought that "should" would be more appropriate than "could" or something else...

mikeboers commented 4 years ago

Now that I know, I appreciate the thought. I have a bit of a sore spot here cause this is a personal project. Thanks for dealing with me.

jlaine commented 4 years ago

I would highly recommend using cibuildwheel to build wheels for the different platforms, it alleviates a lot of the setup work.

jlaine commented 4 years ago

Hi Mike,

I've recently switched a project over to Github Actions and use cibuildwheel to build a third party library and produce OS X / Linux wheels. For now my Windows wheels are still built on AppVeyor.

Here is the GA config:

https://github.com/aiortc/pylibsrtp/blob/master/.github/workflows/tests.yml

The main question is how what options we'd like in the FFmeg binary, since we will no longer use the system's FFmpeg?

jlaine commented 4 years ago

This task is done, PyAV 8.0.0 is out with binary wheels!