小编abr*_*ski的帖子

FFMPEG RTMP流录制超时

[已解决] - 最终编辑中的解决方案我正在使用 ffmpeg 录制 rtmp 直播流,并希望添加一个标志,该标志将在新数据停止到达时自动停止处理。

如果我启动和停止脚本(通过按需终止进程来停止),一切都很好,录音将被保存并可以播放。但是,当在没有手动调用 STOP 的情况下从源停止流时,脚本仍将运行一段时间,并且生成的文件将被损坏(使用手动停止调用进行测试 - 有效,并在录制之前停止流,模拟浏览器/选项卡关闭或断开连接 - 失败)

我正在运行的命令

$command = "ffmpeg -i {$rtmpUrl} -c:v copy -c:a copy -t 3600 {$path} >/dev/null  2>/dev/null &";
$res = shell_exec($command)
Run Code Online (Sandbox Code Playgroud)

我尝试在输入之前和之后添加 -timeout 0 选项,如下所示

$command = "ffmpeg -timeout 0 -i {$rtmpUrl} -c:v copy -c:a copy -t 3600 {$path} >/dev/null  2>/dev/null &"; 
Run Code Online (Sandbox Code Playgroud)

$command = "ffmpeg -i {$rtmpUrl} -c:v copy -c:a copy -timeout 0 -t 3600 {$path} >/dev/null  2>/dev/null &";
Run Code Online (Sandbox Code Playgroud)

但没有任何改善。

我在这里缺少什么?当新数据停止从直播中产生时,有什么方法可以自动停止脚本(意味着流停止并且录制也应该停止)。

注意 $rtmpUrl 和 $path 已被检查,只要脚本在直播结束前停止,一切都会正常。

任何建议都将受到高度赞赏 …

ffmpeg rtmp video-streaming video-recording

4
推荐指数
1
解决办法
6146
查看次数

标签 统计

ffmpeg ×1

rtmp ×1

video-recording ×1

video-streaming ×1