RayGyoe/apple-http-osmf

Error in Bip-bop example: Quality level cannot be set at this time.

Opened this issue · 15 comments

What steps will reproduce the problem?
1. Build unmodified AppleStreamingInOSMF.mxml example
2. Run in debug player

What is the expected output?
Video and audio should play.

What do you see instead?
Exception is thrown before playback begins (see full trace output below)
After dismissing the exception, playback begins, but is audio only.

What version of the product are you using? On what operating system?
Using OSMF 2.0 release built from source.
Flex 4.6, with Flash Builder 4.6
Mac OS X Lion 10.7.4
Firefox 14

Please provide any additional information below.

Full log output and stack trace:
Fri Jun 22 2012 02:31:10 AM.387 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] State = init
Fri Jun 22 2012 02:31:10 AM.392 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamSource] State = init
Fri Jun 22 2012 02:31:10 AM.392 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamSource] Provider initialized.
Fri Jun 22 2012 02:31:10 AM.397 [DEBUG] 
[org.osmf.elements.LightweightVideoElement] No DRM Contenta data available 
upfront. Play the content and listen for any DRM-related events.
Fri Jun 22 2012 02:31:10 AM.406 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] Play initiated for 
[http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8] with 
parameters ( start = 0, duration = -1 ).
Fri Jun 22 2012 02:31:10 AM.407 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamSource] Opening stream [ /bipbopall.m3u8 
]. 
Fri Jun 22 2012 02:31:10 AM.410 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading (timeout=4000, 
retry=0):http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
Fri Jun 22 2012 02:31:10 AM.410 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] State = seek
Fri Jun 22 2012 02:31:10 AM.414 [DEBUG] [org.osmf.layout.LayoutRendererBase] ON 
EXIT FRAME: BEGIN
Fri Jun 22 2012 02:31:10 AM.414 [DEBUG] [org.osmf.layout.LayoutRendererBase] 
VALIDATING LAYOUT
Fri Jun 22 2012 02:31:10 AM.416 [INFO] 
[org.osmf.media.videoClasses.VideoSurface] switchRenderer. currentVideoRenderer 
= null; the new renderer = [object StageVideo]
Fri Jun 22 2012 02:31:10 AM.425 [DEBUG] [org.osmf.layout.LayoutRendererBase] 
LAYOUT VALIDATED
Fri Jun 22 2012 02:31:10 AM.425 [DEBUG] [org.osmf.layout.LayoutRendererBase] ON 
EXIT FRAME: END
Fri Jun 22 2012 02:31:10 AM.442 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loaded 292 bytes from 292 
bytes.
Fri Jun 22 2012 02:31:10 AM.442 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading complete. It took 0 
sec and 0 retries to download 292 bytes.
Fri Jun 22 2012 02:31:10 AM.444 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] Download complete: 
http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 (292 bytes)
Fri Jun 22 2012 02:31:10 AM.447 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Closing 
:http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
Fri Jun 22 2012 02:31:10 AM.448 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading (timeout=4000, 
retry=0):http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8
Fri Jun 22 2012 02:31:10 AM.465 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loaded 7019 bytes from 7019 
bytes.
Fri Jun 22 2012 02:31:10 AM.466 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading complete. It took 
0.001 sec and 0 retries to download 7019 bytes.
Fri Jun 22 2012 02:31:10 AM.466 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] Download complete: 
http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8 (7019 
bytes)
Fri Jun 22 2012 02:31:10 AM.470 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onScriptData called with mode 
[immediate].
Fri Jun 22 2012 02:31:10 AM.470 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onMetaData invoked.
Fri Jun 22 2012 02:31:10 AM.473 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Closing 
:http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8
Fri Jun 22 2012 02:31:10 AM.473 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading (timeout=4000, 
retry=0):http://devimages.apple.com/iphone/samples/bipbop/gear2/prog_index.m3u8
Fri Jun 22 2012 02:31:10 AM.481 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loaded 7019 bytes from 7019 
bytes.
Fri Jun 22 2012 02:31:10 AM.481 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading complete. It took 0 
sec and 0 retries to download 7019 bytes.
Fri Jun 22 2012 02:31:10 AM.481 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] Download complete: 
http://devimages.apple.com/iphone/samples/bipbop/gear2/prog_index.m3u8 (7019 
bytes)
Fri Jun 22 2012 02:31:10 AM.483 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onScriptData called with mode 
[immediate].
Fri Jun 22 2012 02:31:10 AM.483 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onMetaData invoked.
Fri Jun 22 2012 02:31:10 AM.483 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Closing 
:http://devimages.apple.com/iphone/samples/bipbop/gear2/prog_index.m3u8
Fri Jun 22 2012 02:31:10 AM.483 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading (timeout=4000, 
retry=0):http://devimages.apple.com/iphone/samples/bipbop/gear3/prog_index.m3u8
Fri Jun 22 2012 02:31:10 AM.502 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loaded 7019 bytes from 7019 
bytes.
Fri Jun 22 2012 02:31:10 AM.502 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading complete. It took 0 
sec and 0 retries to download 7019 bytes.
Fri Jun 22 2012 02:31:10 AM.502 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] Download complete: 
http://devimages.apple.com/iphone/samples/bipbop/gear3/prog_index.m3u8 (7019 
bytes)
Fri Jun 22 2012 02:31:10 AM.504 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onScriptData called with mode 
[immediate].
Fri Jun 22 2012 02:31:10 AM.504 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onMetaData invoked.
Fri Jun 22 2012 02:31:10 AM.504 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Closing 
:http://devimages.apple.com/iphone/samples/bipbop/gear3/prog_index.m3u8
Fri Jun 22 2012 02:31:10 AM.504 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading (timeout=4000, 
retry=0):http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8
Fri Jun 22 2012 02:31:10 AM.525 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loaded 7019 bytes from 7019 
bytes.
Fri Jun 22 2012 02:31:10 AM.525 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamDownloader] Loading complete. It took 0 
sec and 0 retries to download 7019 bytes.
Fri Jun 22 2012 02:31:10 AM.525 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] Download complete: 
http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8 (7019 
bytes)
Fri Jun 22 2012 02:31:10 AM.526 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onScriptData called with mode 
[immediate].
Fri Jun 22 2012 02:31:10 AM.527 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPNetStream] onMetaData invoked.
Fri Jun 22 2012 02:31:10 AM.528 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamSource] Stream [ /bipbopall.m3u8 ] 
refreshed. ( offset = 0, live = false).
Fri Jun 22 2012 02:31:10 AM.528 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamSource] Stream name [ /bipbopall.m3u8 ] 
and quality level [0] are not in sync.
Fri Jun 22 2012 02:31:10 AM.529 [DEBUG] 
[org.osmf.net.httpstreaming.HTTPStreamSource] Prepare to switch the quality 
level to http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
Error: Quality level cannot be set at this time.
    at org.osmf.net.httpstreaming::HTTPStreamSource/changeQualityLevel()[/Users/theturtle32/Downloads/OSMF/framework/OSMF/org/osmf/net/httpstreaming/HTTPStreamSource.as:330]
    at org.osmf.net.httpstreaming::HTTPStreamSource/onIndexReady()[/Users/theturtle32/Downloads/OSMF/framework/OSMF/org/osmf/net/httpstreaming/HTTPStreamSource.as:679]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at at.matthew.httpstreaming::HTTPStreamingM3U8IndexHandler/processIndexData()[/Users/theturtle32/work/snapcuts/osmf-hls-player/src/at/matthew/httpstreaming/HTTPStreamingM3U8IndexHandler.as:212]
    at org.osmf.net.httpstreaming::HTTPStreamSource/onIndexComplete()[/Users/theturtle32/Downloads/OSMF/framework/OSMF/org/osmf/net/httpstreaming/HTTPStreamSource.as:735]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at org.osmf.net.httpstreaming::HTTPStreamDownloader/onComplete()[/Users/theturtle32/Downloads/OSMF/framework/OSMF/org/osmf/net/httpstreaming/HTTPStreamDownloader.as:405]

