We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
ExoPlayer looses information about video frame rate (tag FRAME-RATE of master playlist) during its work.
ExoPlayer version: 2.13.2
HLS sample: Apple master playlist advanced, TS
Master playlist:
#EXTM3U #EXT-X-VERSION:6 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2218327,BANDWIDTH=2227464,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v5/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8144656,BANDWIDTH=8178040,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v9/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6307144,BANDWIDTH=6453202,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v8/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4775338,BANDWIDTH=5054232,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v7/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3240596,BANDWIDTH=3289288,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v6/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1292926,BANDWIDTH=1296989,CODECS="avc1.64001e,mp4a.40.2",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v4/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=914722,BANDWIDTH=922242,CODECS="avc1.64001e,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v3/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=541239,BANDWIDTH=553010,CODECS="avc1.640015,mp4a.40.2",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud1",SUBTITLES="sub1" v2/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2439704,BANDWIDTH=2448841,CODECS="avc1.640020,ac-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v5/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8366033,BANDWIDTH=8399417,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v9/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6528521,BANDWIDTH=6674579,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v8/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4996715,BANDWIDTH=5275609,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v7/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3461973,BANDWIDTH=3510665,CODECS="avc1.640020,ac-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v6/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1514303,BANDWIDTH=1518366,CODECS="avc1.64001e,ac-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v4/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1136099,BANDWIDTH=1143619,CODECS="avc1.64001e,ac-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v3/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=762616,BANDWIDTH=774387,CODECS="avc1.640015,ac-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud2",SUBTITLES="sub1" v2/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2247704,BANDWIDTH=2256841,CODECS="avc1.640020,ec-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v5/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8174033,BANDWIDTH=8207417,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v9/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6336521,BANDWIDTH=6482579,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v8/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4804715,BANDWIDTH=5083609,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v7/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3269973,BANDWIDTH=3318665,CODECS="avc1.640020,ec-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v6/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1322303,BANDWIDTH=1326366,CODECS="avc1.64001e,ec-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v4/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=944099,BANDWIDTH=951619,CODECS="avc1.64001e,ec-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v3/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=570616,BANDWIDTH=582387,CODECS="avc1.640015,ec-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc1",AUDIO="aud3",SUBTITLES="sub1" v2/prog_index.m3u8 #EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=182077,BANDWIDTH=186522,CODECS="avc1.64002a",RESOLUTION=1920x1080,URI="v7/iframe_index.m3u8" #EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=129936,BANDWIDTH=133856,CODECS="avc1.640020",RESOLUTION=1280x720,URI="v6/iframe_index.m3u8" #EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=94286,BANDWIDTH=98136,CODECS="avc1.640020",RESOLUTION=960x540,URI="v5/iframe_index.m3u8" #EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=74767,BANDWIDTH=76704,CODECS="avc1.64001e",RESOLUTION=768x432,URI="v4/iframe_index.m3u8" #EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=62251,BANDWIDTH=64078,CODECS="avc1.64001e",RESOLUTION=640x360,URI="v3/iframe_index.m3u8" #EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=37866,BANDWIDTH=38728,CODECS="avc1.640015",RESOLUTION=480x270,URI="v2/iframe_index.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud1",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="a1/prog_index.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud2",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="6",URI="a2/prog_index.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud3",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="6",URI="a3/prog_index.m3u8" #EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS,GROUP-ID="cc1",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,INSTREAM-ID="CC1" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub1",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,FORCED=NO,URI="s1/en/prog_index.m3u8"
Logcat:
2021-05-18 22:02:51.107 839-839/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=YES [ 2021-05-18 22:02:51.107 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:0, id=0, mimeType=video/avc, bitrate=2227464, codecs=avc1.640020, res=960x540, supported=YES 2021-05-18 22:02:51.107 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:1, id=1, mimeType=video/avc, bitrate=8178040, codecs=avc1.64002a, res=1920x1080, supported=YES 2021-05-18 22:02:51.107 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:2, id=2, mimeType=video/avc, bitrate=6453202, codecs=avc1.64002a, res=1920x1080, supported=YES 2021-05-18 22:02:51.107 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:3, id=3, mimeType=video/avc, bitrate=5054232, codecs=avc1.64002a, res=1920x1080, supported=YES 2021-05-18 22:02:51.108 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:4, id=4, mimeType=video/avc, bitrate=3289288, codecs=avc1.640020, res=1280x720, supported=YES 2021-05-18 22:02:51.108 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:5, id=5, mimeType=video/avc, bitrate=1296989, codecs=avc1.64001e, res=768x432, supported=YES 2021-05-18 22:02:51.108 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:6, id=6, mimeType=video/avc, bitrate=922242, codecs=avc1.64001e, res=640x360, supported=YES 2021-05-18 22:02:51.108 839-839/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:7, id=7, mimeType=video/avc, bitrate=553010, codecs=avc1.640015, res=480x270, supported=YES 2021-05-18 22:02:51.108 839-839/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:8, id=24, mimeType=video/avc, bitrate=186522, codecs=avc1.64002a, res=1920x1080, supported=YES 2021-05-18 22:02:51.109 839-839/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:9, id=25, mimeType=video/avc, bitrate=133856, codecs=avc1.640020, res=1280x720, supported=YES 2021-05-18 22:02:51.109 839-839/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:10, id=26, mimeType=video/avc, bitrate=98136, codecs=avc1.640020, res=960x540, supported=YES 2021-05-18 22:02:51.109 839-839/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:11, id=27, mimeType=video/avc, bitrate=76704, codecs=avc1.64001e, res=768x432, supported=YES 2021-05-18 22:02:51.109 839-839/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:12, id=28, mimeType=video/avc, bitrate=64078, codecs=avc1.64001e, res=640x360, supported=YES 2021-05-18 22:02:51.109 839-839/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:13, id=29, mimeType=video/avc, bitrate=38728, codecs=avc1.640015, res=480x270, supported=YES 2021-05-18 22:02:51.109 839-839/com.google.android.exoplayer2.demo D/EventLogger: ]
How to fix:
diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java index df1c598be5..37221505fc 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java @@ -1501,6 +1501,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; .setAverageBitrate(propagateBitrates ? playlistFormat.averageBitrate : Format.NO_VALUE) .setPeakBitrate(propagateBitrates ? playlistFormat.peakBitrate : Format.NO_VALUE) .setCodecs(codecs) + .setFrameRate(playlistFormat.frameRate) .setWidth(playlistFormat.width) .setHeight(playlistFormat.height); @@ -1508,6 +1509,10 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; formatBuilder.setSampleMimeType(sampleMimeType); } + if (sampleFormat.frameRate != Format.NO_VALUE) { + formatBuilder.setFrameRate(sampleFormat.frameRate); + } + if (playlistFormat.channelCount != Format.NO_VALUE) { formatBuilder.setChannelCount(playlistFormat.channelCount); }
The text was updated successfully, but these errors were encountered:
Thank you for pointing this, we will submit a fix soon
Sorry, something went wrong.
Forward FRAME-RATE from the master playlist to renditions
b5a464c
Issue: #8960 #minor-release PiperOrigin-RevId: 379922704
f3e6234
Issue: #8960 PiperOrigin-RevId: 379922704
christosts
No branches or pull requests
ExoPlayer looses information about video frame rate (tag FRAME-RATE of master playlist) during its work.
ExoPlayer version: 2.13.2
HLS sample: Apple master playlist advanced, TS
Master playlist:
Logcat:
How to fix:
The text was updated successfully, but these errors were encountered: