-
Notifications
You must be signed in to change notification settings - Fork 177
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unified install_ffmpeg.sh for go-livepeer and lpms with HEVC and VP8/9 support #2135
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Concerned about multi-platform support - this script should work in as many environments as possible. I can live with no Tensorflow on Windows if we don't think it's feasible, but we should be able to get x265 and libvpx working on Mac and Windows.
Why support any software codec on any platform in production, and why spend efforts to support unusual codec-platform combinations for development build, which only required for running some tests in |
Not just tests in |
In this case I invite you to add support for MacOS, because I don't have access to one and won't be able to test it 😁
Does someone really running a transcoder on Windows with software codecs? If it's remotely possible with H.264, HEVC and Vp8/9 unlikely to work real-time. Nvidia codecs are working just fine without libx265 and libvpx. |
Because we're a weird, decentralized transcoding platform. It's very hard for us to predict ahead of time the unusual environments where our software will be deployed. If odd platform combinations end up causing bugs, that's one thing, and we could have a conversation about the effort required to fix those bugs. But so far, once we've gotten things compiling successfully, the actual transcoding has worked flawlessly on all three platforms. Let's not give up on that just because it makes the build script a bit more complex!
I don't follow — this script isn't just for the development build, it's also what we use to produce binaries for distribution. Surely those tests exist in lpms because we want to eventually support these codecs in go-livepeer?
That's fair! I'd ask that you start out by writing a version of this that works the same on all platforms and let the CI process attempt to build it. It might just work out of the box. If you run into platform-specific compile problems, or you want @darkdarkdragon or I to test the resulting binaries on Mac/Windows, give us a ping. |
That's faster than I expected, however, I suggest running the test using our test segment:
And ffmpeg command closer resembling transcoding logic:
Also try
As I see it:
For me, it makes perfect sense to not support |
I'm not confident of that at all - I think people run all sorts of different hardware on the network, though I hear you that these software encoders are much slower than others. Started hacking on a cross-platform approach here, but it'll probably take some iteration to get right: #2136. I'm cool with this landing in the meantime if it unblocks our support for hardware HEVC and whatnot. |
Added comment on static build of new codecs: livepeer/lpms#279 (comment) |
Chiming in on the discussion of supporting software based transcoding for the new codecs: I see the following prioritization right now for new codec support:
Given the above prioritization, I think it is reasonable to focus on 1/2 and to look into 3/4/5 separately if a) it is challenging to support everything at once and b) we believe there is a reasonable way for someone without access to a GPU to do manual testing with go-livepeer for new codecs (not to test the actual decoding/encoding, but for the code paths around selecting the codec). If we do this, we can just make it clear that initially there is limited support for new codecs. At the same time, while for new codecs we can opt to support HW transcoding first and look into supporting SW transcoding separately, I do think it is important not to take away support for SW transcoding for existing codecs (i.e. H264) just because I think we should aim to avoid removing features unless we absolutely need to (i.e. security reasons, we are confident that the pain of supporting it outweighs any benefit certain users might get from it, etc.). [1] This is anecdotal, but I feel like its right... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm looks like the Linux Tensorflow Build is failing. Any idea why?
Fixed, I initially thought it's CircleCI caching issue, but it was permission-related. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Let's squash all the commits prior to merging.
What does this pull request do? Explain your changes. (required)
go-livepeer
sideinstall_ffmpeg.sh
for bothlpms
andgo-livepeer
, which will reside ingo-livepeer
repoSpecific updates (required)
All changes are in
install_ffmpeg.sh
:libx265
andlibvpx
debug-video
mode for development and testing oflpms
libtensorflow
installationHow did you test each of these updates (required)
Does this pull request close any open issues?
#2134
Checklist:
make
runs successfully./test.sh
pass