tulei555 / google-cast-sdk

Automatically exported from code.google.com/p/google-cast-sdk
0 stars 1 forks source link

Chromecast is unable to play some VOD HLS streams #477

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?

1. Extract and upload this VOD HLS content to a HTTP server: 
https://dl.dropboxusercontent.com/u/8261657/hls-vod-chromecast.zip
2. Try playing this content with Chromecast

What is the expected output? What do you see instead?

The content plays fine with iOS devices, Safari on Mac, VLC and many other 
players but it refuses to play with Chromecast. The HTML5 video element just 
triggers the an error event. The cast player API triggers the 
"cast.player.api.ErrorCode.MANIFEST" error.

What version of the product are you using? On what operating system?

Chromecast firmware version 22062

Please provide any additional information below.

Link to sample content: 
https://dl.dropboxusercontent.com/u/8261657/hls-vod-chromecast.zip

Original issue reported on code.google.com by mikroh...@gmail.com on 7 Jan 2015 at 10:38

GoogleCodeExporter commented 8 years ago
Could you please call

cast.player.api.setLoggerLevel(cast.player.api.LoggerLevel.DEBUG);

in your receiver app, repro again, and attach the logs to the issue?

Original comment by vadi...@google.com on 7 Jan 2015 at 7:09

GoogleCodeExporter commented 8 years ago
What version of MPL is your receiver app using? With MPL 1.0.0 the manifest in 
the zip file you attached is parsed without errors.

Original comment by vadi...@google.com on 7 Jan 2015 at 7:16

GoogleCodeExporter commented 8 years ago
I checked once again. The manifest error happened on an older MPL version... 
the 1.0 version triggers a "cast.player.api.ErrorCode.PLAYBACK" error. Sorry 
about the confusion.

The debug log is attached.

Original comment by mikroh...@gmail.com on 8 Jan 2015 at 7:53

Attachments:

GoogleCodeExporter commented 8 years ago
Your stream fails here

https://code.google.com/p/chromium/codesearch#chromium/src/media/formats/mp2t/ts
_section_pat.cc&l=89

  // Both the MSE and the HLS spec specifies that TS streams should convey
  // exactly one program.
  if (pmt_pid_count > 1) {
    DVLOG(1) << "Multiple programs detected in the Mpeg2 TS stream";
    return false;
  }

Original comment by vadi...@google.com on 8 Jan 2015 at 6:18

GoogleCodeExporter commented 8 years ago
OK... I understand. I guess we'll have to remux our content.

Thanks for the info.

Original comment by mikroh...@gmail.com on 8 Jan 2015 at 6:30

GoogleCodeExporter commented 8 years ago

Original comment by jonathan...@google.com on 8 Jan 2015 at 7:05

GoogleCodeExporter commented 8 years ago
Your evaluation of this issue is incorrect.

HLS spec says: Transport Stream segments MUST contain a single MPEG-2 Program.

ISO 13818-1 section 2.4.4.3 (the MPEG-TS spec) says: The network_PID is a 
13-bit field, which is used only in conjunction with the value of the
program_number set to 0x0000, specifies the PID of the Transport Stream packets 
which shall contain the Network
Information Table.

In short PAT entry with program_number == 0 defines a NIT and NOT a program 
entry. In effect the PAT in question has 1 program entry and 1 NIT entry and 
NOT 2 program entries. Your code is incorrect.

Original comment by alen.vre...@gmail.com on 17 Mar 2016 at 8:33

GoogleCodeExporter commented 8 years ago
By program entry I mean MPEG-2 Program entry. A NIT entry is not an MPEG-2 
Program entry, not by a long shot.

Original comment by alen.vre...@gmail.com on 17 Mar 2016 at 9:04