Name is required.
Email address is required.
Invalid email address
Answer is required.
Exceeding max length of 5KB

JW Player 6.8 - HLS Issues


Hi,

I have a setup with JW 6.8 and hoped that some HLS issues could be fixed in that version as I had a similar thread open few months ago.

This issue is similar with the previous problems we had, the audio stream_id of the secondary tracks had issues in JWPlayer 6.6; here in this JWPlayer 6.8 version the audio stream_id are processed ok but the secondary video stream_ids have issues. We hope you can fix the parsing of video stream_id from the PES packets in the com.longtailvideo.adaptive.muxing::PES/parse() function.
The error logged from the JWPlayer 6.8 is:
(PES start code not found or not AAC/AVC: 482)

Here more details about the tests which you can verify yourself.

We have a testpage open for you - available under: http://apphosting.drei.at/jwplayer_68/hlstest_live.html


iPhone highest quality:
o The player only requests ts segments at the beginning, so there is video and audio but the playback stops always after 30 seconds
o The player continues however requesting periodically and indefinitely the index file, but it does not requests any more ts segments


iPhone DBA:
o Test where the quality didnt change: here in opposite to the above case, even if it was using exactly the same stream, the playback worked stably. Therefore the issue with the previous case must be related to the handling of the index file format (the present case is slightly different: because the construct is DBA instead of requesting directly a single index file, the master file is requested first still the single index file in the end is the same).

o Test where the quality did change: the picture got frozen and there was only audio until the highest quality was recovered

iPad DBA
o If there is enough bandwidth available as to play the 1.6 Mbps track, there is video and audio.
o As soon as there is a downswitch to any quality => the audio continues but there is no video.
o The video is only recovered if the available bandwidth will be as high as to allow the 1.6 Mbps track.

iPad 1.6 Mbps:
o Same problem as with the iPhone single quality: the player only requests ts segments at the beginning, so there is video and audio but the playback stops always after 30 seconds

iPad 1.1 Mbps:
o There is only audio and black screen. It also stops after 30 seconds

iPad 860 kbps:
o There is only audio and black screen. It also stops after 30 seconds

iPad 634 kbps:
o There is only audio and black screen. It also stops after 30 seconds

iPad 360 kbps:
o There is only audio and black screen. It also stops after 30 seconds

Here the Links to the iPadstreams to test it e.g. with an IOS device to see that the streams do have actually image and not only sound:

http://213.94.80.169/live/UN/ipad/3live_sd/3live_sd_1649975.m3u8?live
http://213.94.80.169/live/UN/ipad/3live_sd/3live_sd_1123781.m3u8?live
http://213.94.80.169/live/UN/ipad/3live_sd/3live_sd_860581.m3u8?live
http://213.94.80.169/live/UN/ipad/3live_sd/3live_sd_634996.m3u8?live
http://213.94.80.169/live/UN/ipad/3live_sd/3live_sd_352886.m3u8?live

Thanks

9 Community Answers

Ethan Feldman

JW Player Support Agent  
0 rated :

Have you tried this streams out in <video> tags as well?

JW Player

User  
0 rated :

Hi Ethan,

Yes this worked. I opened a similar thread months ago where you wanted to pick up the issues.
The Streamingprovider (Vidiator) made some checks as well and that was their comment:

This issue is similar with the previous problems we had, the audio stream_id of the secondary tracks had issues in JWPlayer 6.6; here in this JWPlayer 6.8 version the audio stream_id are processed ok but the secondary video stream_ids have issues. We hope you can fix the parsing of video stream_id from the PES packets in the com.longtailvideo.adaptive.muxing::PES/parse() function.
The error logged from the JWPlayer 6.8 is:
(PES start code not found or not AAC/AVC: 482)

Thanks

Ethan Feldman

JW Player Support Agent  
0 rated :

Ok, thanks. I will ask the developers here about this one.

JW Player

User  
0 rated :

Hi Ethan,

Wanted to ask if you already know bit more?

Thanks, Frank

Ethan Feldman

JW Player Support Agent  
0 rated :

Not yet, sorry.

JW Player

User  
0 rated :

Hi Ethan,

Is it possible to buy support regarding the HLS Issues? I asked the same question in a different thread already few months ago. This is the last showstopper to roll it out to the customerbase?

Thanks, Frank

Ethan Feldman

JW Player Support Agent  
0 rated :

There isn’t really a paid support extra from the player support itself.

apps

User  
0 rated :

Hi Ethan,

Do you already have information if you could solve the HLS-Problem or investigate in this matter?

Br, FS

apps

User  
0 rated :

Hi,

We made some tests with the HLSprovider plugin, that you seem to use and/or at least some codeparts.

The single streams are working fine with the player+plugin but the multi-streams have similar issues as with the jwplayer:
Error: PES start code not found or not AAC/AVC: 484
at org.mangui.HLS.muxing::PES/parse()
at org.mangui.HLS.muxing::PES()
at org.mangui.HLS.muxing::TS/_readPacket()
at org.mangui.HLS.muxing::TS/_readData()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

Since the HLSprovider is an opensource plugin you can look at the source code of this and it can be seen the issue in mangui-HLSprovider-v0.6.1-4-g598a251.zip\mangui-HLSprovider-598a251\src\org\mangui\HLS\muxing\PES.as in function parse():

/** When all data is appended, parse the PES headers. **/
private function parse() : void {
data.position = 0;
// Start code prefix and packet ID.
var prefix : Number = data.readUnsignedInt();
/*Audio streams (0x1C0-0x1DF)
Video streams (0x1E0-0x1EF)
0x1BD is special case, could be audio or video (ffmpeg\libavformat\mpeg.c)
*/
if ((audio && (prefix > 0x1df || prefix < 0x1c0 && prefix != 0x1bd)) || (!audio && prefix != 0x1e0 && prefix != 0x1ea && prefix != 0x1bd)) {
throw new Error("PES start code not found or not AAC/AVC: " + prefix);
}

The error is in the line with

if ((audio && (prefix > 0x1df || prefix < 0x1c0 && prefix != 0x1bd)) || (!audio && prefix != 0x1e0 && prefix != 0x1ea && prefix != 0x1bd))


since our start code prefix + packet ID = 484 = 0x1E4 and this should be a valid video stream ID, see above: Video streams (0x1E0-0x1EF) but the redline code seems that only accepts 3 fixed video IDs 0x1e0, 0x1ea and 0x1bd which is incorrect, this should accept all range of video ID’s from 0x1E0 to 0x1EF.

So it should be corrected in the HLSprovider plugin source code or corrected in the JW-Player version.

Br, FS

This question has received the maximum number of answers.