Cast devices freeze when casting audio streams - chromecast

I have an issue with casting some third party audio streams. I have relied heavily on https://developers.google.com/cast/docs/player and followed those instructions on how to create a custom receiver for playing the streams.
After just a second or so after starting the stream (I don't get any sound) the Cast devices freezes and they stop responding to debug via Chrome and they don't react to stopping the Cast session. Often they are so locked that even issuing a reboot via the Home app doesn't work; I have to physically disconnect the power.
It's the same behaviour on Chromecast v2 (1.22.79313), Chromecast Ultra (1.22.78017) and Google Home (1.22.78295).
What could the cause of this freeze be? Is this caused by some very broken streams? Is it a known issue? Are there any workarounds? Shouldn't one expect the Cast devices to handle this and give some error message and not crash like this?
This is the log I get from the Chrome Developer Tools before the connection is reset:
cast_receiver.js:67 [ 0.268s] [cast.receiver.IpcChannel] Opening platform websocket
cast_receiver.js:67 [ 0.292s] [cast.receiver.CastReceiverManager] Version: 2.0.0.0049
cast_receiver.js:67 [ 0.305s] [cast.receiver.MediaManager] Using default Player
cast_receiver.js:67 [ 0.314s] [cast.receiver.IpcChannel] Opening message bus websocket
cast_receiver.js:67 [ 0.322s] [cast.receiver.IpcChannel] IpcChannel opened
cast_receiver.js:67 [ 0.326s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message
cast_receiver.js:67 [ 0.333s] [cast.receiver.CastReceiverManager] Underlying message bus is open
[...]
media_player.js:25 [ 0.628s] [cast.player.api.Player] Version: 1.0.0.40
[...]
media_player.js:25 [ 6.682s] [cast.player.api.Player] load
media_player.js:25 [ 6.707s] [goog.net.XhrIo] Opening Xhr [GET http://thirdpartyserver.example.com/playlist.m3u8 -1]
media_player.js:25 [ 6.721s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://thirdpartyserver.example.com/playlist.m3u8 -1]
media_player.js:25 [ 6.725s] [goog.net.XhrIo] Sending request [GET http://thirdpartyserver.example.com/playlist.m3u8 -1]
media_player.js:51 Mixed Content: The page at 'https://example.com/custom_receiver.html?debug=true' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://thirdpartyserver.example.com/playlist.m3u8'. This content should also be served over HTTPS.
media_player.js:25 [ 6.735s] [cast.player.core.MediaSourceManager] open
media_player.js:25 [ 6.923s] [goog.net.XhrIo] Request complete [GET http://thirdpartyserver.example.com/playlist.m3u8 200]
media_player.js:25 [ 6.975s] [cast.player.core.QualityManager] 0: initial 82625
media_player.js:25 [ 6.986s] [cast.player.hls.Playlist] update: http://thirdpartyserver.example.com/chunklist_w941582493.m3u8
media_player.js:25 [ 6.993s] [goog.net.XhrIo] Opening Xhr [GET http://thirdpartyserver.example.com/chunklist_w941582493.m3u8 -1]
media_player.js:25 [ 6.999s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://thirdpartyserver.example.com/chunklist_w941582493.m3u8 -1]
media_player.js:25 [ 7.004s] [goog.net.XhrIo] Sending request [GET http://thirdpartyserver.example.com/chunklist_w941582493.m3u8 -1]
media_player.js:51 Mixed Content: The page at 'https://example.com/custom_receiver.html?debug=true' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://thirdpartyserver.example.com/chunklist_w941582493.m3u8'. This content should also be served over HTTPS.
media_player.js:25 [ 7.127s] [goog.net.XhrIo] Request complete [GET http://thirdpartyserver.example.com/chunklist_w941582493.m3u8 200]
media_player.js:25 [ 7.140s] [cast.player.hls.Playlist] update in: 3000
media_player.js:25 [ 7.161s] [cast.player.core.SegmentManager] 0: seek success 0
media_player.js:25 [ 7.169s] [goog.net.XhrIo] Opening Xhr [GET http://thirdpartyserver.example.com/media_w941582493_4220443.aac -1]
media_player.js:25 [ 7.174s] [goog.net.XhrIo] Will abort after 10000ms if incomplete, xhr2 false [GET http://thirdpartyserver.example.com/media_w941582493_4220443.aac -1]
media_player.js:25 [ 7.180s] [goog.net.XhrIo] Sending request [GET http://thirdpartyserver.example.com/media_w941582493_4220443.aac -1]
media_player.js:51 Mixed Content: The page at 'https://example.com/custom_receiver.html?debug=true' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://thirdpartyserver.example.com/media_w941582493_4220443.aac'. This content should also be served over HTTPS.
media_player.js:25 [ 7.311s] [goog.net.XhrIo] Request complete [GET http://thirdpartyserver.example.com/media_w941582493_4220443.aac 200]
media_player.js:25 [ 7.322s] [cast.player.core.QualityManager] 0: current=1018961.04, average=1444314.43
media_player.js:25 [ 7.330s] [cast.player.core.SegmentManager] 0: process segment
media_player.js:25 [ 7.338s] [cast.player.hls.Adaptation] process segment
media_player.js:25 [ 7.357s] [cast.player.core.SegmentManager] 0: segment processed
media_player.js:25 [ 7.363s] [cast.player.core.SourceBufferManager] 0: queue append
media_player.js:25 [ 7.382s] [goog.net.XhrIo] Opening Xhr [GET http://thirdpartyserver.example.com/media_w941582493_4220444.aac -1]
media_player.js:25 [ 7.387s] [goog.net.XhrIo] Will abort after 10000ms if incomplete, xhr2 false [GET http://thirdpartyserver.example.com/media_w941582493_4220444.aac -1]
media_player.js:25 [ 7.392s] [goog.net.XhrIo] Sending request [GET http://thirdpartyserver.example.com/media_w941582493_4220444.aac -1]
media_player.js:51 Mixed Content: The page at 'https://example.com/custom_receiver.html?debug=true' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://thirdpartyserver.example.com/media_w941582493_4220444.aac'. This content should also be served over HTTPS.
media_player.js:25 [ 7.515s] [goog.net.XhrIo] Request complete [GET http://thirdpartyserver.example.com/media_w941582493_4220444.aac 200]
media_player.js:25 [ 7.521s] [cast.player.core.QualityManager] 0: current=1113553.96, average=1179706.05
media_player.js:25 [ 7.528s] [cast.player.core.SegmentManager] 0: process segment
media_player.js:25 [ 7.533s] [cast.player.hls.Adaptation] process segment
Update - more info:
The response headers for that first request (playlist.m3u8) are as follows:
Accept-Ranges:bytes
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range
Access-Control-Allow-Methods:OPTIONS, GET, POST, HEAD
Access-Control-Allow-Origin:*
Access-Control-Expose-Headers:Date, Server, Content-Type, Content-Length
Cache-Control:no-cache
Content-Length:105
Content-Type:application/vnd.apple.mpegurl
Date:Tue, 21 Mar 2017 13:44:37 GMT
Server:WowzaStreamingEngine/4.5.0
The response body for that first request (playlist.m3u8) is as follows:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=80053,CODECS="mp4a.40.2"
chunklist_w941582493.m3u8
The response headers for that second request (chunklist_w941582493.m3u8) are as follows:
Accept-Ranges:bytes
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range
Access-Control-Allow-Methods:OPTIONS, GET, POST, HEAD
Access-Control-Allow-Origin:*
Access-Control-Expose-Headers:Date, Server, Content-Type, Content-Length
Cache-Control:no-cache
Content-Length:213
Content-Type:application/vnd.apple.mpegurl
Date:Tue, 21 Mar 2017 13:44:37 GMT
Server:WowzaStreamingEngine/4.5.0
The response body for that second request (chunklist_w941582493.m3u8) is typical something as follows:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:4272014
#EXTINF:1.95,
media_w1552860397_4272014.aac
#EXTINF:2.09,
media_w1552860397_4272015.aac
#EXTINF:1.95,
media_w1552860397_4272016.aac
The response headers for that second request (media_w941582493_4220443.aac) are as follows:
Accept-Ranges:bytes
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range
Access-Control-Allow-Methods:OPTIONS, GET, POST, HEAD
Access-Control-Allow-Origin:*
Access-Control-Expose-Headers:Date, Server, Content-Type, Content-Length
Cache-Control:no-cache
Content-Length:19757
Content-Type:audio/x-aac
Date:Tue, 21 Mar 2017 13:44:37 GMT
Server:WowzaStreamingEngine/4.5.0

Searching the bug tracker for the Google Cast SDK I found a relevant bug report.
All I had to do was to add cast.player.api.HlsSegmentFormat.MPEG_AUDIO_ES to cast.player.api.CreateHlsStreamingProtocol(). Now the stream works just fine and the Cast devices don't crash or freeze.

Related

Log Api Gateway request/response body/headers to ElasticSearch

It's easy to setup it by default, but i cannot change the format of messages. It sends to CloudWatch
Api Gateway works as proxy
2019-03-15 13:31:22.248 (REQ_ID) Method completed with status: 200
2019-03-15 13:31:22.248 (REQ_ID) Successfully completed execution
2019-03-15 13:31:22.248 (REQ_ID) Method response headers:
{Cache-Control=max-age=0, private, must-revalidate,
Content-Type=application/json; charset=utf-8, Date=Fri, 15 Mar 2019
13:31:22 GMT, ETag=W/"607046c7bacdeee5e27e99f48fa2e053",
Server=nginx/1.12.1 + Phusion Passenger 4.0.60, Status=200 OK,
Vary=Accept-Encoding, Origin, X-Content-Type-Options=nosniff,
X-Frame-Options=SAMEORIGIN, X-Powered-By=Phusion Passenger 4.0.60,
X-Request-Id=88c8f3c2-0a25-4445-9010-30d4753b855a, X-Runtime=0.030736,
X-XSS-Protection=1; mode=block, Connection=keep-alive}
2019-03-15 13:31:22.248 (REQ_ID) Method response body after
transformations: {"success":1,"message":"Token is invalid"}
2019-03-15 13:31:22.248 (REQ_ID) Endpoint response headers:
{Cache-Control=max-age=0, private, must-revalidate,
Content-Type=application/json; charset=utf-8, Date=Fri, 15 Mar 2019
13:31:22 GMT, ETag=W/"607046c7bacdeee5e27e99f48fa2e053",
Server=nginx/1.12.1 + Phusion Passenger 4.0.60, Status=200 OK,
Vary=Accept-Encoding, Origin, X-Content-Type-Options=nosniff,
X-Frame-Options=SAMEORIGIN, X-Powered-By=Phusion Passenger 4.0.60,
X-Request-Id=88c8f3c2-0a25-4445-9010-30d4753b855a, X-Runtime=0.030736,
X-XSS-Protection=1; mode=block, transfer-encoding=chunked,
Connection=keep-alive}
2019-03-15 13:31:22.248 (REQ_ID) Endpoint response body before
transformations: {"success":1,"message":"Token is invalid"}
2019-03-15 13:31:22.248 (REQ_ID) Received response. Integration
latency: 43 ms
2019-03-15 13:31:22.205 (REQ_ID) Sending request to
https://proxy.domain.com/api/endpoint
2019-03-15 13:31:22.205 (REQ_ID) Endpoint request body after
transformations: {"message":"hello world"}
2019-03-15 13:31:22.205 (REQ_ID) Endpoint request headers:
{x-amzn-apigateway-api-id=API, User-Agent=curl/7.54.0,
X-Forwarded-Proto=https, X-Forwarded-For=195.24.159.254,
content-type=application/json, X-Forwarded-Port=443,
X-Amzn-Trace-Id=Root=1-5c8ba92a-7fb7fa94b9991bb8f1561d55, accept=/}
2019-03-15 13:31:22.205 (REQ_ID) Endpoint request URI:
https://proxy.domain.com/api/endpoint
2019-03-15 13:31:22.119 (REQ_ID) Method request body before
transformations: {"message":"hello world"}
2019-03-15 13:31:22.119 (9f76246a-4726-11e9-a18d-25bda2ff1f7b) Method
request headers: {User-Agent=curl/7.54.0, X-Forwarded-Proto=https,
X-Forwarded-For=195.24.159.254, content-type=application/json,
Host=api.execute-api.eu-west-1.amazonaws.com, X-Forwarded-Port=443,
X-Amzn-Trace-Id=Root=1-5c8ba92a-7fb7fa94b9991bb8f1561d55, accept=/}
2019-03-15 13:31:22.119 (REQ_ID) Method request query string: {}
2019-03-15 13:31:22.119 (REQ_ID) Method request path:
{proxy=api/endpoint}
I need to send in JSON these 4 columns only: request_header, request_body, response_header, response_body to ES. Now it sends all the logs above for each request.

http2 client failed to parse HTTP Upgrade response header

I'm tryng to use nghttpd server to test HTTP/2.0. To start it i'm using:
nghttpd -v -d ~/Desktop/www 9000 --no-tls
In client terminal, i type:
nghttp -nvu http://127.0.0.1:9000
And i have this output in the client terminal
[ 0.000] Connected
[ 0.000] HTTP Upgrade request
GET / HTTP/1.1
host: 127.0.0.1:9000
connection: Upgrade, HTTP2-Settings
upgrade: h2c
http2-settings: AAMAAABkAAQAAP__
accept: */*
user-agent: nghttp2/1.35.1
[ERROR] Failed to parse HTTP Upgrade response header:
(HPE_INVALID_CONSTANT) invalid constant string
Some requests were not processed. total=1, processed=0
in the server terminal
IPv6: listen :::9000
IPv4: listen 0.0.0.0:9000
[id=1] [ 5.803] send SETTINGS frame <length=6, flags=0x00, stream_id=0>
(niv=1)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[id=1] [ 5.803] closed
How can i solve this?
nghttpd does not support upgrade. See this from the author. The client nghttp has no issues.
You can use nghttpx, the reverse proxy and your http2 server behind that.
$ nghttp -nvu http://nghttp2.org/
[ 1.104] Connected
[ 1.104] HTTP Upgrade request
GET / HTTP/1.1
host: nghttp2.org
connection: Upgrade, HTTP2-Settings
upgrade: h2c
http2-settings: AAMAAABkAAQAAP__
accept: */*
user-agent: nghttp2/1.30.0
[ 1.327] HTTP Upgrade response
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c
[ 1.327] HTTP Upgrade success
[ 1.327] recv SETTINGS frame <length=24, flags=0x00, stream_id=0>
(niv=4)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):1048576]
[UNKNOWN(0x08):1]
[SETTINGS_HEADER_TABLE_SIZE(0x01):8192]
[ 1.327] send SETTINGS frame <length=12, flags=0x00, stream_id=0>
(niv=2)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[ 1.327] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[ 1.327] send PRIORITY frame <length=5, flags=0x00, stream_id=3>
(dep_stream_id=0, weight=201, exclusive=0)
[ 1.327] send PRIORITY frame <length=5, flags=0x00, stream_id=5>
(dep_stream_id=0, weight=101, exclusive=0)
[ 1.327] send PRIORITY frame <length=5, flags=0x00, stream_id=7>
(dep_stream_id=0, weight=1, exclusive=0)
[ 1.327] send PRIORITY frame <length=5, flags=0x00, stream_id=9>
(dep_stream_id=7, weight=1, exclusive=0)
[ 1.327] send PRIORITY frame <length=5, flags=0x00, stream_id=11>
(dep_stream_id=3, weight=1, exclusive=0)
[ 1.327] send PRIORITY frame <length=5, flags=0x00, stream_id=1>
(dep_stream_id=11, weight=16, exclusive=0)
[ 1.332] recv (stream_id=1) :status: 200
[ 1.332] recv (stream_id=1) date: Mon, 17 Dec 2018 01:37:07 GMT
[ 1.332] recv (stream_id=1) content-type: text/html
[ 1.332] recv (stream_id=1) last-modified: Sun, 09 Dec 2018 15:35:09 GMT
[ 1.332] recv (stream_id=1) etag: "5c0d362d-19d8"
[ 1.332] recv (stream_id=1) accept-ranges: bytes
[ 1.332] recv (stream_id=1) content-length: 6616
[ 1.332] recv (stream_id=1) x-backend-header-rtt: 0.008122
[ 1.332] recv (stream_id=1) server: nghttpx
[ 1.332] recv (stream_id=1) via: 2 nghttpx
[ 1.332] recv (stream_id=1) x-frame-options: SAMEORIGIN
[ 1.332] recv (stream_id=1) x-xss-protection: 1; mode=block
[ 1.332] recv (stream_id=1) x-content-type-options: nosniff
[ 1.332] recv HEADERS frame <length=198, flags=0x04, stream_id=1>
; END_HEADERS
(padlen=0)
; First response header
[ 1.366] recv DATA frame <length=6616, flags=0x01, stream_id=1>
; END_STREAM
[ 1.366] send GOAWAY frame <length=8, flags=0x00, stream_id=0>
(last_stream_id=0, error_code=NO_ERROR(0x00), opaque_data(0)=[])
According the answer above. i make this
http2 server
nghttpd -v -d /Desktop/www --no-tls -a 127.0.0.1 9000
reverse proxy
nghttpx -b '127.0.0.1,9000;;proto=h2' -f '127.0.0.1,9001;no-tls' -L INFO -o
http2 client
nghttp -v http://127.0.0.1:9001/index.html

What website supports http/2 on port 80 with no SSL?

I would like to run a wireshark on http/2 for port 80 to
1. be able to test out an http/2 client
2. follow a wireshark trace to understand the protocol better
Is there a website that supports http/2 on port 80? When I go to google, it is always changing me to https.
thanks,
Dean
The Jetty project implements a HTTP/2 server that can work with both encrypted HTTP/2 and clear-text HTTP/2.
You can easily setup locally a Jetty h2c server with support for direct HTTP/2 communication as well as support for HTTP/1.1 upgrade to HTTP/2.
I recommend you don't bomb a public server with your experiments :)
This is the server code:
public class H2C
{
public static void main(String[] args) throws Exception
{
Server server = new Server();
HttpConfiguration config = new HttpConfiguration();
HttpConnectionFactory h1 = new HttpConnectionFactory(config);
HTTP2CServerConnectionFactory h2 = new HTTP2CServerConnectionFactory(config);
ServerConnector connector = new ServerConnector(server, h1, h2);
connector.setPort(8080);
server.addConnector(connector);
server.setHandler(new AbstractHandler()
{
#Override
protected void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
baseRequest.setHandled(true);
// Your code here.
}
});
server.start();
}
}
You can use a HTTP/2 client to test the server, such as nghttp, and watch the traffic via Wireshark.
Testing clear-text HTTP/2 via upgrade (using the -u flag, the -v flag is for verbosity):
$ nghttp -uv http://localhost:8080/
[ 0.000] Connected
[ 0.000] HTTP Upgrade request
GET / HTTP/1.1
host: localhost:8080
connection: Upgrade, HTTP2-Settings
upgrade: h2c
http2-settings: AAMAAABkAAQAAP__
accept: */*
user-agent: nghttp2/1.7.1
[ 0.001] HTTP Upgrade response
HTTP/1.1 101 Switching Protocols
[ 0.001] HTTP Upgrade success
[ 0.001] send SETTINGS frame <length=12, flags=0x00, stream_id=0>
(niv=2)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[ 0.001] send PRIORITY frame <length=5, flags=0x00, stream_id=3>
(dep_stream_id=0, weight=201, exclusive=0)
[ 0.001] send PRIORITY frame <length=5, flags=0x00, stream_id=5>
(dep_stream_id=0, weight=101, exclusive=0)
[ 0.001] send PRIORITY frame <length=5, flags=0x00, stream_id=7>
(dep_stream_id=0, weight=1, exclusive=0)
[ 0.001] send PRIORITY frame <length=5, flags=0x00, stream_id=9>
(dep_stream_id=7, weight=1, exclusive=0)
[ 0.001] send PRIORITY frame <length=5, flags=0x00, stream_id=11>
(dep_stream_id=3, weight=1, exclusive=0)
[ 0.001] send PRIORITY frame <length=5, flags=0x00, stream_id=1>
(dep_stream_id=11, weight=16, exclusive=0)
[ 0.001] recv SETTINGS frame <length=12, flags=0x00, stream_id=0>
(niv=2)
[SETTINGS_HEADER_TABLE_SIZE(0x01):4096]
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[ 0.001] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[ 0.002] recv (stream_id=1) :status: 200
[ 0.002] recv (stream_id=1) server: Jetty(9.4.z-SNAPSHOT)
[ 0.002] recv (stream_id=1) date: Fri, 20 May 2016 09:38:52 GMT
[ 0.002] recv HEADERS frame <length=45, flags=0x05, stream_id=1>
; END_STREAM | END_HEADERS
(padlen=0)
; First response header
[ 0.002] send GOAWAY frame <length=8, flags=0x00, stream_id=0>
(last_stream_id=0, error_code=NO_ERROR(0x00), opaque_data(0)=[])
Or testing clear-text HTTP/2 directly:
$ nghttp -v http://localhost:8080/
[ 0.000] Connected
[ 0.000] send SETTINGS frame <length=12, flags=0x00, stream_id=0>
(niv=2)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[ 0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=3>
(dep_stream_id=0, weight=201, exclusive=0)
[ 0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=5>
(dep_stream_id=0, weight=101, exclusive=0)
[ 0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=7>
(dep_stream_id=0, weight=1, exclusive=0)
[ 0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=9>
(dep_stream_id=7, weight=1, exclusive=0)
[ 0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=11>
(dep_stream_id=3, weight=1, exclusive=0)
[ 0.000] send HEADERS frame <length=38, flags=0x25, stream_id=13>
; END_STREAM | END_HEADERS | PRIORITY
(padlen=0, dep_stream_id=11, weight=16, exclusive=0)
; Open new stream
:method: GET
:path: /
:scheme: http
:authority: localhost:8080
accept: */*
accept-encoding: gzip, deflate
user-agent: nghttp2/1.7.1
[ 0.095] recv SETTINGS frame <length=12, flags=0x00, stream_id=0>
(niv=2)
[SETTINGS_HEADER_TABLE_SIZE(0x01):4096]
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[ 0.095] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[ 0.096] recv SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[ 0.105] recv (stream_id=13) :status: 200
[ 0.105] recv (stream_id=13) server: Jetty(9.4.z-SNAPSHOT)
[ 0.105] recv (stream_id=13) date: Fri, 20 May 2016 09:39:30 GMT
[ 0.105] recv HEADERS frame <length=45, flags=0x05, stream_id=13>
; END_STREAM | END_HEADERS
(padlen=0)
; First response header
[ 0.106] send GOAWAY frame <length=8, flags=0x00, stream_id=0>
(last_stream_id=0, error_code=NO_ERROR(0x00), opaque_data(0)=[])

Why 5 PRIORITY frames are sent from HTTP2 client before it sends a HEADERS frame ? Are they necessary for a successful HTTP2 connection?

I noticed that some HTTP2 clients (Firefox and nghttp) send 5 PRIORITY frames for stream 3, 5, 7, 9, 11 after http2 protocol is agreed and before they send a HEADERS frame. I am curious why? I know the meaning of PRIORITY frames, but I don't get the point of sending it, but both Firefox and nghttp do it, so there must be some reasons.
And most importantly, those streams (stream 3, 5, 7, 9, 11) are not used after PRIORITY frames according to the log.
Output information from server for Firefox is shown as follow.
$ nghttpd -d ~/Proxy 8080 key.pem cert.pem -v
Enter PEM pass phrase:
IPv4: listen 0.0.0.0:8080
IPv6: listen :::8080
[ALPN] client offers:
* h2
* spdy/3.1
* http/1.1
SSL/TLS handshake completed
The negotiated protocol: h2
[id=1] [ 18.917] send SETTINGS frame <length=6, flags=0x00, stream_id=0>
(niv=1)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[id=1] [ 18.920] recv SETTINGS frame <length=12, flags=0x00, stream_id=0>
(niv=2)
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):131072]
[SETTINGS_MAX_FRAME_SIZE(0x05):16384]
[id=1] [ 18.920] recv WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
(window_size_increment=12517377)
[id=1] [ 18.920] recv PRIORITY frame <length=5, flags=0x00, stream_id=3>
(dep_stream_id=0, weight=201, exclusive=0)
[id=1] [ 18.920] recv PRIORITY frame <length=5, flags=0x00, stream_id=5>
(dep_stream_id=0, weight=101, exclusive=0)
[id=1] [ 18.920] recv PRIORITY frame <length=5, flags=0x00, stream_id=7>
(dep_stream_id=0, weight=1, exclusive=0)
[id=1] [ 18.920] recv PRIORITY frame <length=5, flags=0x00, stream_id=9>
(dep_stream_id=7, weight=1, exclusive=0)
[id=1] [ 18.920] recv PRIORITY frame <length=5, flags=0x00, stream_id=11>
(dep_stream_id=3, weight=1, exclusive=0)
[id=1] [ 18.920] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[id=1] [ 18.926] recv SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[id=1] [ 25.773] recv (stream_id=13) :method: GET
[id=1] [ 25.773] recv (stream_id=13) :path: /plaintext.txt
[id=1] [ 25.773] recv (stream_id=13) :authority: 127.0.0.1:8080
[id=1] [ 25.773] recv (stream_id=13) :scheme: https
[id=1] [ 25.773] recv (stream_id=13) user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0
[id=1] [ 25.773] recv (stream_id=13) accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[id=1] [ 25.773] recv (stream_id=13) accept-language: en-US,en;q=0.5
[id=1] [ 25.773] recv (stream_id=13) accept-encoding: gzip, deflate, br
[id=1] [ 25.773] recv (stream_id=13) if-modified-since: Wed, 27 Apr 2016 13:10:07 GMT
[id=1] [ 25.773] recv HEADERS frame <length=196, flags=0x25, stream_id=13>
; END_STREAM | END_HEADERS | PRIORITY
(padlen=0, dep_stream_id=11, weight=32, exclusive=0)
; Open new stream
[id=1] [ 25.774] recv WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=13>
(window_size_increment=12451840)
[id=1] [ 25.774] send HEADERS frame <length=42, flags=0x05, stream_id=13>
; END_STREAM | END_HEADERS
(padlen=0)
; First response header
:status: 304
server: nghttpd nghttp2/1.8.0
date: Fri, 29 Apr 2016 08:07:25 GMT
[id=1] [ 25.774] stream_id=13 closed
But Chrome does not send them, as shown below. So they are not necessary for a successful connection?
$ nghttpd -d ~/Proxy 8080 key.pem cert.pem -v
Enter PEM pass phrase:
IPv4: listen 0.0.0.0:8080
IPv6: listen :::8080
[ALPN] client offers:
* h2
* spdy/3.1
* http/1.1
SSL/TLS handshake completed
The negotiated protocol: h2
[id=1] [ 16.069] send SETTINGS frame <length=6, flags=0x00, stream_id=0>
(niv=1)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[id=1] [ 16.083] closed
[ALPN] client offers:
* h2
* spdy/3.1
* http/1.1
SSL/TLS handshake completed
The negotiated protocol: h2
[id=2] [ 16.298] send SETTINGS frame <length=6, flags=0x00, stream_id=0>
(niv=1)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[id=2] [ 16.299] closed
[ALPN] client offers:
* h2
* spdy/3.1
* http/1.1
SSL/TLS handshake completed
The negotiated protocol: h2
[id=3] [ 16.303] send SETTINGS frame <length=6, flags=0x00, stream_id=0>
(niv=1)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
[id=3] [ 16.303] recv SETTINGS frame <length=12, flags=0x00, stream_id=0>
(niv=2)
[SETTINGS_MAX_CONCURRENT_STREAMS(0x03):1000]
[SETTINGS_INITIAL_WINDOW_SIZE(0x04):6291456]
[id=3] [ 16.303] recv WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
(window_size_increment=15663105)
[id=3] [ 16.303] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[id=3] [ 16.303] recv SETTINGS frame <length=0, flags=0x01, stream_id=0>
; ACK
(niv=0)
[id=3] [ 16.311] recv (stream_id=1) :method: GET
[id=3] [ 16.311] recv (stream_id=1) :authority: 127.0.0.1:8080
[id=3] [ 16.311] recv (stream_id=1) :scheme: https
[id=3] [ 16.311] recv (stream_id=1) :path: /plaintext.txt
[id=3] [ 16.311] recv (stream_id=1) accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[id=3] [ 16.311] recv (stream_id=1) upgrade-insecure-requests: 1
[id=3] [ 16.311] recv (stream_id=1) user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36
[id=3] [ 16.311] recv (stream_id=1) accept-encoding: gzip, deflate, sdch
[id=3] [ 16.311] recv (stream_id=1) accept-language: en-US,en;q=0.8
[id=3] [ 16.311] recv HEADERS frame <length=238, flags=0x25, stream_id=1
....
They are not required for a successful connection.
For the rest, I'm just guessing here. Firefox is using those streams as "virtual streams". Then it makes further real streams dependent on those virtual streams. The effect should be the creation of different priority groups, without needing to specify priorities per (real) streams.

ChromeCast issue with Play Ready Smooth Streaming

I'm using Azure Media Services to upload, encode and encrypt videos into PlayReady smooth streaming format. I'm using the Play Ready test server located at : http://playready.directtaps.net/
During the encoding process, I'm using licenseAcquisitionUrl for PlayReady as : http://playready.directtaps.net/pr/svc/rightsmanager.asmx
All the other things are configured and set as described at : http://msdn.microsoft.com/en-us/library/dn189154.aspx
PlayReady Smooth Stream : http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest
The above stream works on : http://smf.cloudapp.net/healthmonitor (no option of setting up license acquisition url)
The above stream does not work on : http://playready.directtaps.net/pr/doc/slee/ even after setting/removing License Acquisition Url.
Also, I'm using ChromeCast to cast these streams according to the Receiver Sample : https://github.com/googlecast/CastMediaPlayerStreamingDRM
The play ready stream does not seem to work on the above google cast example, and gives a "Fatal Error: code = 1" (I guess LOAD METADATA ERROR) , even after setting/removing License Acquisition Url.
The HLS stream encrypted with PlayReady as well as the MPEG DASH stream with PlayReady do not work at all on the ChromeCast Receiver Sample.
Please help!
EDIT : Adding Logs
[ 0.306s] [cast.receiver.CastReceiverManager] Version: 2.0.0.0002
cast_receiver.js:18
### Application Loaded. Starting system. mpl.js:649
[ 0.339s] [cast.receiver.IpcChannel] Opening message bus websocket
cast_receiver.js:18
[ 0.347s] [goog.net.WebSocket] Opening the WebSocket on ws://localhost:8008/v2/ipc
cast_receiver.js:18
[ 0.498s] [goog.net.WebSocket] WebSocket opened on ws://localhost:8008/v2/ipc
cast_receiver.js:18
[ 0.512s] [cast.receiver.IpcChannel] IpcChannel opened
cast_receiver.js:18
[ 0.521s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message [urn:x-cast:com.google.cast.system, SystemSender]: {"type":"opened"}
cast_receiver.js:18
[ 0.528s] [cast.receiver.CastReceiverManager] CastReceiverManager message received: [object Object]
cast_receiver.js:18
[ 0.537s] [cast.receiver.CastReceiverManager] Underlying message bus is open
cast_receiver.js:18
[ 0.541s] [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.cast.sample.mediaplayer\",\"urn:x-cast:com.google.cast.media\"],\"version\":\"2.0.0\",\"messagesVersion\":\"1.0\"}"}
cast_receiver.js:18
[ 0.554s] [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.568s] [cast.receiver.IpcChannel] Received message: {"data":"{\"applicationId\":\"9E986387\",\"applicationName\":\"Custom Receiver with DRM\",\"launchingSenderId\":\"2:client-81798\",\"messagesVersion\":\"1.0\",\"sessionId\":\"5715726D-2985-E111-297B-7C6CB1A79753\",\"type\":\"ready\",\"version\":\"1.0\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"}
cast_receiver.js:18
[ 0.579s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message [urn:x-cast:com.google.cast.system, SystemSender]: {"applicationId":"9E986387","applicationName":"Custom Receiver with DRM","launchingSenderId":"2:client-81798","messagesVersion":"1.0","sessionId":"5715726D-2985-E111-297B-7C6CB1A79753","type":"ready","version":"1.0"}
cast_receiver.js:18
[ 0.581s] [cast.receiver.CastReceiverManager] CastReceiverManager message received: [object Object]
cast_receiver.js:18
[ 0.584s] [cast.receiver.CastReceiverManager] Dispatching CastReceiverManager system ready event [[object Object]]
cast_receiver.js:18
### Cast Receiver Manager is READY: {"type":"ready","C":false,"defaultPrevented":false,"Sa":true,"data":{"id":"9E986387","name":"Custom Receiver with DRM","sessionId":"5715726D-2985-E111-297B-7C6CB1A79753","namespaces":["urn:x-cast:com.google.cast.sample.mediaplayer","urn:x-cast:com.google.cast.media"],"launchingSenderId":"2:client-81798"}} mpl.js:202
[ 1.133s] [cast.receiver.IpcChannel] Received message: {"data":"{\"senderId\":\"2:client-81798\",\"type\":\"senderconnected\",\"userAgent\":\"\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"}
cast_receiver.js:18
[ 1.135s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message [urn:x-cast:com.google.cast.system, SystemSender]: {"senderId":"2:client-81798","type":"senderconnected","userAgent":""}
cast_receiver.js:18
[ 1.137s] [cast.receiver.CastReceiverManager] CastReceiverManager message received: [object Object]
cast_receiver.js:18
[ 1.139s] [cast.receiver.CastReceiverManager] Dispatching CastReceiverManager sender connected event [2:client-81798]
cast_receiver.js:18
[ 1.141s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.cast.sample.mediaplayer, 2:client-81798]
cast_receiver.js:18
[ 1.143s] [cast.receiver.CastMessageBus] Registering sender [urn:x-cast:com.google.cast.media, 2:client-81798]
cast_receiver.js:18
### Cast Receiver Manager - Sender Connected : {"type":"senderconnected","C":false,"defaultPrevented":false,"Sa":true,"data":"2:client-81798","senderId":"2:client-81798","userAgent":""} mpl.js:215
[ 11.026s] [cast.receiver.IpcChannel] Received message: {"data":"{\"type\":\"license\",\"value\":\"http://playready.directtaps.net/pr/svc/rightsmanager.asmx\"}","namespace":"urn:x-cast:com.google.cast.sample.mediaplayer","senderId":"2:client-81798"}
cast_receiver.js:18
[ 11.034s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message [urn:x-cast:com.google.cast.sample.mediaplayer, 2:client-81798]: {"type":"license","value":"http://playready.directtaps.net/pr/svc/rightsmanager.asmx"}
cast_receiver.js:18
### Message Bus - Media Message: {"type":"message","C":false,"defaultPrevented":false,"Sa":true,"senderId":"2:client-81798","data":"{\"type\":\"license\",\"value\":\"http://playready.directtaps.net/pr/svc/rightsmanager.asmx\"}"} mpl.js:268
### CUSTOM MESSAGE: {"type":"message","C":false,"defaultPrevented":false,"Sa":true,"senderId":"2:client-81798","data":"{\"type\":\"license\",\"value\":\"http://playready.directtaps.net/pr/svc/rightsmanager.asmx\"}"} mpl.js:271
{"type":"license","value":"http://playready.directtaps.net/pr/svc/rightsmanager.asmx"} mpl.js:273
[ 11.056s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.sample.mediaplayer","senderId":"*:*","data":"{\"type\":\"license\",\"value\":\"http://playready.directtaps.net/pr/svc/rightsmanager.asmx\"}"}
cast_receiver.js:18
[ 12.220s] [cast.receiver.IpcChannel] Received message: {"data":"{\"type\":\"LOAD\",\"requestId\":52887016,\"sessionId\":\"5715726D-2985-E111-297B-7C6CB1A79753\",\"media\":{\"contentId\":\"http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest\",\"streamType\":\"buffered\",\"contentType\":\"video/mp4\"},\"autoplay\":true,\"currentTime\":0,\"customData\":{\"payload\":{\"title\":\"Big Buck Bunny\"}}}","namespace":"urn:x-cast:com.google.cast.media","senderId":"2:client-81798"}
cast_receiver.js:18
[ 12.225s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message [urn:x-cast:com.google.cast.media, 2:client-81798]: {"type":"LOAD","requestId":52887016,"sessionId":"5715726D-2985-E111-297B-7C6CB1A79753","media":{"contentId":"http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest","streamType":"buffered","contentType":"video/mp4"},"autoplay":true,"currentTime":0,"customData":{"payload":{"title":"Big Buck Bunny"}}}
cast_receiver.js:18
[ 12.231s] [cast.receiver.MediaManager] MediaManager message received [2:client-81798] {"type":"LOAD","requestId":52887016,"sessionId":"5715726D-2985-E111-297B-7C6CB1A79753","media":{"contentId":"http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest","streamType":"buffered","contentType":"video/mp4"},"autoplay":true,"currentTime":0,"customData":{"payload":{"title":"Big Buck Bunny"}}}
cast_receiver.js:18
[ 12.235s] [cast.receiver.MediaManager] Dispatching MediaManager load event
cast_receiver.js:18
### Media Manager - LOAD: {"type":"load","C":false,"defaultPrevented":false,"Sa":true,"data":{"requestId":52887016,"sessionId":"5715726D-2985-E111-297B-7C6CB1A79753","media":{"contentId":"http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest","streamType":"buffered","contentType":"video/mp4"},"autoplay":true,"currentTime":0,"customData":{"payload":{"title":"Big Buck Bunny"}}},"senderId":"2:client-81798"} mpl.js:546
##### video/mp4 mpl.js:621
### Media Protocol Identified as Smooth Streaming mpl.js:632
[ 12.094s] [cast.player.api.Player] version 0.4.0
media_player.js:23
[ 12.101s] [cast.player.api.Player] revision 6
media_player.js:23
[ 12.116s] [cast.player.api.Player] load 0
media_player.js:23
[ 12.142s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest -1]
media_player.js:23
[ 12.160s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest -1]
media_player.js:23
[ 12.166s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest -1]
media_player.js:23
XHR finished loading: "http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest". media_player.js:51
[ 12.196s] [goog.net.XhrIo] Request complete [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest 200]
media_player.js:23
[ 12.237s] [cast.player.common] Audio codecPrivateData guess: 1210
media_player.js:23
[ 12.251s] [cast.player.common] Audio codecPrivateData guess: 1210
media_player.js:23
######### MEDIA ELEMENT LOAD START mpl.js:44
[ 12.361s] [cast.player.api.Player] sourceopen
media_player.js:23
[ 12.423s] [cast.player.core.QualityManager] 0: from undefined to 1740668
media_player.js:23
[ 12.429s] [cast.player.core.SourceBufferManager] 0: abort
media_player.js:23
[ 12.467s] [cast.player.core.SourceBufferManager] 0: append
media_player.js:23
[ 12.476s] [cast.player.core.SegmentManager] 0: seek 0
media_player.js:23
[ 12.507s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=0) -1]
media_player.js:23
[ 12.515s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=0) -1]
media_player.js:23
[ 12.520s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=0) -1]
media_player.js:23
[ 12.535s] [cast.player.core.QualityManager] 1: from undefined to 93593
media_player.js:23
[ 12.544s] [cast.player.core.SourceBufferManager] 1: abort
media_player.js:23
[ 12.559s] [cast.player.core.SourceBufferManager] 1: append
media_player.js:23
[ 12.563s] [cast.player.core.SegmentManager] 1: seek 0
media_player.js:23
[ 12.576s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…64c2119/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=0) -1]
media_player.js:23
[ 12.581s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…64c2119/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=0) -1]
media_player.js:23
[ 12.585s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…64c2119/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=0) -1]
media_player.js:23
XHR finished loading: "http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…4c2119/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=0))". media_player.js:51
[ 12.644s] [goog.net.XhrIo] Request complete [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…64c2119/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=0) 200]
media_player.js:23
[ 12.648s] [cast.player.core.SegmentManager] onXhrSuccess_ 1: pending segment
media_player.js:23
XHR finished loading: "http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=0))". media_player.js:51
[ 12.677s] [goog.net.XhrIo] Request complete [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=0) 200]
media_player.js:23
[ 12.685s] [cast.player.core.SegmentManager] onXhrSuccess_ 0: pending segment
media_player.js:23
[ 12.694s] [cast.player.core.SourceBufferManager] 0: updateend
media_player.js:23
[ 12.710s] [cast.player.core.SegmentManager] onBufferReady 0: process pending
media_player.js:23
[ 12.747s] [cast.player.core.SourceBufferManager] 0: append
media_player.js:23
[ 12.763s] [cast.player.core.SourceBufferManager] 1: updateend
media_player.js:23
[ 12.766s] [cast.player.core.SegmentManager] onBufferReady 1: process pending
media_player.js:23
[ 12.775s] [cast.player.core.SourceBufferManager] 1: append
media_player.js:23
[ 12.826s] [cast.player.core.MediaKeysManager] onNeedKey_: 1
media_player.js:23
[ 12.832s] [cast.player.core.MediaKeySession] createSession
media_player.js:23
[ 12.844s] [cast.player.core.MediaKeysManager] onNeedKey_: 2
media_player.js:23
[ 13.031s] [cast.receiver.MediaManager] Metadata loaded
cast_receiver.js:18
[ 13.046s] [cast.receiver.MediaManager] Sending broadcast status message
cast_receiver.js:18
[ 13.056s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.media","senderId":"*:*","data":"{\"type\":\"MEDIA_STATUS\",\"status\":[{\"mediaSessionId\":1,\"playbackRate\":1,\"playerState\":\"BUFFERING\",\"currentTime\":0,\"supportedMediaCommands\":15,\"volume\":{\"level\":1,\"muted\":false},\"media\":{\"contentId\":\"http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c60-bed8564c2119/interview2.ism/manifest\",\"streamType\":\"buffered\",\"contentType\":\"video/mp4\",\"duration\":9.6826}}],\"requestId\":52887016}"}
cast_receiver.js:18
[ 12.889s] [cast.player.api.Player] loadedmetadata
media_player.js:23
[ 13.048s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…ed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=20020000) -1]
media_player.js:23
[ 13.057s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…ed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=20020000) -1]
media_player.js:23
[ 13.061s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…ed8564c2119/interview2.ism/QualityLevels(1740668)/Fragments(video=20020000) -1]
media_player.js:23
[ 13.087s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=20201360) -1]
media_player.js:23
[ 13.106s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=20201360) -1]
media_player.js:23
[ 13.114s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=20201360) -1]
media_player.js:23
XHR finished loading: "http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=20201360))". media_player.js:51
[ 13.144s] [goog.net.XhrIo] Request complete [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=20201360) 200]
media_player.js:23
[ 13.153s] [cast.player.core.SegmentManager] onXhrSuccess_ 1: pending segment
media_player.js:23
######### MEDIA ELEMENT DATA LOADED mpl.js:48
{} mpl.js:90
[ 13.369s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.sample.mediaplayer","senderId":"*:*","data":"{\"video_bitrates\":[1740668,1416013,889057,682029,435390]}"}
cast_receiver.js:18
[ 13.376s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.sample.mediaplayer","senderId":"*:*","data":"{\"audio_bitrates\":[53640]}"}
cast_receiver.js:18
######### MEDIA ELEMENT CAN PLAY mpl.js:116
[ 13.222s] [cast.player.api.Player] play
media_player.js:23
######### MEDIA ELEMENT PLAYING mpl.js:126
[ 13.349s] [cast.player.core.SourceBufferManager] 0: updateend
media_player.js:23
[ 13.360s] [cast.player.core.SourceBufferManager] 1: updateend
media_player.js:23
[ 13.365s] [cast.player.core.SegmentManager] onBufferReady 1: process pending
media_player.js:23
[ 13.370s] [cast.player.core.SourceBufferManager] 1: append
media_player.js:23
[ 13.410s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=40402721) -1]
media_player.js:23
[ 13.418s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=40402721) -1]
media_player.js:23
[ 13.427s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=40402721) -1]
media_player.js:23
XHR finished loading: "http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=40402721))". media_player.js:51
[ 13.459s] [goog.net.XhrIo] Request complete [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=40402721) 200]
media_player.js:23
[ 13.463s] [cast.player.core.SegmentManager] onXhrSuccess_ 1: pending segment
media_player.js:23
[ 13.481s] [cast.player.core.SourceBufferManager] 1: updateend
media_player.js:23
[ 13.489s] [cast.player.core.SegmentManager] onBufferReady 1: process pending
media_player.js:23
[ 13.500s] [cast.player.core.SourceBufferManager] 1: append
media_player.js:23
[ 13.535s] [cast.player.core.QualityManager] 1: bitrate 2149525.703534414
media_player.js:23
[ 13.548s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=60604081) -1]
media_player.js:23
[ 13.552s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=60604081) -1]
media_player.js:23
[ 13.569s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=60604081) -1]
media_player.js:23
[ 13.607s] [cast.player.core.SourceBufferManager] 1: updateend
media_player.js:23
XHR finished loading: "http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=60604081))". media_player.js:51
[ 13.622s] [goog.net.XhrIo] Request complete [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=60604081) 200]
media_player.js:23
[ 13.633s] [cast.player.core.SourceBufferManager] 1: append
media_player.js:23
[ 13.642s] [goog.net.XhrIo] Opening Xhr [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=80805442) -1]
media_player.js:23
[ 13.646s] [goog.net.XhrIo] Will abort after 30000ms if incomplete, xhr2 false [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=80805442) -1]
media_player.js:23
[ 13.651s] [goog.net.XhrIo] Sending request [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=80805442) -1]
media_player.js:23
XHR finished loading: "http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=80805442))". media_player.js:51
[ 13.677s] [goog.net.XhrIo] Request complete [GET http://wamsstaticpoc.origin.mediaservices.windows.net/6d32a54f-ba98-4b06-8c…/interview2.ism/QualityLevels(93593)/Fragments(AAC_und_ch2_96kbps=80805442) 200]
media_player.js:23
[ 13.681s] [cast.player.core.SegmentManager] onXhrSuccess_ 1: pending segment
media_player.js:23
[ 13.690s] [cast.player.core.SourceBufferManager] 1: updateend
media_player.js:23
[ 13.694s] [cast.player.core.SegmentManager] onBufferReady 1: process pending
media_player.js:23
[ 13.698s] [cast.player.core.SourceBufferManager] 1: append
media_player.js:23
[ 13.707s] [cast.player.core.SourceBufferManager] 1: updateend
media_player.js:23
[ 14.508s] [cast.player.core.MediaKeySession] onKeyMessage_
media_player.js:23
[ 14.519s] [goog.net.XhrIo] Opening Xhr [POST http://playready.directtaps.net/pr/svc/rightsmanager.asmx -1]
media_player.js:23
[ 14.531s] [goog.net.XhrIo] Will abort after 180000ms if incomplete, xhr2 false [POST http://playready.directtaps.net/pr/svc/rightsmanager.asmx -1]
media_player.js:23
[ 14.536s] [goog.net.XhrIo] Sending request [POST http://playready.directtaps.net/pr/svc/rightsmanager.asmx -1]
media_player.js:23
######### MEDIA ELEMENT ERROR [object Event] mpl.js:140
Uncaught TypeError: Converting circular structure to JSON mpl.js:359
[ 14.695s] [cast.player.api.Player] error
media_player.js:23
### HOST ERROR - Fatal Error: code = 1 mpl.js:611
[ 14.704s] [cast.player.api.Player] unload 0

Resources