合并音视频文件
单流录制模式下,每个 UID 的音频和视频均分开录制,每个 UID 都有其对应的音频文件和视频文件。你可以使用我们的音视频合并脚本,合并每个 UID 的音频文件和视频文件。
前提条件
环境准备
- 以下物理或虚拟服务器:
- Ubuntu 14.04+ x64
- CentOS 6.5+(推荐 7.0)x64
- 安装 python 2.7 及以上版本
录制文件准备
- 确保你已经使用声网本地服务端录制 SDK 单流录制生成录制文件。
- 确保录制文件夹内有
recording2-done.txt
文件,标识本频道录制结束。
转码步骤
获取音视频合并转码脚本
前往资源获取下载本地服务端录制 SDK 并解压,在 tools
文件夹下找到 ffmpeg.tar.gz
和 video_convert.py
文件。
打开终端,进入 tools 文件夹,通过 tar -xf ffmpeg.tar.gz
命令解压 ffmpeg.tar.gz
,确保和 video_convert.py
在同一目录下。
设置转码参数
解压完成后,设置转码参数后即可开始转码。
转码参数介绍
你可先如下图所示,输入命令行 python video_convert.py
,查看转码参数介绍。
也可通过下列表格了解各参数。
参数 | 描述 |
---|---|
-f | 必设,指定待转码文件的存储路径。 |
-m | 设置转码模式,可设为:
详见下文 |
-s | 设置保存模式,表示转码是否需要严格时间同步,即用户离开频道的时间是否占转码文件时长:
注意 此参数仅在 |
-p | 设置转码后视频的帧率,单位为 fps。默认值为 15 fps。取值范围为 5 fps 到 120 fps。如果设置低于 5 fps,则按 5 fps 执行。具体设置请参考分辨率、帧率、码率对照表。 |
-r | 设置转码后视频的分辨率,格式为 宽 高 ,例如 -r 640 360 。具体设置请参考分辨率、帧率、码率对照表。 |
-m 参数介绍
在此之前,你需要了解录制 Segment 的概念。
录制 Segment 指每个 UID 从开始录制到结束录制这一过程。具体条件如下表所示。
该 UID 开始录制 | 该 UID 结束录制 | |
---|---|---|
自动录制 | 同时满足以下条件:
| 满足以下任一条件:
|
手动录制 | 同时满足以下条件:
| 满足以下任一条件:
|
了解录制 Segment 的概念后,我们再来看 -m
参数不同设置的具体行为。
-m
参数不同设置的行为视录制启动模式而定。
为方便描述,以下我们假设每个 UID 均录制生成多个音频文件和视频文件。
自动录制模式
自动录制模式(默认录制启动模式,triggerMode
设为 0
)下,-m
参数不同设置的行为如下:
0
:把同一个 UID 的音频和视频按照录制 Segment 合并。一个 UID 的一个录制 Segment 对应一个音视频文件,文件名为UID_timestamp_av.mp4
。1
:把同一个 UID 的音频和视频按时间顺序合成一个文件。一个 UID 对应一个音视频文件,文件名为UID_0_merge_av.mp4
。2
:把同一个 UID 的音频按时间顺序合成一个文件。一个 UID 对应一个音频文件,文件名为UID_0_merge.m4a
。3
:把同一个 UID 的视频按时间顺序合成一个文件。一个 UID 对应一个视频文件,文件名为UID_0_merge.mp4
。
其中,timestamp
为服务器开始录制的时间戳,由年、月、日、小时、分钟、秒和毫秒组成,时区为 UTC + 0。例如 123_20190611073246073.aac
表示在 UTC 2019 年 6 月 11 日 7 点 32 分 46 秒 73 毫秒时开始录制的一个 UID 为 123
的用户的音频文件。如音频和视频的开始录制时间不一致,timestamp
为两个开始时间中较早的时间。
手动录制模式
手动录制模式(triggerMode
设为 1
)下,你需要手动开始录制和暂停录制。每一次开始/暂停视为一次录制 Session。请结合下图进行理解录制 Segment 和录制 Session。
在此模式下, -m
参数不同设置的行为如下:
0
:把同一个 UID 的音频和视频按照录制 Segment 合并。一个 UID 的一个录制 Segment 对应一个音视频文件,文件名为UID_timestamp_av.mp4
。1
:把同一个 UID 的音频和视频按照录制 Session 合并。一个 UID 的一个录制 Session 对应一个音视频文件,文件名为UID_X_merge_av.mp4
。2
:把同一个 UID 的音频按录制 Session 合并。一个 UID 的一个录制 Session 对应一个音频文件,文件名为UID_X_merge.m4a
。3
:把同一个 UID 的视频按录制 Session 合并。一个 UID 的一个录制 Session 对应一个视频文件。文件名为UID_X_merge.mp4
。
其中,X 为录制 Session 的序号,从 0 开始。
转码参数设置示例
下面结合具体案例来介绍转码参数的设置和最终得到的转码文件。
案例一:频道内有两个用户,UID 分别为 100
和 123
。录制 SDK 以自动录制模式加入频道进行录制。在此过程中 UID 100
用户曾离开频道,30 秒后再进入。因此 UID 100
用户有两个录制 Segment,对应两个音频文件和两个视频文件,UID 123
用户对应一个音频文件和一个视频文件。
可运行以下命令将每个 UID 的音视频合并成一个文件:
video_convert.py -f <待转码文件所在路径> -m 1 -s -p 30 -r 640 360
最终会生成两个转码文件:100_0_merge_av.mp4
和 123_0_merge_av.mp4
。UID 100
用户退出频道后再进入频道之间的 30 秒时长不会包含在内。如要将 30 秒时长包含在内,需要取消设置 -s。
案例二:频道内有两个用户,UID 分别为 100
和 123
。录制 SDK 以手动录制模式加入频道进行录制。在此过程中曾有一次暂停录制然后又开始录制,用户 123
和用户 100 中途多次进出频道。因此得到的录制文件中,UID 100
用户对应多个音频文件和多个视频文件,UID 123
用户也对应多个音频文件和多个视频文件。
可运行以下命令将每个 UID 的音视频文件按录制 Session 合并:
video_convert.py -f <待转码文件所在路径> -m 1 -p 30 -r 640 360
最终会生成四个转码文件:100_0_merge_av.mp4
,100_1_merge_av.mp4
,123_0_merge_av.mp4
和 123_1_merge_av.mp4
。
转码完成后,会生成一个 convert-done.txt
,标志转码成功;还会生成一个 convert.log
日志文件,和音视频文件在同一个目录下。
播放器支持
转码完成后的 MP4 文件可在下表所列的播放器中播放。
操作系统 | 支持播放器 |
---|---|
Linux |
|
Windows |
|
macOS |
|
iOS |
|
Android |
|