Original issue reported on code.google.com by theturtl...@gmail.com on 22 Jun 2012 at 9:37

Just tried it with the pre-built osmf.swc file from the 2.0 release with the 
same results.

Original comment by theturtl...@gmail.com on 22 Jun 2012 at 9:59

Hi the example isn't working for me at all, im using a pure as3 prototype 
loading the files directly. There is problems still, the mbr stream needs to be 
referenced to play instead of the master file. Also an event needed to be 
switched around here is a diff. 

Original comment by dani...@electroteque.org on 22 Jun 2012 at 1:04

Attachments:

The complete direct example

netResource = new StreamingURLResource(filename);

var httpNetStream:HTTPNetStream = new HTTPNetStream(connection, new 
HTTPStreamingM3U8Factory(), netResource);
httpNetStream.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
video.attachNetStream(httpNetStream);
httpNetStream.client = this;


httpNetStream.play("http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_
index.m3u8");

I think the playlist parsing has to be done externally as with f4m so it 
generates a UrlResource object out of it with the mbr information in that. Its 
currently done internally and no possible way to get access to that 
information. 

Original comment by dani...@electroteque.org on 22 Jun 2012 at 1:06

run the diff and point directly to a bitrate, the mbr list is generated 
internally not externally at the moment therefore not useful with dynamic 
switch streaming etc

"http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8"


Original comment by dani...@electroteque.org on 22 Jun 2012 at 1:59

I just realised osmf 2.0 is broken if your compiler is set to strict mode

inside HTTPStreamingEvent

set the constructor arg to this, the constant doesnt work ???? 

reason:String =  "normal",

Original comment by dani...@electroteque.org on 22 Jun 2012 at 2:47

There is now a cross domain issue that needs to be resolved. 

Original comment by dani...@electroteque.org on 22 Jun 2012 at 3:08

ok, I need to find a demo online with a crossdomain policy on its domain thats 
open :)

