Skip to content
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

Custom player support #17

Closed
heisters opened this issue Jul 30, 2016 · 3 comments
Closed

Custom player support #17

heisters opened this issue Jul 30, 2016 · 3 comments

Comments

@heisters
Copy link

I'm interested in the possibility of developing a lightweight player library based on Hap, aimed at high-performance cross-platform applications. Many of the goals are the same as mentioned in #16, but go a bit further. Typical media libraries (QT, AVFoundation, DirectShow, libavcodec) are difficult to integrate with, have a lot of dependencies and limitations, and fall down when you try to do much more than just watch one video straight through.

I'm curious about writing an extremely stripped down player library that only reads Hap encoded frames from a simple, common container format like MPEG or maybe OGG. With FFMPEG's Hap encoding support, the main requirements of a container would be that it is easy to parse, and that FFMPEG can write to it. The library itself should have minimal dependencies, compile on most platforms that support C++11, and be extremely easy to integrate into C++/OpenGL projects.

Writing this from scratch, while possibly hubristic, would not only allow easier cross-platform support, but could also open the door to features that are in line with the original goals of Hap. Specifically, for my purposes, things like: reliable, accurate, performant random frame access; low memory footprint; control of caching frames in RAM; 64-bit support; multiple playheads in a single video; possibly a metadata track that is synced to video frames to support, eg., CV pre-processing.

Does anyone have any thoughts on this approach? Is there any prior work to build off of, or is this a foolish way to go about it?

@bangnoise
Copy link
Collaborator

Personally I would recommend using an existing library for demuxing rather than trying to reinvent a rather complex wheel. If its license works for you, libavformat from FFMPEG is fairly simple and versatile, has many years of work behind it, and is cross-platform.

I'm going to close this as it isn't an issue with Hap, but would love to hear if you madly decide to go ahead.

@ttoinou
Copy link

ttoinou commented Jul 12, 2018

For a custom player reading HAP on desktop you can use Resolume Alley.

Would you precise the features you need, for example random access to frames, isn't there a way to use the faststart of .MOV to have a table of frames at the beginning of the file, so you can seek which frame you want in the file ?

For low memory footprint how do you want to achieve that ?

Good idea for multiple streams in a video, should be doable inside the .MOV container, no ?

@dlublin
Copy link
Member

dlublin commented Jul 12, 2018

Check out the HAP video website for a list of supported applications:
http://hap.video/integrations.html

In particular you are looking for alternatives to QuickTime for transcoding, check out this page:
http://hap.video/using-hap.html
which includes instructions / links for using the free AVFoundation based Batch Exporter and FFMPEG.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants