Skip to main content
March 10, 2014
Question

HDS live streaming to Flash not working

  • March 10, 2014
  • 2 replies
  • 4208 views

Adobe Flash Media Server 4.5.5 r4013

Windows 2008

Sources:

  1. http://help.adobe.com/en_US/flashmediaserver/devguide/WSd391de4d9c7bd609-52e437a812a3725dfa0-8000.html
  2. 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. 1.      Services window (Windows): Flash Media Server (FMS), Flash Media Administration Server, and FMSHttpd services are running.
  2. 2.      Verified that the request URL is correct.
  3. 3.      Configured ports:
    1. 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.
    2. 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

  1. 4.      Placed a crossdomain.xml file to the rootinstall/webroot directory.
  2. 5.      In Flash Media Live Encoder, select the Encoding Options tab, choose Output from the Panel options menu, and verify the following:
    1. 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.
    2. b) For a single stream, the value of Stream is livestream?adbe-live-event=liveevent.
    3. 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.

  1. 6. Check Administration Console: the livepkgr application and the 3 streams are running.
  2. 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. 1. 7968 (w)2611179     Warning from libf4f.dll: [Utils] [livestream2] Discarded all queued Media Messages received before first Video Keyframe Message
      2. 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. 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. 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:

  1. a.     The 3 streams are being created in: HD:\Program Files\Adobe\Flash Media Server 4.5\applications\livepkgr\streams\_definst_
  2. b.    FMS is creating the following files in each stream folder (livestream1, livestream2, livestream 3):
    1. 1. livestream1.bootstrap
    2. 2. livestream1.control
    3. 3. livestream1.meta
    4. 4. .f4f segments
    5. 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.

This topic has been closed for replies.

2 replies

March 27, 2014

Hi Carlos1327,

I am also getting the same problem. Set-level manifest file is not playing in my flex application.

But I can get the individual streams in the set manifest file to work and ondemand HDS is also working:

http://localhost/hds-live/livepkgr/_definst_/livevent/livestream1.f4m

http://localhost/hds-live/livepkgr/_definst_/livevent/livestream2.f4m

http://localhost/hds-live/livepkgr/_definst_/livevent/livestream3.f4m

BUT when I try to play the streams through the set manifest file from http://localhost/liveevent.f4m.

I did not find any sample application over net. Does set-level manifest file work with flex application.

Please let me know your  suggetions.

Thanks

March 27, 2014

I did so many things during the course of trying to solve this problem that I'm not exactly sure which of the steps was the solution. However, I suggest you do the following.

1. Change the log from info to debug if you have not already done so (http.conf LogLevel debug). This will allow you to look for errors that are specifically associated with the set manifest files that you are trying to use. These errros can lead you in the right direction.

2. Follow all of steps the troubleshooting steps in the link that I provided in my original message: http://help.adobe.com/en_US/flashmediaserver/devguide/WS0432746db30523 c21e63e3d12efac195bd-8000.html

3. Are you using the f4mconfig.html generator (Tools folder) to make the manifest files? if so, try to find a sample .f4m file to use. This started working for me after I used an .f4m manifest that I got online (instead of using the f4m manifest file generated by this tool). I don't know if there was an issue with the encoding of these files but it wouldn't hurt.

Enable the debug mode and see if you're getting any errors. That would be your best starting point.

March 31, 2014

Bad luck, I have already done this but not able to success.

Thanks.

March 11, 2014

One step closer:

Changed the crossdomain.xml file (more permissive settings).

Changed the encoding on FMLE to vp6. Working somewhat (don't know what I did to make it start streaming through hds).

But at least now I can get the individual streams in the set manifest file to work:

http://localhost/hds-live/livepkgr/_definst_/livevent/livestream1.f4m

http://localhost/hds-live/livepkgr/_definst_/livevent/livestream2.f4m

http://localhost/hds-live/livepkgr/_definst_/livevent/livestream3.f4m

BUT when I try to play the streams through the set manifest file from http://localhost/liveevent.f4m I'm getting the following error:

"The F4m document contains errors URL missing from Media tag." I'll search the forums to see if anyone else has come across this problem.

I used the f4m config tool to make the file. These are the file's contents:

<manifest xmlns="http://ns.adobe.com/f4m/2.0">

  <baseURL>http://localhost/hds-live/livepkgr/_definst_/liveevent/</baseURL>

  <media href="livestream1.f4m " bitrate="200"/>

  <media href="livestream2.f4m " bitrate="500"/>

  <media href="livestream3.f4m " bitrate="1000"/>

</manifest>

Thanks

Inspiring
March 11, 2014

Are you adding the query string in the stream URI?   livestream1?&adbe-live-event=liveevent

adbe-live-event=liveevent <------  liveevent is the directory where the .stream file is located to identify the stream on inbound http request f4m <xml> file.  If you aren't specifying the querystring, then the .stream file is stored in the name of the stream. livestream1, livestream2, livestream3..

Make sure you specify the QUERY STRING when sending stream to RTMP Address!

March 11, 2014

> Are you adding the query string in the stream URI?


Yes. I'm actually using livestream%i?adbe-live-event=liveevent  for so that FMS can generate the 3 multi-bitrate streams in the manifest.xml and liveevent.f4m files.

Thanks for the suggestion.