google / ExoPlayer

This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
https://developer.android.com/media/media3/exoplayer
Apache License 2.0
21.74k stars 6.03k forks source link

240FPS Sample Dash Stream Drops Frame On Playback #4799

Closed keremkusmezer closed 6 years ago

keremkusmezer commented 6 years ago

Issue description

I get constant frame drop on the below provided content

Reproduction steps

During playback of the following dash playback content it get constant framedrops 2018-09-10 18:19:57.758 13869-13869/uk.co.wormapp.worm D/WormExoPlayerEventLogger: droppedFrames [57.89, 50] 2018-09-10 18:19:57.995 13869-13869/uk.co.wormapp.worm D/WormExoPlayerEventLogger: droppedFrames [58.13, 50] 2018-09-10 18:19:58.226 13869-13869/uk.co.wormapp.worm D/WormExoPlayerEventLogger: droppedFrames [58.36, 50] 2018-09-10 18:19:58.449 13869-13869/uk.co.wormapp.worm D/WormExoPlayerEventLogger: droppedFrames [58.58, 50] 2018-09-10 18:19:58.656 13869-13869/uk.co.wormapp.worm D/WormExoPlayerEventLogger: droppedFrames [58.79, 50] 2018-09-10 18:19:58.905 13869-13869/uk.co.wormapp.worm D/WormExoPlayerEventLogger: droppedFrames [59.04, 50] 2018-09-10 18:19:59.421 13869-13869/uk.co.wormapp.worm D/WormExoPlayerEventLogger: droppedFrames [59.55, 29] Just try to playback the given content with the exoplayer demo app, and you will get constant frame drops during playback

Link to test content

https://s3.eu-west-2.amazonaws.com/worm-video/dev/coconut/5b9660b1ec6bf30e15a59fe9/dash/MP4.mpd

Version of ExoPlayer being used

2.8.2

Device(s) and version(s) of Android being used

GM5Plus Android 8.0

ojw28 commented 6 years ago

Could you clarify what your expectation is? If your expectation is that content should play smoothly at 240fps, could you clarify on what basis you've formed that expectation. Devices have performance limitations, so this is not always possible.

Please also try the dev-v2 branch, if you haven't already. There are some improvements around playing high frame-rate content that are not yet released (these improvements will be in the 2.9.0 release), which should avoid indefinite dropping of frames. I'd still expect significant frame drops on many devices at this framerate, however.

One other thing: It's quite common for video decoders to not support decoding of resolutions with odd dimensions (your manifest contains two such streams). The H264 decoder of the Galaxy S8 I tested on states it does not support these dimensions, and as a result ExoPlayer doesn't even attempt to use them. If I force it to do so anyway the decoder leaves an ugly green bar down the right hand side. I think you should ensure your content always uses even resolutions.

keremkusmezer commented 6 years ago

Hi, Is the 2.9.0 release date set now, i see there are preparations for the release as release notes are updated and the version info is bumped.

You are right on the odd resolution problem i am improving the encoder to provide only odd numbers for resolution instead of the current output.

I am switching to dev-v2 branch now and will test with my media the improvement thx for the fast response.

If i will still get that many frame drops there i will provide more information to you.

keremkusmezer commented 6 years ago

Hi,

I have two samples of the same video, one as non adaptive normal mp4 and the other as mpeg-dash encoded. The frame rate is 240 fps on both

https://s3-eu-west-1.amazonaws.com/worm-bucket-prod/videos/5b6c35c32aee110004d40559/3DA76C26-A84A-4A53-8AD1-55EBCF5A9A09-ffr.MP4

The same device can playback the mp4 on 720x1080, but 720x1080 playback is restricted on hls content

https://s3.amazonaws.com/worm-streaming/test/playlist.m3u8

ojw28 commented 6 years ago

I'm not sure what's actionable about your last post above, since it does not appear to contain a question or clear information. It's also unclear why the HLS sample is relevant, and what "restricted" means. Please clarify.

keremkusmezer commented 6 years ago

Hi, Exoplayer can play the above mp4 file on 720x1080 , but as i want to play the hls stream provided in 720x1080 exoplayer return that is not supported on the same device. So basically only 360x640 and 474x842 is provided to me as selection options on the hls quality selection dialog, although my device can play the same file encoded as mp4 240fps 720x1080 without any issues on exoplayer.

ojw28 commented 6 years ago

What's probably happening is that the device tells us it's unable to play at 240FPS at 720x1280. In the adaptive playback there are lower quality streams available, so we'll stick to those. For the MP4 playback there are no lower quality alternatives. In this case ExoPlayer will "try anyway", because the worst that can happen is playback will fail, which isn't really much worse than not trying. For this particular stream playback then happens to work.

keremkusmezer commented 6 years ago

Thank you for the brief explanation and detailed information regarding the topic. I guess with TrackSelector customization i can still try to enforce the higher resolutions to playback.