-
Notifications
You must be signed in to change notification settings - Fork 6k
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
Support I-frame only tracks for DASH trick play #6054
Comments
Issue: #6054 PiperOrigin-RevId: 306641689
Issue: #6054 PiperOrigin-RevId: 307285068
Issue: #6054 PiperOrigin-RevId: 306641689
Issue: #6054 PiperOrigin-RevId: 307285068
Issue: google#6054 Issue: google#474 PiperOrigin-RevId: 306437452
Issue: google#6054 Issue: google#474 PiperOrigin-RevId: 306504362
Issue: google#6054 PiperOrigin-RevId: 306641689
Issue: google#6054 PiperOrigin-RevId: 307285068
Thanks @ojw28 for your commit fea4376 this does match the design we agreed on for #474. I'm working with some origin vendors on specs for how to properly add live (specifically the We are adapting based on frame rate, I would appreciate the chance to collaborate on a specific setting that the I think there are two use cases:
We have implemented this (by uncommenting the exclusion of the trick-mode tracks) and overriding the This is enough an an API change I don't want to simply make a pull request without discussing it a bit. |
(Note: ojw28 is no longer working on the project) Can you describe in a bit more detail how you plan to integrate this into |
Sure @tonihei Thanks, yes the real key take away from my discussions with Oliver in #474 was to include the The reason this is a good choice is it avoids a full track selection (that potentially flushes the renderers and empties the What we do currently is:
Basically we implement what the DASH-IF suggests in Trick Mode Section, blocking the use of trickmode tracks during regular playback. So, if this was a For example,
We have already coded this outside of ExoPlayer with overrides and custom logic (along with uncommenting the code in the commit above). My changes to enable seek to nearest keyframe for HLS have this working very well for HLS (DASH already worked well). One issue still opened (can't remember specific, @icbaker and I were discussing solutions) is that broadcom decoders are reluctant to decode a single IDR passed to So, sorry for the long history.. But in summary, to start we need an API that is plumbed all the way to the
Obviously this is a major enough change we would want to do it in androidx.media, we would be more than happy to back port it to our version of ExoPlayer and fully test it. We have a huge amount of experience with trick-mode playback and a working implementation we are shipping now. I am able to sharing the code needed to enable fast scrub (which many in ExoPlayer community are asking for) with this API change. Sure would be nice to get rid of commented out code ;-) |
Sorry for the delay in getting back to this! And thanks for the detailed explanations. I'm not sure if you've seen it, but there is long list of missing features and building blocks that make trick play work nicely listed in #3752 (comment). I think you are currently talking about item 4 in this list (track selector changes). If we have a concrete proposal to move forward with changes in this area, it's probably worth filing a new issue specifically for this part. (This particular issue here is actually solved, right? The i-frame only tracks in DASH are detected and put into the TrackGroups as such)
This is interesting. I think there are two different scenarios for this: (1) paused preview (e.g. during scrubbing) and (2) high-speed playback For (1) paused preview, it makes more sense to me to actually change the track selection (via For (2) high-speed playback, the decision to use an i-frame-only track sounds like it should be solely based on playback speed and could be enabled regardless of any other settings. The logic could roughly be: allow these tracks if the effective frame rate becomes acceptable. If it's just based on playback speed, then there is no need to plumb any new API to |
This functionality is of top importance. We are telco migrating hundreds of thousands of Linux STB users to Android TV and this is No1 complaint from users - "Fast Forward does not work!". On 20 years old VCR boxes users just press >> remote button and FF starts full screen, no any menus needed, just 6-8 i-frames per second optimal, and users press the Play button when the wanted position is reached, for example end of unwanted ad. Same for rewind << key. On Apple TV STB and on iPhones/iPads i-frame tracks work out of box. On Android TV DASH must be used by telcos due to graphical subtitle formats, DRM and other reasons. Small thumbnails was a complex workaround due to the lack of CPU/video performance in the past but not with modern popular chipsets like AmLogic S905X4, where i-frame tracks can play full screen. DASH trick-play is fully implemented on Linux STBs from Arris, it plays 6-8 fps (configurable) of i-frames from dedicated i-frame track that is already provided by all major origin/packaging/CDN platforms - at maximum resolution that fits into available bandwidth with at least 4 fps (minimum FF speed is x8 with every i-frame shown if i-frames are every 2 sec). User can raise the FF speed from x8 to x32, x64, x128 speeds. Thank you for raising the attention to this... if I can help by providing URLs with i-frame tracks for testing - please ask. |
Similar to #474
But for DASH presentations.
This would be great for AndroidTV in which typical user interaction is via remote control.
The text was updated successfully, but these errors were encountered: