Flussonic Media Server可以对直播流进行录制,然后在提供播放服务。

我们首先来看如何为直播流配置录制功能,如下:

stream channel0 {

url tshttp://vlc:9090/;

dvr /storage;

}

stream channel2 {

url tshttp://vlc:9090/;

dvr @globalstorage;

}

stream channel3 {

url tshttp://vlc:9090/;

dvr swift://user=office:max&password=secretpass&@prod1.local:8080/movies;

}

dvr globalstorage /storage;

在上面的例子中,我们为直播流添加了dvr指令,在这个指令后有一个存储路径,也就是录制文件在什么位置存储。你可以在配置文件的用dvr指令定义一个全局配置(并不在某一个直播流的配置中),然后在每一个流中引用这个配置。最后,关于这个存储路径,你也可以指定网络存储的位置,例如AWS S3和Openstack Swift。

接下来,我们来学习一下关于录制的其它参数,举例如下:

1、2d:2d表示保留最近2天的,也可以用8h表示保留最近8小时的。

2、90%:你可以指定磁盘占用的上限为90%。

3、10G:你可以指定录制文件的最大容量为10Gbytes。

4、schedule=8:00-16:00: 你可以指定一个或多个时间段,只有在这个时间段内才录制。时间段可以精确的小时,也可以精确到分钟,也可以跨越午夜。多个时间段可以用逗号隔开。例如8:00-16:00,22-1:30

使用这几个参数的示例如下:

stream channel0 {

url tshttp://vlc:9090/;

dvr /storage 2d 90% 10G schedule=8:00-16:00;

}

注意:如果你不是要在服务器启动时自动开始录制,而是通过API来启动录制,比如从外部发起一个Http请求之后再开始按照上面的配置启动录制。这时你可以将dvr指令换成dvr_offline,其它没有任何变化

我们接下来,继续学习如何播放这些已经录制为文件的流,如下:

使用HLS播放,请使用下面的URL:

播放已经录制完成的文件:

http://flussonic:8080/ort/index-1409148900-3600.m3u8

其中1409148900代表北京时间2014年8月27日 22:15:00。 3600表示1个小时,也就是播放从这个时间开始的1个小时的视频。

如果不是要播放已经录制完成的文件,而是要播放直播流,也不确定要观看这个直播多久(因为不知道直播什么时候结束),那么你可以用now来表示现在最新的内容。这种场景比较适合观看哪些还没有结束的直播节目,但是又错过了开始时间,要从已经过去的某个时间点播放,你可以用下面的url:

http://flussonic:8080/ort/index-1409148900-now.m3u8

http://flussonic:8080/channel/archive/1409148900/now/index.m3u8

你也可以使用下面的播放url, timeshift_abs表示这是时移直播,并且采用绝对时间:

http://flussonic:8080/channel/timeshift_abs-11409148900.m3u8

对于在多语言(多个音频轨道)场景下的HLS播放:

1、对符合Apple,对符合Apple HLS 规范的播放终端,你可以用上面的URL。(注:苹果的规范是为每一路音频生成一个独立的播放列表)。

2、对于不符合Apple HLS规范的播放终端,你需要把上面url中的index替换为video,如下:

http://flussonic:8080/ort/video-1409148900-3600.m3u8

或采用下面的url,以支持回退到个时间点。

http://flussonic:8080/ort/video-1409148900-now.m3u8

或采用下面的url,从某个固定的时间点开始播放:

http://flussonic:8080/channel/timeshift_abs_video-1409148900.m3u8

使用HDS播放,请使用下面的URL:

http://flussonic:8080/channel/archive/1350274200/4200/manifest.f4m

http://flussonic:8080/channel/archive/1350274200/now/manifest.f4m

使用HTTP-MPEGTS播放,请使用下面的URL:

http://flussonic:8080/channel/archive/1350274200/4200/mpegts

使用DASH播放,请使用下面的URL:

http://flussonic:8080/channel/Manifest-1350274200-4200.mpd

使用RTMP播放,请使用下面的URL:

rtmp://flussonic/static/ort?from=1398267588&to=1398268588

其中参数from表示开始时间,参数to是结束时间,它是可选的。另外你也可以加上speed=2, speed=4 或 speed=8这样的参数,快速播放(但没有声音)

如果是使用基于Flash的RTMP播放,请参考下面的代码(以JWPlayer为例):

var flashvars = {

streamer:'rtmp://flussonic/static',

file: 'ort?from=1398267588&to=1398268588',

'rtmp.tunneling':false,

autostart: true

};

