Copy link to clipboard
Copied
I've installed Flash Media Interactive Server 4.5 and after installation I successfully streamed to iOS devices.
Today, streaming to iOS devices, suddenly stopped working. Streaming to other Flash compatible devices works just fine.
I use JWPlayer to connect and that gives the following error message:
The video playback was aborted due to a corruption problem or because the video used features your browser did not support:
http://my.fms.url/hls-live/livepkgr/_definst_/live/mystream.m3u8
Some times, if I reload the site and try again, I do get a few seconds of playback of the live stream, then the playback stops with the same error message, and I can't seem to be able to play back the stream ever again.
I've tried deleting the .stream-files generated in the ApplicationsFolder\livepkgr\events\_definst_\live as well as the files generated in ApplicationsFolder\livepkgr\streams\_definst_\mystream but that doesn't help.
I use Adobe Media Live Encoder 3.2 to stream to the server, using H.264 and AAC.
As I mentioned, this has worked before and, as far as I remember, haven't made any configuration changes since it last worked.
Copy link to clipboard
Copied
Hi,
Did you made any upgrade to iOS version on your device. Also, check playing VOD streams .. Just to confirm whether there are some issues in live configurations or it is just player side issue.
To discard the player side issue, try playing on quicktime on iMac.
Also try Safari on i-devices..
Copy link to clipboard
Copied
Hi,
I have not made any iOS upgrades between the time it worked and now.
Playing VOD streams doesn't work either. I thought they did, but they have stopped working as well.
The VOD/Live streams makes JWPlayer report the error previously stated. When I put the URL in the error message directly into Safari on iOS I get an error saying "The operation could not be completed".
If I try playing the same URL in quicktime on OSX I get the same error message but it also includes "OSStatus error -12936).
If I try accessing the URL in a regular windows browser the m3u8 file is downloaded.
I have recently made some configuration changes to the FMS, but I was certain HLS playback worked even after those changes... now I'm not so certain any more.
The changes I've made is to not have FMS listen on port 80. Apache now listens on port 80 and not 8134.
I changed the applications folder in fms.ini to another folder. I also changed the folders for the hls-live and hls-vod config in httpd.conf for Apache to point to the same folder.
As far as I know, that's all the config changes I've made.
EDIT: I'm using FMS 4.5.0 r297
EDIT 2: I restarted FMS earlier, and now VOD streams seems to work again (though not all of them). The live streams starts, but shows a very old live stream (not what I'm streaming at the moment) and stops after a while, never showing the current live stream.
I'm still very puzzled about this intermittent working/failing behaviour.
Copy link to clipboard
Copied
Can you paste your httpd.conf settings here? Also when you restarted server - i hope you made sure all your streams in "livepkgr" (also .stream files in events folder) were deleted.
Copy link to clipboard
Copied
I tried stopping the server and deleting the livepkgr streams and events, and when I restarted the server (and live stream) it seems to work correctly again. I do believe my live streams problems was also present some time after having done this earlier so I'm gonna stream for a bit now, stop it, then start again tomorrow to see if I can still stream correctly.
In the meantime, here's my httpd.conf as requested:
----------------------------------------------------------------
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.2/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>
# for a discussion of each configuration directive.
#
# Please see httpd.conf.orig for the configuration of a default
# (non-FMS) installation of apache.
Listen 80
# If you plan to run FMS as root on linux, you _must_ specify a
# valid user, with access to the FMS installation direction, or
# apache will not run.
#
# If you've used the default installer, nobody (or whatever other
# username you gave to the installer) will work here.
#
# If you're running a developer build under your own home directory,
# you should use your own username.
AccessFileName .htaccess
ServerSignature On
UseCanonicalName Off
HostnameLookups Off
Timeout 120
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ErrorLog logs/error_log
LogLevel info
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access_log combined
DocumentRoot "../webroot"
DirectoryIndex index.html index.html.var index.php index.php3 index.php4 index.php5 index.py index.pl index.rb
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Satisfy all
</Directory>
<Directory "../webroot">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /documentation ../documentation/
<Directory ../documentation/>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /icons/ "icons/"
<Directory "icons">
Options MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /error/ "error/"
ScriptAlias /cgi-bin/ "cgi-bin/"
<Directory "cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.0.0.0/8
Allow from 172.16.0.0/12
Allow from 192.168.0.0/16
Allow from 127.
</Location>
ExtendedStatus On
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 10.0.0.0/8
Allow from 172.16.0.0/12
Allow from 192.168.0.0/16
Allow from 127.
</Location>
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
<IfModule mpm_winnt_module>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
<IfModule worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
<IfModule mpm_winnt_module>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
<IfModule worker_module>
LoadModule cgid_module modules/mod_cgid.so
</IfModule>
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule headers_module modules/mod_headers.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
<IfModule mpm_winnt_module>
LoadModule isapi_module modules/mod_isapi.so
</IfModule>
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
LoadModule status_module modules/mod_status.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule f4fhttp_module modules/mod_f4fhttp.so
LoadModule hlshttp_module modules/mod_hlshttp.so
LoadModule jithttp_module modules/mod_jithttp.so
##############################################################################
# The following section enables caching of Just-In-Time packaged content #
# Use htcacheclean tool to manage the amount of data that is cached on disk. #
# See Apache documentation for its usage. #
# http://httpd.apache.org/docs/2.2/programs/htcacheclean.html #
# Make sure the directory specified by the CacheRoot directive exists. The #
# default is a directory named cacheroot that is directly under the Apache #
# installation directory. #
# For more information on content caching, see Apache documentation #
# http://httpd.apache.org/docs/2.2/caching.html #
##############################################################################
# Uncomment this to enable caching
#LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
LoadModule disk_cache_module modules/mod_disk_cache.so
<IfModule mod_disk_cache.c>
CacheEnable disk /hds-vod
CacheEnable disk /hls-vod
CacheRoot cacheroot
CacheMaxFileSize 10000000
CacheLock On
</IfModule>
</IfModule>
<IfModule f4fhttp_module>
<Location /vod>
HttpStreamingEnabled true
HttpStreamingContentPath "../webroot/vod"
Options -Indexes FollowSymLinks
</Location>
# map old style url to new (as of FMS 4.5), more compact url
Redirect 301 /live/events/livepkgr/events /hds-live/livepkgr
<Location /hds-live>
HttpStreamingEnabled true
HttpStreamingLiveEventPath "E:\FlashMediaApplications"
HttpStreamingContentPath "E:\FlashMediaApplications"
HttpStreamingF4MMaxAge 2
HttpStreamingBootstrapMaxAge 2
HttpStreamingFragMaxAge -1
Options -Indexes FollowSymLinks
</Location>
</IfModule>
<IfModule hlshttp_module>
<Location /hls-live>
HLSHttpStreamingEnabled true
HttpStreamingLiveEventPath "E:\FlashMediaApplications"
HttpStreamingContentPath "E:\FlashMediaApplications"
HLSMediaFileDuration 8000
HLSSlidingWindowLength 6
HLSFmsDirPath ".."
HLSM3U8MaxAge 2
HLSTSSegmentMaxAge -1
# Uncomment the following directives to enable encryption
# for this location.
# HLSEncryptionScope server
# HLSEncryptCipherKeyFile "../phls/liveeventkey.bin"
# HLSEncryptKeyURI "https://<ServerName>/hls-key/liveeventkey.bin"
Options -Indexes FollowSymLinks
</Location>
<Location /hls-vod>
HLSHttpStreamingEnabled true
HLSMediaFileDuration 8000
HttpStreamingContentPath "E:\FlashMediaApplications"
HLSFmsDirPath ".."
# Uncomment the following directives to enable encryption
# for this location.
# HLSEncryptionScope server
# HLSEncryptCipherKeyFile "../phls/vodkey.bin"
# HLSEncryptKeyURI "https://<ServerName>/hls-key/vodkey.bin"
Options -Indexes FollowSymLinks
</Location>
</IfModule>
<IfModule jithttp_module>
<Location /hds-vod>
HttpStreamingJITPEnabled true
HttpStreamingContentPath "E:\FlashMediaApplications"
JitFmsDirPath ".."
Options -Indexes FollowSymLinks
# Uncomment the following directives to enable encryption
# for this location.
# EncryptionScope server
# ProtectionScheme phds
</Location>
</IfModule>
TypesConfig conf/mime.types
MIMEMagicFile conf/magic
DefaultType text/plain
AddType video/x-flv .flv
AddType video/MP2T .ts
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-mpegurl .m3u8
AddHandler send-as-is asis
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
<IfModule userdir_module>
UserDir disable
</IfModule>
<IfModule dav_fs_module>
DAVLockDB tmp/dav/lockdb
</IfModule>
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIconByType (VID,/icons/movie.gif) application/x-shockwave-flash
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
AddDefaultCharset UTF-8
<IfModule mod_negotiation.c>
<IfModule mod_include.c>
<Directory "error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback
</Directory>
</IfModule>
</IfModule>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
#Uncomment following for enabling https based key serving
#for HLS.
#Include conf/httpd-hls-secure.conf
Copy link to clipboard
Copied
I did a bit of streaming live yesterday, and that worked on iOS devices. I stopped the stream and tried again this morning.
Now the live stream on iOS only plays the last few seconds (30 or so) from yesterday instead of showing a continous stream of todays data. Why is that?
VOD playback seems to work just as well today as yesterday.
BTW, if restarting FMS necessitates deleting some files on the server, how should I handle if the server is restarted outside of my control?
Copy link to clipboard
Copied
I am getting a feeling that you are on Developer Edition - can you confirm the same. If it is - then your recording would stop after 30 minutes no matter how long you are publishing. This might be the reason why you are getting stale data.
Copy link to clipboard
Copied
No, I'm on the Interactive Edition. I haven't done any purposeful changes to actually record anything, so unless the livepkgr comes with recording enabled by default, it shouldn't be recording (I don't have a main.asc file in the livepkgr application folder).
Copy link to clipboard
Copied
HDS and HLS in FMS is based on f4f recording which happens in "livepkgr" (to answer your question - it does record by default and HDS/HLS Streaming is based on that recorded f4f files)
Can you check your core and applications logs of FMS and let me know what do you see when you try to stream HLS and is getting stale data.
Copy link to clipboard
Copied
I was finally able to reproduce this live stream error.
Yesterday I streamed successfully for several hours. I stopped the live stream yesterday and restarted it this morning. When I now play the live stream on an iOS device I get the last seconds of yesterday's stream.
the following is in the core log:
2012-08-31 | 10:00:36 | 7772 | (e)2611178 | Error from libf4f.dll: F4V error: 1280. | - |
2012-08-31 | 10:00:36 | 7772 | (e)2611423 | Failed to record myapp (Unknown Error). | - |
And this is from the application log:
2012-08-31 | 10:00:26 | 7772 | (s)2641173 | f4f:myapp - NetStream.Publish.Start | - |
2012-08-31 | 10:00:26 | 7772 | (s)2641173 | f4f:myapp- NetStream.Play.Reset | - |
2012-08-31 | 10:00:26 | 7772 | (s)2641173 | f4f:myapp- NetStream.Data.Start | - |
2012-08-31 | 10:00:26 | 7772 | (s)2641173 | f4f:myapp- NetStream.Record.Start | - |
2012-08-31 | 10:00:36 | 7772 | (s)2641173 | f4f:myapp- NetStream.Record.NoAccess | - |
2012-08-31 | 10:00:36 | 7772 | (s)2641173 | f4f:myapp- NetStream.Record.Stop | - |
Copy link to clipboard
Copied
*bump*
Copy link to clipboard
Copied
You are getting old content because your recording has failed. That is expected. What is not expected though is the recording failure.
Do you change any codecs or configuration between FMLE restarts and also do you have StreamSyncronization on at FMLE end.
Also if its possible please upgrade to latest version of 4.5 i.e. 4.5.3 and see if that helps.
Copy link to clipboard
Copied
No codec changes between FMLE restarts. I don't know what StreamSynchronization is, so I guess that's not on (if not on by default).
Copy link to clipboard
Copied
*Bump*
The playback problems got somewhat resolved... for a while.
Now they're back.
When playing back a live stream on an iOS device the playback is blank. Just a black player. It says it is streaming something that's live, but displays no picture.
Other than occasionally restarting the server and deleting the previously mentioned files, there are no changes.
Copy link to clipboard
Copied
Copy link to clipboard
Copied
Copy link to clipboard
Copied
The video stream is still black when I try to play it on an iOS device, even after following the instructions in the last link you sent.
Copy link to clipboard
Copied
I have a different scenario but very similar symptoms:
I am seeking to stream audio-only to flash and iOS players, and am also using FME3.2 FMS4.5 and JWPlayer.
When I encode a/v AAC/h.264 in FME, I can receive the live stream in both flash and iOS players.
When I encode aud-only, the flash player receives fine, but the iOS player plays the last segment of the (progressive download?) previous a/v stream, and then it stops.
I am still using the .m3u8 extension for the iOS stream, and wonder that the extension needs to change for audio-only.
Any ideas?
Thanks,
Joe