http-streaming icon indicating copy to clipboard operation
http-streaming copied to clipboard

Player may get stuck in audio-only mode

Open ghost opened this issue 7 years ago • 9 comments

Kjeld commented on Dec 18, 2017, 4:23 PM UTC:

Description

The issue is that our 4K UHD stream doesn't play video. It only reads (and plays back) the audio .ts chucks. We think it is related to a undefined width and height issue.

Sources

https://content.streamone.io/embed/item=TpZBf-QKi4e2/bbbuhd60p.html https://media.streamone.io/hls/account=MpBJPKUJ4Y6i/item=TpZBf-QKi4e2/TpZBf-QKi4e2.m3u8

Steps to reproduce

  1. In Chrome (Version 63.0.3239.84 High Sierra) https://content.streamone.io/embed/item=TpZBf-QKi4e2/bbbuhd60p.html
  2. https://videojs.github.io/videojs-contrib-hls/ source https://media.streamone.io/hls/account=MpBJPKUJ4Y6i/item=TpZBf-QKi4e2/TpZBf-QKi4e2.m3u8
  3. Check the Chrome developer Tools

Results

Expected

Playback of 60fps UHD video.

videojs-contrib-hls version

It can be reproduced on you latest release https://videojs.github.io/videojs-contrib-hls/

Browsers

Chrome Firefox

Platforms

High Sierra Debian 8

PS: The item is currently transcoding on a test account for you to publicly access, it will be there in 60 minutes from now. 12:23 UTC+1 == NOW()

This issue was moved by forbesjo from videojs/videojs-contrib-hls#1309.

ghost avatar Aug 01 '18 20:08 ghost

forbesjo commented on Jul 2, 2018, 4:59 PM UTC:

This is related to #1435, closing this in favor of the other issue

ghost avatar Aug 01 '18 20:08 ghost

squarebracket commented on Jul 12, 2018, 11:32 PM UTC:

Reopening as it's unrelated to #1435 (segment size isn't what's causing the describing problem per se).

Kjeld your playlist confuses me. You have an EXT-X-MEDIA for the audio with no URI, but then have an audio-only EXT-X-STREAM-INF later. Is there a reason you're not just using it as the URI attribute of the EXT-X-MEDIA?

In any case, what's happening here is that the initial bandwidth is low enough and the video playlist's BANDWIDTH is high enough that the initial playlist selector is choosing the audio-only playlist by default. Once that happens, it's locked into audio-only; the source buffers are made only once, and since the first playlist it selects only has audio, it only creates an audio source buffer.

If you feed in a pre-programmed bandwidth to use during initial playlist selection, à-la

videojs('videojs-contrib-hls-player', {html5: {hls: {bandwidth: 30000000}}})

it will select the audio+video playlist and everything will work out.

Perhaps we should add something to the initial playlist selection that disregards any audio-only variants if there are any audio+video variants.

That being said, unless you need it, you should consider dropping the only audio-only variant playlist. Note that Apple no longer recommends using an audio-only playlist in its HLS authoring guidelines; it now recommends a playlist with low-bitrate audio and video. Alternatively, simply encode more variants that have lower-bandwidth streams.

ghost avatar Aug 01 '18 20:08 ghost

forbesjo commented on Aug 1, 2018, 8:09 PM UTC:

Moving this to VHS and we can fix this initial playlist selection logic there

/move to http-streaming

ghost avatar Aug 01 '18 20:08 ghost

Renaming this issue to clarify what the bug is

forbesjo avatar Aug 01 '18 20:08 forbesjo

We can fix this by making sure not to select the audio-only playlist if we know that there are video+audio playlists available. The player may still get in this state if the manifest does not specify codec information.

forbesjo avatar Aug 01 '18 20:08 forbesjo

Bug is still ocurring on my end, but setting html5.hls.enableLowInitialPlaylist to true, makes it work.

Here is the .m3u8 used (generated by Azure Media Service):

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="audio",DEFAULT=YES,URI="QualityLevels(196000)/Manifest(audio,format=m3u8-aapl)"
#EXT-X-STREAM-INF:BANDWIDTH=4474284,RESOLUTION=1920x1080,CODECS="avc1.4d402a,mp4a.40.2",AUDIO="audio"
QualityLevels(4166000)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=4474284,RESOLUTION=1920x1080,CODECS="avc1.4d402a",URI="QualityLevels(4166000)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=208472,CODECS="mp4a.40.2",AUDIO="audio"
QualityLevels(196000)/Manifest(audio,format=m3u8-aapl)

Disabling the audio-only track also fixes the problem like mentionned in this issue. For anyone using Azure Media Service, you can disable it by adding audio-only=false to your dynamic manifest link:

https://{your-endpoint}.streaming.media.azure.net/{generated-id}/{generated-ism-id}.ism/manifest(format=m3u8-aapl,audio-only=false)

malandles avatar Oct 07 '20 13:10 malandles

@malandles Sometimes it's working but sometimes still the player plays audio only. as I can't see any progress on this issue here. need fix.

SebghatYusuf avatar Oct 10 '21 21:10 SebghatYusuf

Same here with videos 8 and Wowza Streaming Server. Only audio and black video...

ChR-iSz avatar Jun 10 '23 08:06 ChR-iSz