Original comment by dani...@electroteque.org on 22 Jun 2012 at 3:22

Have a look here, i used the wowza demo as they have a crossdomain policy ! . 
This is directly integrated as a streaming plugin into flowplayer.

http://flowplayer.electroteque.org/httpstreaminghls

I guess mbr will come once the parser is fixed up and then attach it to dynamic 
switch streaming. 

Original comment by dani...@electroteque.org on 22 Jun 2012 at 3:40

Daniel, your patch fixes the "Quality level cannot be set at this time" 
exception, thank you!  I'm still not getting any video playback.  Looking at 
your AS3 playback example, I'm not sure where you got the HTTPNetStream class?  
It's not provided by either Flex 4.6 or OSMF 2.0?

Original comment by theturtl...@gmail.com on 23 Jun 2012 at 8:52

hi its in org/osmf/net/httpstreaming

Original comment by dani...@electroteque.org on 11 Jul 2012 at 4:44

Hi is it possible to checkout this diff if possible to make the sources work ? 

Original comment by dani...@electroteque.org on 17 Jul 2012 at 12:44

Hi is it possible to check in that patch to make this code actually work ? Im 
currently looking at externalising the parser so it can generate an mbr 
resource properly exactly like how httpsreaming is working, this makes it 
possibly to actually obtain the bitrates model correctly. 

Original comment by dani...@electroteque.org on 27 Sep 2012 at 5:13

http://code.google.com/p/apple-http-osmf/issues/detail?id=23 

i updated the patch here however, there is still a problem with MBR streams 
because you have to specifically tell to play one of the streams because the 
top level feed is the stream name, no levels match therefore will throw this 
error still and fail playback. 

Original comment by dani...@electroteque.org on 4 Oct 2012 at 2:58

Hi all problems are fixed here, the patch is redundant now as I refactored 
quite a bit of stuff. 

http://code.google.com/p/apple-http-osmf/issues/detail?id=24

A mbr feed can be configured and it will parse correctly. Ive tested stream 
switching and works perfectly. 

Original comment by electrot...@gmail.com on 5 Nov 2012 at 10:44

note, the problem with the audio playing while the video is nowhere to be found 
is unrelated to the exception, it's because of osmf 2.0.

to fix the example, put this line in the onApplicationComplete() handler:

OSMFSettings.enableStageVideo = false;

Original comment by jon.mars...@englishcentral.com on 9 May 2013 at 8:52