使用 Wowza 录制直播流 (HTTPLiveStreamRecord)
直播录制,从前的一个免费的插件,已被作为一个提供更多录制直播流为点播文件的接口纳入 Wowza Media Server 3.5。这一功能可以让你使用基于 web 的用户接口,HTTP URL 查询或者以编程方式控制直播流的录制过程。包含有强大的 API 以支持分割进程中的直播流到 MP4 文件或者 FLV 文件,支持基于视频时间,时钟时间或者文件大小的切割点。
说明:
我们建议你安装最新的 Wowza Media Server 以获得对直播流录制的最新补丁和功能加强。下载后,安装指南查看压缩包中的 README.txt 文件。你还可以下载示例模块来了解如何使用 API 创建模块(下载 LiveStreamRecordExampleModule_3.5.zip)。查看压缩目录中的README.html 文件获得更多说明。
本文适用于 Wowza Media Server 3.5 或以后的版本。查看 Wowza Media Server 之前版本的 LiveStreamRecord 插件包可以查看 如何获得LiveStreamRecord 插件、API 和示例。
先决条件
定义身份验证方法
可以在 %Wowza%/conf/VHost.xml 文件中激活 Wowza Media Server 的直播录制功能。VHost.xml 中默认的关于直播录制的配置如下:
点击 start recording 后,弹出 Start Recording 对话框。
在 Start Recording 对话框里,定义如何按需录制直播流。录制直播流到单一文件
在 Action 中,选择 Start Recording 来录制直播流到点播文件(这是默认设置)。然后在Recording Options 中,选择以下选项来定义当直播流重启时要做的事情:
Version existing file 直播流重启后录制到一个新的文件里(这是默认设置)。例如,如果你在录制直播流到myStream.mp4 文件中,直播流重启之后会录制到一个新的名为 myStream_2013-05-12-15.08.10.645-PDT_0.mp4 文件中。Append to existing file 直播流重启后,录制追加到现有文件(比如 myStream.mp4)。
Overwrite existing file 直播流重启后以一个同名的新文件将现有文件覆盖掉(比如 myStream.mp4)。
将直播流录制到多个文件
把直播流录制到多个点播文件,选择以下选项来定义如何切割录制文件:
定义切割文件的最大值,在 Action 中,选择 Start Recording Segment By Size。然后在Segment Size 中定义文件最大值,单位是百万字节(MB)。默认大小为 10 MB。定义切割文件最长时间,在 Action 中,选择 Start Recording Segment By Duration。然后在egment Duration 中定义最长时间:<hours>:<minutes>:<seconds>.<milliseconds>。默认值为 15 分钟(00:15:00.000)。
按照预定计划分割文件,在 Action 中,选择 Start Recording Segment By Schedule。然后在Segment Schedule 中使用 crontab 表达式来定义计划参数。默认值以每个小时的起始时间分割文件。
6. (可选)。在 Start Recording 对话框中,你可以为录制的文件定义输出选项。在 Custom Output Path and File Name 区域中,点击 Enable,然后配置以下选项:
Stream Format 选择录制文件的格式,只能是 MP4 或者 FLV。默认为 MP4。Path 定义录制文件存储在电脑的物理路径。默认情况下,文件存放在 %wowza%/content 目录。如果你想存放在其他路径,必须先确认该目录必须存在,然后定义其物理路径。
File Name 要改变录制文件的默认输出文件名,修改默认的模版字符串。你可以添加一些有效的文件名字符并修改模版键的字符串值。关于更多使用模版字符串的信息,参考Defining filenames of recorded segments with template strings。
7. 点击 Submit
点击 Submit 之后,Wowza Media Server 将会开始录制直播流,并且 Wowza Media Server: Live Stream Record 页面将显示选中的选项。
注:Wowza Media Server: Live Stream Record 页面可能不会在你点击Submit 之后立即正确显示结果。你需要刷新该页面来查看正确状态:Recording in progress。
Live Stream Record 页面中,你可以点击 stop recording 来停止直播流的录制。如果你点击split recording,Wowza Media Server 将会录制直播流到新的文件。
注:当你点击split recording 时,Wowza Media Server 会立即停止向当前录制分割文件中写数据,并打开一个新的分割文件来继续录制。如果前面的分割文件尚未超出最大视频时间,数据也会被写到新的文件。
使用 URL 查询记录直播流
你可以使用 HTTP 的 get 方法和 URL 查询参数来请求录制直播流。以下 URL 请求表示录制直播流最少需要的几个 RUL 参数。filePath has been overridden in application.xml, value=C:/content/myStream.mp4versionFile has been overridden in application.xml by liveStreamRecordOption=overwriteappendFile has been overridden in application.xml by liveStreamRecordOption=overwritestartOnKeyFrame has been overridden in application.xml, value=falserecordData has been overridden in application.xml, value=falsesegmentSize has been overridden in application.xml, value=102400segmentDuration has been overridden in application.xml, value=10000segmentSchedule string has been overridden in application.xml, value=2 * * * * *
如何获得 LiveStreamRecord 插件、API 和示例
以下下载 LiveStreamRecord 插件包适用于 Wowza Media Server 3.1.2 或以前版本。这些插件包并不能支持 Wowza Media Server 3.5 或以后版本支持的所有直播流录制功能。要了解更多关于你自己版本的 Wowza Media Server 的 LiveStreamRecord 插件包,查看压缩目录中的 ReadMe.html 文件。
Wowza Media Server 3.0.3.08 to 3.1.2.* 版本:LiveStreamRecord_3.0.zip。
Wowza Media Server 2.0.0.04 to 2.2.4.* 版本的:LiveStreamRecord_2.0.zip。
Wowza Media Server Pro 1.7.x 版本的:LiveStreamRecord.zip。
附录:理解 crontab 表达式
在 Wowza Media Server 中,你可以使用 crontab 表达式将直播流计划性地录制到分割文件。crontab 表达式指定分割区间,以分、时、月、年、当月的天数或者每周的天数。可用的 crontab 属性是 (按顺序):
<Minute> <Hour> <Day_of_the_Month> <Month_of_the_Year> <Day_of_the_Week> <Year>
其中,
<Minute> - 指定分割时的分钟 (介于 0 到 59之间)。<Hour> - 指定分割时的小时 (基于 24 小时始终的 0 到 23 的值)。
<Day_of_the_Month> - 指定分割时的日期 (介于 0 到 31 之间)。要指定总是在每月的最后一天分割的话,配置 31.
<Month_of_the_Year> - 指定分割时的月份。你可以通过当月月份缩写 (比如,Jan) 或者数值 (比如,1) 指定月份。
<Day_of_the_Week> - 指定分割时在一星期的那一天。你可以通过当日缩写 (比如,Mon) 或者数值 (比如,1) 指定日期。
<Year> - 指定分割时在哪一年 (比如,2013)。原文链接:http://www.wowza.com/forums/content.php?123。