在过去的版本中,由于录制崩溃,录制生成的 MP4 文件可能无法播放。针对该问题,自 3.0.3 版本起,声网录制 SDK 提供如下解决方案:
crash_restore.sh
脚本。当录制服务因多次崩溃而异常退出时,你可以运行该脚本将 TS 文件转封装为 MP4 文件,并修复内容缺失的 uid_UID_timestamp.txt
文件。声网录制 SDK 会在以下场景的录制过程中生成 TS 文件:
录制模式 | 录制内容 | 参数设置 | 录制过程中生成的文件 (无录制崩溃) | 录制完成后生成的文件(无录制崩溃) |
---|---|---|---|---|
单流录制 | 同时录制音视频 | 默认设置 | ||
合流录制 | 仅录制视频 | --isVideoOnly 1 --isMixingEnabled 1 |
一个 TS 视频文件 | 一个 MP4 视频文件 |
合流录制 | 同时录制音视频 | --isMixingEnabled 1 --mixedVideoAudio 2 |
一个 TS 音视频文件 | 一个 MP4 音视频文件 |
在不同录制模式下,根据单次录制进程中录制崩溃发生的次数,你需要对录制文件进行不同的修复操作,具体如下表所示:
崩溃次数 | 单流录制 | 合流录制 |
---|---|---|
崩溃小于 4 次 | uid_UID_timestamp.txt 文件会出现内容缺失。uid_UID_timestamp.txt 文件。如果你需要用转码脚本将每个 UID 的音频文件和视频文件合并成一个 MP4 文件,则需要先运行 crash_restore.sh 脚本修复 uid_UID_timestamp.txt 文件。 |
|
崩溃等于 4 次 | uid_UID_timestamp.txt 文件会出现内容缺失。crash_restore.sh 脚本所有 TS 文件转封装为 MP4 文件。该脚本同时会修复 uid_UID_timestamp.txt 文件。 |
crash_restore.sh 脚本将所有 TS 文件转封装为 MP4 文件。 |
文件准备:
确保录制文件的存储路径可访问。
输入以下命令行:
$ ./crash_restore.sh <recorderDir>/
其中,recorderDir
为录制文件存放的目录。
输入命令行后,脚本会将指定目录下所有 TS 文件逐一转封装为 MP4 文件,并对 uid_UID_timestamp.txt
文件做修复处理。
转封装后的 MP4 文件的数量和主名与源 TS 文件一致,后缀名为 mp4
。使用脚本完成转封装后,TS 文件不会被删除,以免因修复异常而需要再次使用。
如要将录制文件夹 20200915
下的 TS 文件转封装为 MP4 文件并修复 uid_UID_timestamp.txt
文件,命令如下:
$ ./crash_restore.sh 20200915/
修复前:
修复后: