lihaosky / google-cast-sdk

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

HLS not loading #348

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Cast any .m3u8 file 
2.
3.

Tried Casting .mp4 on custom reciever. It works, but none of the .m3u8 files 
does not play. The customer receiver also included latest version of cast media 
library. CORS is also enabled. Getting Fatal Error : code = 3 for host state.

Please find the attached console log for the issue.
https://drive.google.com/file/d/0B4E8KjLk5rqDR0pMcVZLdk54MlU/edit?usp=sharing

What is the expected output? 
Play m3u8 video.

What do you see instead?
Meta data is loading but video is not playing. 

m3u8 Information:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2050400,CODECS="avc1.4d001f,mp4a.40.5",
RESOLUTION=960x540
ROTOX012V_iphone_hi.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=730400,CODECS="avc1.66.30,mp4a.40.5",RE
SOLUTION=640x360
ROTOX012V_iphone_med.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=290400,CODECS="avc1.66.30,mp4a.40.5",RE
SOLUTION=416x234
ROTOX012V_iphone_low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5020400,CODECS="avc1.4d001f,mp4a.40.5",
RESOLUTION=1280x720
ROTOX012V_ipad_hi.m3u8

Original issue reported on code.google.com by sankar.b...@gmail.com on 31 Jul 2014 at 11:54

GoogleCodeExporter commented 9 years ago
Try these with our Default or Styled receiver. Issue is most likely in your own 
receiver since we know our receivers (Default or Styled) work for many HLS 
streams. In future, please include your stream and log from chrome console that 
is connected to your chromecast device

Original comment by anad...@google.com on 31 Jul 2014 at 2:38

GoogleCodeExporter commented 9 years ago
Tried in both the Default and Styled media receiver, it didn't work. Three is 
no console log available for default and styled media receiver. The custom 
reciever we used is also example from Google. If our custom reciever can play 
mp4 and all other file formats but cannot play HLS, how come this will be an 
issue with custom reciever ?

Does Google has any documentation for the error codes listed ? What does Fatal 
Error: Code = 3 mean ?

Original comment by sankar.b...@gmail.com on 2 Aug 2014 at 5:52

GoogleCodeExporter commented 9 years ago
All receivers have console log, see 
https://developers.google.com/cast/docs/custom_receiver and search for 
debugging. 

Original comment by anad...@google.com on 2 Aug 2014 at 6:08

GoogleCodeExporter commented 9 years ago
Hi 

Console log is not available for Styled media receiver and default receiver. 
How can we access it ?

Original comment by sankar.b...@gmail.com on 4 Aug 2014 at 7:44

GoogleCodeExporter commented 9 years ago
Please find attached the console log for Custom Receiver

### Application Loaded. Starting system. sample_media_receiver.html:103
 [  0.373s] [cast.receiver.CastReceiverManager] Version: 2.0.0.0008 cast_receiver.js:18
 [  0.401s] [cast.receiver.IpcChannel] Opening message bus websocket cast_receiver.js:18
 [  0.409s] [goog.net.WebSocket] Opening the WebSocket on ws://localhost:8008/v2/ipc cast_receiver.js:18
 [  0.568s] [goog.net.WebSocket] WebSocket opened on ws://localhost:8008/v2/ipc cast_receiver.js:18
 [  0.582s] [cast.receiver.IpcChannel] IpcChannel opened cast_receiver.js:18
 [  0.585s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [  0.594s] [cast.receiver.CastReceiverManager] Underlying message bus is open cast_receiver.js:18
 [  0.609s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender","data":"{\"type\":\"ready\",\"statusText\":\"Ready to play\",\"activeNamespaces\":[\"urn:x-cast:com.google.devrel.custom\",\"urn:x-cast:com.google.cast.media\"],\"version\":\"2.0.0\",\"messagesVersion\":\"1.0\"}"} cast_receiver.js:18
 [  0.626s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender","data":"{\"type\":\"startheartbeat\",\"maxInactivity\":6000}"} cast_receiver.js:18
 [  0.635s] [cast.receiver.IpcChannel] Received message: {"data":"{\"applicationId\":\"9FC4B5C1\",\"applicationName\":\"FNTSY - CUSTOM REC\",\"launchingSenderId\":\"10:com.ihorse.chromecast-6\",\"messagesVersion\":\"1.0\",\"sessionId\":\"BB208BAF-FC87-71B2-1F26-C494D80DB2A9\",\"type\":\"ready\",\"version\":\"1.0\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"} cast_receiver.js:18
 [  0.641s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [  0.643s] [cast.receiver.CastReceiverManager] Dispatching CastReceiverManager system ready event cast_receiver.js:18
### Cast Receiver Manager is READY: 
{"type":"ready","H":false,"defaultPrevented":false,"cb":true,"data":{"id":"9FC4B
5C1","name":"FNTSY - CUSTOM 
REC","sessionId":"BB208BAF-FC87-71B2-1F26-C494D80DB2A9","namespaces":["urn:x-cas
t:com.google.devrel.custom","urn:x-cast:com.google.cast.media"],"launchingSender
Id":"10:com.ihorse.chromecast-6"}} sample_media_receiver.html:137
 [  0.687s] [cast.receiver.IpcChannel] Received message: {"data":"{\"senderId\":\"10:com.ihorse.chromecast-6\",\"type\":\"senderconnected\",\"userAgent\":\"Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"} cast_receiver.js:18
 [  0.694s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [  0.697s] [cast.receiver.CastReceiverManager] Dispatching CastReceiverManager sender connected event [10:com.ihorse.chromecast-6] cast_receiver.js:18
 [  0.699s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.devrel.custom, 10:com.ihorse.chromecast-6] cast_receiver.js:18
 [  0.705s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.cast.media, 10:com.ihorse.chromecast-6] cast_receiver.js:18
### Cast Receiver Manager - Sender Connected : 
{"type":"senderconnected","H":false,"defaultPrevented":false,"cb":true,"data":"1
0:com.ihorse.chromecast-6","senderId":"10:com.ihorse.chromecast-6","userAgent":"
Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4"} 
sample_media_receiver.html:150
 [  0.720s] [cast.receiver.IpcChannel] Received message: {"data":"{\"type\":\"GET_STATUS\",\"requestId\":1}","namespace":"urn:x-cast:com.google.cast.media","senderId":"10:com.ihorse.chromecast-6"} cast_receiver.js:18
 [  0.722s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [  0.725s] [cast.receiver.MediaManager] MediaManager message received cast_receiver.js:18
 [  0.727s] [cast.receiver.MediaManager] Dispatching MediaManager getStatus event cast_receiver.js:18
### Media Manager - GET STATUS: 
{"type":"getstatus","H":false,"defaultPrevented":false,"cb":true,"data":{"reques
tId":1},"senderId":"10:com.ihorse.chromecast-6"} sample_media_receiver.html:298
 [  0.731s] [cast.receiver.MediaManager] onGetStatus cast_receiver.js:18
 [  0.733s] [cast.receiver.MediaManager] Sending status message to 10:com.ihorse.chromecast-6 cast_receiver.js:18
 [  0.736s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.media","senderId":"10:com.ihorse.chromecast-6","data":"{\"type\":\"MEDIA_STATUS\",\"status\":[],\"requestId\":1}"} cast_receiver.js:18
 [  0.777s] [cast.receiver.IpcChannel] Received message: {"data":"{\"currentTime\":0,\"type\":\"LOAD\",\"media\":{\"streamType\":\"BUFFERED\",\"duration\":0,\"contentType\":\"application\\/vnd.apple.mpegurl\",\"contentId\":\"http:\\/\\/vod.fantasysportsnetwork.com\\/s\\/web_vod\\/current\\/70000788V\\/70000788V.m3u8?cp=%2Fs%2Fweb_vod%2Fcurrent%2F70000788V%2F*&cf=1407158680&e=1407158680&h=5f42072041dc37e91f47639cbe5a87b3\",\"metadata\":{\"subtitle\":\"ROTOEXPERTS\",\"studio\":\"ROTOEXPERTS\",\"images\":[{\"url\":\"http:\\/\\/54.200.114.213\\/videocms\\/posters\\/70000788V.jpg\",\"height\":0,\"width\":0},{\"url\":\"http:\\/\\/54.200.114.213\\/videocms\\/posters\\/70000788V.jpg\",\"height\":0,\"width\":0}],\"title\":\"ROTOEXPERTS\",\"metadataType\":1}},\"requestId\":2,\"autoplay\":true}","namespace":"urn:x-cast:com.google.cast.media","senderId":"10:com.ihorse.chromecast-6"} cast_receiver.js:18
 [  0.778s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [  0.779s] [cast.receiver.MediaManager] MediaManager message received cast_receiver.js:18
 [  0.780s] [cast.receiver.MediaManager] Dispatching MediaManager load event cast_receiver.js:18
### Media Manager - LOAD: 
{"type":"load","H":false,"defaultPrevented":false,"cb":true,"data":{"currentTime
":0,"media":{"streamType":"BUFFERED","duration":0,"contentType":"application/vnd
.apple.mpegurl","contentId":"http://vod.fantasysportsnetwork.com/s/web_vod/curre
nt/70000788V/70000788V.m…0000788V%2F*&cf=1407158680&e=1407158680&h=5f42072041d
c37e91f47639cbe5a87b3","metadata":{"subtitle":"ROTOEXPERTS","studio":"ROTOEXPERT
S","images":[{"url":"http://54.200.114.213/videocms/posters/70000788V.jpg","heig
ht":0,"width":0},{"url":"http://54.200.114.213/videocms/posters/70000788V.jpg","
height":0,"width":0}],"title":"ROTOEXPERTS","metadataType":1}},"requestId":2,"au
toplay":true},"senderId":"10:com.ihorse.chromecast-6"} 
sample_media_receiver.html:466
### Media Protocol Identified as m3u8 sample_media_receiver.html:509
######### MEDIA ELEMENT LOAD START sample_media_receiver.html:573
XMLHttpRequest cannot load 
http://vod.fantasysportsnetwork.com/s/web_vod/current/70000788V/70000788V.m…00
00788V%2F*&cf=1407158680&e=1407158680&h=5f42072041dc37e91f47639cbe5a87b3. No 
'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://54.200.114.213' is therefore not allowed access. 
sample_media_receiver.html:1
### HOST ERROR - Fatal Error: code = 3 sample_media_receiver.html:487
######### MEDIA ELEMENT STALLED sample_media_receiver.html:597
 [ 62.745s] [cast.receiver.IpcChannel] Received message: {"data":"{\"reason\":\"transport_closed\",\"senderId\":\"10:com.ihorse.chromecast-6\",\"type\":\"senderdisconnected\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"} cast_receiver.js:18
 [ 62.755s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [ 62.779s] [cast.receiver.CastReceiverManager] Dispatching sender disconnected event [10:com.ihorse.chromecast-6] Reason: unknown cast_receiver.js:18
 [ 62.790s] [cast.receiver.CastMessageBus] Unregistering sender [urn:x-cast:com.google.devrel.custom, 10:com.ihorse.chromecast-6] cast_receiver.js:18
 [ 62.794s] [cast.receiver.CastMessageBus] Unregistering sender [urn:x-cast:com.google.cast.media, 10:com.ihorse.chromecast-6] cast_receiver.js:18
### Cast Receiver Manager - Sender Disconnected : 
{"type":"senderdisconnected","H":false,"defaultPrevented":false,"cb":true,"data"
:"10:com.ihorse.chromecast-6","senderId":"10:com.ihorse.chromecast-6","userAgent
":"Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4","reason":"unknown"} 
sample_media_receiver.html:166
 [ 63.473s] [cast.receiver.IpcChannel] Received message: {"data":"{\"senderId\":\"15:com.ihorse.chromecast-7\",\"type\":\"senderconnected\",\"userAgent\":\"Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"} cast_receiver.js:18
 [ 63.478s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [ 63.482s] [cast.receiver.CastReceiverManager] Dispatching CastReceiverManager sender connected event [15:com.ihorse.chromecast-7] cast_receiver.js:18
 [ 63.488s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.devrel.custom, 15:com.ihorse.chromecast-7] cast_receiver.js:18
 [ 63.492s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.cast.media, 15:com.ihorse.chromecast-7] cast_receiver.js:18
### Cast Receiver Manager - Sender Connected : 
{"type":"senderconnected","H":false,"defaultPrevented":false,"cb":true,"data":"1
5:com.ihorse.chromecast-7","senderId":"15:com.ihorse.chromecast-7","userAgent":"
Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4"} 
sample_media_receiver.html:150
 [ 78.695s] [cast.receiver.IpcChannel] Received message: {"data":"{\"reason\":\"transport_closed\",\"senderId\":\"15:com.ihorse.chromecast-7\",\"type\":\"senderdisconnected\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"} cast_receiver.js:18
 [ 78.700s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [ 78.705s] [cast.receiver.CastReceiverManager] Dispatching sender disconnected event [15:com.ihorse.chromecast-7] Reason: unknown cast_receiver.js:18
 [ 78.713s] [cast.receiver.CastMessageBus] Unregistering sender [urn:x-cast:com.google.devrel.custom, 15:com.ihorse.chromecast-7] cast_receiver.js:18
 [ 78.718s] [cast.receiver.CastMessageBus] Unregistering sender [urn:x-cast:com.google.cast.media, 15:com.ihorse.chromecast-7] cast_receiver.js:18
### Cast Receiver Manager - Sender Disconnected : 
{"type":"senderdisconnected","H":false,"defaultPrevented":false,"cb":true,"data"
:"15:com.ihorse.chromecast-7","senderId":"15:com.ihorse.chromecast-7","userAgent
":"Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4","reason":"unknown"} 
sample_media_receiver.html:166
 [ 79.369s] [cast.receiver.IpcChannel] Received message: {"data":"{\"senderId\":\"16:com.ihorse.chromecast-8\",\"type\":\"senderconnected\",\"userAgent\":\"Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"} cast_receiver.js:18
 [ 79.374s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message cast_receiver.js:18
 [ 79.378s] [cast.receiver.CastReceiverManager] Dispatching CastReceiverManager sender connected event [16:com.ihorse.chromecast-8] cast_receiver.js:18
 [ 79.383s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.devrel.custom, 16:com.ihorse.chromecast-8] cast_receiver.js:18
 [ 79.388s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.cast.media, 16:com.ihorse.chromecast-8] cast_receiver.js:18
### Cast Receiver Manager - Sender Connected : 
{"type":"senderconnected","H":false,"defaultPrevented":false,"cb":true,"data":"1
6:com.ihorse.chromecast-8","senderId":"16:com.ihorse.chromecast-8","userAgent":"
Android CastSDK,5089000,Nexus 5,hammerhead,4.4.4"} 

Original comment by sankar.b...@gmail.com on 4 Aug 2014 at 1:03

GoogleCodeExporter commented 9 years ago
Here is the log from default receiver. Seem like CORS not enabled for 
gstatic.com domain. Please correct me. 

 [  0.287s] [goog.net.WebSocket] Opening the WebSocket on ws://localhost:8008/v2/ipc cast_receiver.js:18
 [  0.435s] [goog.net.WebSocket] WebSocket opened on ws://localhost:8008/v2/ipc cast_receiver.js:18
2
The page at 
'https://www.gstatic.com/eureka/player/player.html?skin=https://www.gstatic.com/
eureka/player/0000/skins/cast/skin.css' was loaded over HTTPS, but displayed 
insecure content from 'http://54.200.114.213/videocms/posters/70000788V.jpg': 
this content should also be loaded over HTTPS.
 player.html:1
The page at 
'https://www.gstatic.com/eureka/player/player.html?skin=https://www.gstatic.com/
eureka/player/0000/skins/cast/skin.css' was loaded over HTTPS, but ran insecure 
content from 
'http://vod.fantasysportsnetwork.com/s/web_vod/current/70000788V/70000788V.m…0
000788V%2F*&cf=1407161868&e=1407161868&h=9b26cbaf6d9a495531e785332a971182': 
this content should also be loaded over HTTPS.
 player.html:1
XMLHttpRequest cannot load 
http://vod.fantasysportsnetwork.com/s/web_vod/current/70000788V/70000788V.m…00
00788V%2F*&cf=1407161868&e=1407161868&h=9b26cbaf6d9a495531e785332a971182. No 
'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'https://www.gstatic.com' is therefore not allowed access. player.html:1
 [  3.393s] [cast.receiver.MediaManager] Load metadata error cast_receiver.js:18

Original comment by sankar.b...@gmail.com on 4 Aug 2014 at 1:29

GoogleCodeExporter commented 9 years ago
CORS need to be enabled on vod.fantasysportsnetwork.com for the server you are 
hosting the receiver app.

Original comment by lnicho...@google.com on 4 Aug 2014 at 2:11

GoogleCodeExporter commented 9 years ago
Thanks 

Original comment by sankar.b...@gmail.com on 6 Aug 2014 at 5:19

GoogleCodeExporter commented 9 years ago
Hi

Now we rectified with CORS but we have problem with URL hashing.

We send chromecast, an url with hashing (for security purpose)
Example:
http://domainname.com/70000871V/70000871V.m3u8?cp=%2FsFcurrent%2F70000871V%2F*&c
f=1403&e=1493&h=cbc90

The above is basically an m3u8 video index file, chromecast looks into the 
index file and chooses a resolution to play, when it accesses the child file, 
it removes the hashing provided in the url. This results in chromecast not able 
to access the child file because it removed the hashing paramaters in url.

Consider m3u8 file contains some files like 70000871V_iphone_med.m3u8, so when 
it tries to access them, it removes the hashing...

How to tell chromecast to keep the hashing parameters when it accesses the 
index file.

Original comment by smartjea...@gmail.com on 25 Aug 2014 at 2:46