Using the newest OSMF 1.6 sprint 5 which includes the HTTPStreamingFactory I extended the HTTPStreamingNetLoader to do some customizing of http streaming for a test player project. The video will not play using the plugin with the extend class. I have the debug info which may shed some light on why. I have not done any change or customizing yet. I have only extend the class at this point.
With the plugin I see the follow:
[WARN] [org.osmf.net.httpstreaming.HTTPStreamSource] Null index info in HTTPStreamSourceHandler constructor. Probably invalid factory object or resource.
Later in the log I also see:
[DEBUG] [org.osmf.net.httpstreaming.HTTPNetStream] Play initiated for [http://zeri.vo.llnwd.net/ondemand/ train_150.f4m] with parameters ( start = 0, duration = -1 ).
When it is working without the plugin I get:
Wed Jul 6 2011 10:35:42 AM [DEBUG] [org.osmf.net.httpstreaming.HTTPNetStream] Play initiated for [train_150] with parameters ( start = 0, duration = -1 ).
Clearly it is handling/parsing the f4m file differently.
Has anyone else come across this issue?
The normal workflow for F4M is :
- the F4M file is downloaded and parsed into a media resource
- the media resource will be passed to the media factory in order to create the actual media element
In this way, we can support both RTMP and HDS streams using one file format ( F4M ).
The tricky part is that while for RTMP streams the conversion from the manifest to the media resource is pretty straight-forward, for the HDS that is a lot more complicated ( practically in HDS a most of the informations are stored as metadata associated with the resulting URLResource or DynamicStreamingResource).
If you pass directly a url resource pointing to an F4M to an HTTPStreamingNetLoader, the resource will not have that metadata associated with it and you'll receive "Probably invalid factory object or resource." error. If you didn't create your own HTTPStreamingFactory class ( this is necessary if you want to support different file formats ), then indicates that the resource was not properly processed.
So in the HDS case, you need to go through the F4MElement processing.
We are working to improve this and provide a mechanism for creating resource from in-memory XML representations.
Hope it helps,