swfobject.embedSWF('/flu/jwplayer.swf',element,'640','480','10.3','false', flashvars,

{allowfullscreen:'true',allowscriptaccess:'always'},

{id:'jwplayer',name:'jwplayer'}

);

注意:上面streamer参数中的rtmp连接URL中的"static"是rtmp规范中的Application Name,也可以使用"rtmp"。但是如果你的流名本身就带有斜杠"/",那么斜杠"/"前面的部分就默认为Application Name,斜杠"/"后面的部分默认为Stream Name。

使用RTSP播放,请使用下面的URL:

rtsp://flussonic/ort?from=1398267588&to=1398268588

参数和上面介绍rtmp播放url的一样。

如果你的直播源在某一段时间出现了中断(比如网络异常断开1分钟),那么这段时间录制的内容是空的,默认情况下,在Hls播放的切片列表中,这一段时间是空的列表,导致画面暂停不动。

如果你要跳过这段时间,请使用ignore_gaps=true参数。如下:

http://your-flussonic-server-domain/your-stream/timeshift_abs-123123123.m3u8?ignore_gaps=true

我们接下来继续学习,如何利用录制的视频实现直播时移功能。

播放直播时移内容时,有两种方式来确定开始时间点,一个是相对时间,比如相对现在最新的时间点回退1个小时;另一个是给定一个绝对时间(Unix时间戳)。播放URL格式如下:

相对时间:

MPEG-TS: http://flussonic:8080/channel/timeshift_rel/3600

HLS: http://flussonic:8080/channel/timeshift_rel-3600.m3u8

mono HLS://flussonic:8080/channel/timeshift_rel_mono-3600.m3u8

绝对时间:

MPEG-TS: http://flussonic:8080/channel/timeshift_abs/1350274200

HLS: http://flussonic:8080/channel/timeshift_abs-1409148900.m3u8

hls: http://flussonic:8080/channel/timeshift_abs_video-1409148900.m3u8

如果你需要配置一个直播流,它的内容来自Flussonic Media Server上的另一个直播流,只是延后一个固定时间(比如1小时),可以用下面的方式来配置:

stream channel {

url tshttp://vlc:9090;

dvr /storage 10080;

}

stream channel-1hour timeshift://channel/3600;

接下来,我们了解一下,如何将这些录制的文件导出为MP4文件:

请使用下面的URL在内存中生成MP4文件,并下载到本地:

http://flussonic:8080/channel/archive-1350274200-4200.mp4

请使用下面的URL在内存中生成TS文件,并下载到本地:

http://flussonic:8080/channel/archive-1350274200-4200.ts

请使用下面的URL在Flussonic Media Server上生成MP4文件,存储的路径和原始录制数据在同一个目录下:

http://flussonic:8080/channel/save-mp4-1350274200-4200?file=recording1.mp4

下面,我们介绍关于DVR的API,如下面所示,你可以用from,duration或者to这样的参数来查询录制信息:

curl 'http://flussonic:8080/myStream/recording_status.json?from=1492776600&duration=3600'

调用这个http接口后,你会得到下面的响应:

[{"stream":"myStream","ranges":[{"duration":3642,"from":1492776599}],"brief_thumbnails":[1492776599,1492776605,1492776617,1492776629,1492776641,1492776653,

1492776665,1492776677,1492776689,1492776701,1492776713,1492776725,1492776737,1492776749,1492776761,1492776773,1492776785,1492776797,1492776809,1492776821,

1492776833,1492776845,

....]}]

锁定一段录制内容,防止被自动删除。因为存储容量、存储时间范围的限制,有些已经录制的内容会被自动删除,Flussonic提供了一个机制,可以用API来让某段时间的录制内容不被自动删除掉。

curl -u flussonic:letmein! --

data '{"stream":"ort","from":1483971680,"duration":1000}' http://192.168.2.3:8080/flussonic/api/dvr/lock

你可以用API查询,哪些录制内容已经被锁定了。如下:

curl http://192.168.2.3:8080/ort/recording_status.json?from=1483970680\&to=now\&request=ranges,locks

得到的响应如下:

[{"stream":"ort","ranges":[{"duration":3687,"from":1483970675},{"duration":56758,"from":1483974376},{"duration":332,"from":1484031143}],

"locks":[{"duration":1004,"from":1483971680}]}]

DVR也支持集群功能,也就说在源服务上录制,然后实时备份到其它服务器上。请参考如下服务器的配置:

source origin1 {

dvr /storage 2d;

}

在上面的配置中,用source指令定义了一个源服务器(主机名、域名或IP地址),这样源服务器就会将录制的内容文件自动发送到这台服务器上。

