HDS live streaming to Flash not working
Adobe Flash Media Server 4.5.5 r4013
Windows 2008
Sources:
- http://help.adobe.com/en_US/flashmediaserver/devguide/WSd391de4d9c7bd609-52e437a812a3725dfa0-8000.html
- http://www.adobe.com/devnet/adobe-media-server/articles/live-multi-bitrate-video-http-flash-ios.html
Live streaming a single or multi-bitrate video over HTTP to Flash does not work. I have followed the instructions on the 2 sources listed above repeatedly, but I can’t get live streaming over HTTP to Flash to work. Live streaming to iOS over HTTP works with no problems (single and multi-bitrate streams).
I have tried the troubleshooting steps from the following:
http://help.adobe.com/en_US/flashmediaserver/devguide/WS0432746db30523c21e63e3d12efac195bd-8000.html
Troubleshoot live streaming (HTTP)
- 1. Services window (Windows): Flash Media Server (FMS), Flash Media Administration Server, and FMSHttpd services are running. ✓
- 2. Verified that the request URL is correct. ✓
- 3. Configured ports:
- a. Configure Apache to use port 80. Open rootinstall/Apache2.2/conf/httpd.conf in a text editor. Change the line Listen 8134 to Listen 80.
- b. Configure Flash Media Server not to use port 80. Open rootinstall/conf/fms.ini in a text editor. Remove 80 from the ADAPTOR.HOSTPORT parameter so the parameter looks like the following: ADAPTOR.HOSTPORT = :1935 ✓
- 4. Placed a crossdomain.xml file to the rootinstall/webroot directory. ✓
- 5. In Flash Media Live Encoder, select the Encoding Options tab, choose Output from the Panel options menu, and verify the following:
- a) The value of FMS URL is rtmp://fms-dns-or-ip/livepkgr. If you’re testing on the same server as Flash Media Server, you can use the value localhost for fms-dns-or-ip. ✓
- b) For a single stream, the value of Stream is livestream?adbe-live-event=liveevent. ✓
- c) For adaptive bitrate streaming, the value of Stream is livestream%i?adbe-live-event=liveevent. ✓
Flash Media Live Encoder uses this value to create unique stream names. To use another encoder, provide your own unique stream names, for example, livestream1?adbe-live-event=liveevent, livestream2?adbe-live-event=liveevent.
- The encoder is showing all 3 streams being published and streaming.
- 6. Check Administration Console: the livepkgr application and the 3 streams are running. ✓
- 7. Check the logs for errors. Flash Media Server logs are located in the rootinstall/logs folder. The master.xx.log file and the core.xx.log file show startup failures. Apache logs are located in the rootinstall/Apache2.2/logs folder. X
a) core00.log: these errors did not occur every time that I tried playing the live stream but these are the only relevant errors in the logs.
- 1. 7968 (w)2611179 Warning from libf4f.dll: [Utils] [livestream2] Discarded all queued Media Messages received before first Video Keyframe Message
- 2. 7968 (w)2611179 Warning from libf4f.dll: [Utils] [livestream3] Discarded all queued Media Messages received before first Video Keyframe Message
b) edge00.log:
13:33:57 4492 (w)2641213 Connection rejected by server. Reason : [ Server.Reject ] : (_defaultRoot_, _defaultVHost_) : Application (hds-live) is not defined. -
c) Apache-Error:
- 1. [warn] Checking if stream is disabled but bootstrap path in event file is empty for event:livepkgr/events/_definst_/liveevent stream name:livestream
- 2. [warn] bootstrap path is in event file is empty for event:livepkgr/events/_definst_/liveevent stream name:livestream1
As I mentioned, everything works on iOS and FMS seems to be creating all of the stream segments and meta files:
- a. The 3 streams are being created in: HD:\Program Files\Adobe\Flash Media Server 4.5\applications\livepkgr\streams\_definst_
- b. FMS is creating the following files in each stream folder (livestream1, livestream2, livestream 3):
- 1. livestream1.bootstrap
- 2. livestream1.control
- 3. livestream1.meta
- 4. .f4f segments
- 5. .f4x segments
The appropriate files are also being created in the HD:\Program Files\Adobe\Flash Media Server 4.5\applications\livepkgr\events\_definst_\liveevent folder, in which I have the following Manifest.xml and Event.xml files:
<manifest xmlns="http://ns.adobe.com/f4m/1.0">
<media streamId="livestream1" bitrate="200" />
<media streamId="livestream2" bitrate="500" />
<media streamId="livestream3" bitrate="1000" />
</manifest>
<Event>
<EventID>liveevent</EventID>
<Recording>
<FragmentDuration>4000</FragmentDuration>
<SegmentDuration>16000</SegmentDuration>
<DiskManagementDuration>3</DiskManagementDuration>
</Recording>
</Event>
I’ve tried clearing the contents of both streams\_definst_ and events\_definst_\liveevent (keeping the xml files) after restarting the encoder, and creating a different event definst for the streams (liveevent2 for example).
We have an event in 2 weeks that we would like to stream to both Flash and iOS. Any help in solving this problem will be greatly appreciated.