微软流媒体服务器直播,流媒体服务器Flussonic Media Server对直播流进行录制相关推荐

  1. plex实现流媒体服务器_如何从Plex Media Server离线查看下载和同步媒体

    plex实现流媒体服务器 Streaming content from your Plex Media Server is great, but sometimes-like when you're ...

  2. windows 电影服务器系统,电影服务器如何运行media服务

    [IT168 服务器学院]本章讨论如何配置计算机以运行 Windows Media 服务,如何优化服务器以尽可能获得最优性能以及如何保证服务器的安全.我们首先讨论服务器的硬件配置. 计算机硬件配置 不 ...

  3. Adobe Media Server 5(AMS)的安装及使用

    一.什么是Adobe Media Server? Adobe Media Server也叫Adobe Flash Media Server(FMS),是Adobe出品的一款流媒体服务器,它使用Adob ...

  4. FLASH MEDIA SERVER破解版下载.

    点击下载 Flash Media Server 将传统的流媒体功能与灵活的开发环境结合起来,为最广泛的群体创建和提供创新的.交互式媒体应用.该组合使组织创建和交付广泛的媒体体验,包括传统的媒体交付应用 ...

  5. Flash Media Server安装

    1.什么是Flash Media Server ? 简称FMS.服务器是用于用户之间相互通讯的新平台;它集成了Flash多媒体交互的特性;又添加了实时音频和实时数据流等新特色.. 使用该平台,你可以通 ...

  6. linux vlc流媒体服务器,vlc media server rtsp 流媒体服务器搭建成功经验分享

    vlc 由videolan.org 出品,开源免费的一款本地和网络播放器,支持个音视频格式非常多,还可以用来搭建 rtsp 流媒体服务器,非常好用,支持的平台很多:windows.mac.linux都 ...

  7. 树莓派使用nginx+rtmp搭建音频直播流媒体服务器

    前言 想使用树莓派连接usb音频采集卡实时采集收音机接收到的音频,树莓派上运行着由nginx+RTMP 搭建的直播流媒体服务器,这样就可以在客户端上通过支持rtmp串流协议的播放器就可以正常接收到音频 ...

  8. java做flv直播服务器,EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略...

    EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作. 其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持RTMP ...

  9. 流媒体服务器NTV Media Server G3性能测试

    大家好,我是资深测试工程师李工,今天我来和大家一起对云视睿博的高性能流媒体服务器NTV Media Server G3做一次性能测试. 今天测试有一个小目标,那就是验证在一台普通的PC机上,NTV M ...

最新文章

  1. java file 其他电脑上,java - Jar文件无法在另一台PC上执行
  2. 在matlab中清除command history中的内容
  3. ClassLoader.getSystemResourceAsStream()
  4. Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法
  5. 1.5 关于这门课-深度学习-Stanford吴恩达教授
  6. Java NIO 教程
  7. 【计蒜客 - 蓝桥训练】阶乘位数(数学,对数运算,求阶乘位数)
  8. LeetCode 2166. 设计位集(Bitset)
  9. 【记录】Docker安装后出现 Cannot connect to the Docker daemon
  10. Esxi自动化配置脚本
  11. 一些常用的正则表达式(个人收集)
  12. Power Apps 中显示 SharePoint Online 数据
  13. java判断闰年中闰月_农历中闰年闰月的算法
  14. 百度翻译API接口的使用
  15. H5 - 手机 APP 接入支付宝、微信、银联支付流程汇总
  16. JavaScript设计模式(2)—— 多种继承方式的实现及原理
  17. 支付业务与技术架构学习总结(9)——银行核心系统之清算体系
  18. 如何快速学习一门新技术
  19. 快学 Go 语言 第 3 课 —— 分支与循环
  20. 一步一步做项目(3)创建Web项目

热门文章

  1. Python实践:CSDN图片水印批量去除
  2. Unity 托管内存(Managed Memory)
  3. 20200909 Vedio Game 游戏平台数据分析
  4. 康考迪亚大学应用计算机科学,2020年康考迪亚大学IT专业会学什么内容
  5. java获取月份有几周_java 获取当前日期是本月的第几周,且当月一共有几周
  6. 历年诺贝尔物理学奖获得者名单及研究领域(1901-2016)
  7. 初识QT之QTWidget窗口
  8. 本科生晋升GM记录 Kaggle比赛进阶技巧分享
  9. 硕士论文要不要附matlab程序,论文必须要有附录吗_毕业论文附录一定要写吗_毕业论文中附录是不是必须要写的...
  10. touchID 和 FaceID~1