Python ffmpeg rtmp 循环推流脚本(热更新播放列表)

本文介绍了一种使用Python编写的脚本,该脚本配合ffmpeg进行rtmp推流时,能自动重读并更新播放列表,避免手动重启。即使发生播放错误或网络中断,脚本也能恢复播放,提供了一定的容错性和免维护性。播放列表文件是一个JSON字典,键为文件名(不包含后缀),值标记播放顺序。
摘要由CSDN通过智能技术生成

前排提醒:

此脚本已更新,并增加了自动断流续推功能,见下:

https://blog.csdn.net/tansuo2005/article/details/130573500?spm=1001.2014.3001.5502

使用ffmpeg进行rtmp推流时,播放列表是一次性载入的,如果要修改播放列表,需要手工重启ffmpeg,很是麻烦。

于是便写了一个简单的脚本,脚本每次播完一个文件后,都会立刻重读播放列表确认要播放的文件,达到了只要修改播放列表文件,无需重启ffmepg,当一个视频播完后,自动读取最新的播放列表播放的目的。

这个脚本还有一个额外的好处,那就是如果一个视频播放错误,或推流过程中暂时断网,不会导致异常退出,当网络恢复时,又会恢复播放(但不会续播,而是会播放网络恢复那一刻时的视频),达到了一定程度上的免维护。

播放列表文件(videolist.json):

{
 "file1": false,
 "file2": true,
 "file3": false,
 "file4": false
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在 Python 中使用 ffmpeg 进行本地 RTMP 推流,你可以使用 subprocess 模块来调用 ffmpeg 命令。以下是一个简单的示例代码: ```python import subprocess # ffmpeg 命令 ffmpeg_cmd = 'ffmpeg -f avfoundation -i "default" -c:v libx264 -preset ultrafast -tune zerolatency -f flv rtmp://localhost:1935/live/stream' # 启动 ffmpeg 进程 ffmpeg_process = subprocess.Popen(ffmpeg_cmd, shell=True) # 等待一段时间 # 这里只是为了让 ffmpeg 进程有时间进行推流,实际使用时可以根据需要调整等待时间 time.sleep(10) # 停止 ffmpeg 进程 ffmpeg_process.terminate() ``` 在上面的示例代码中,我们使用 subprocess 模块启动了一个 ffmpeg 进程,并向它传递了一个 ffmpeg 命令。这个命令会从默认音视频设备(Mac 上是 avfoundation)获取输入流,并将其编码为 H.264 视频和 AAC 音频格式,然后将结果推流到本地的 RTMP 服务器(地址为 rtmp://localhost:1935/live/stream)。我们还在代码中加入了一个等待时间,以确保 ffmpeg 进程有足够的时间来进行推流。最后,我们使用 terminate() 方法停止了 ffmpeg 进程。 需要注意的是,在上面的示例代码中,我们使用了 shell=True 参数来启用 shell 命令解释器。这样做可能会导致一些安全问题,因此在实际使用中,你可能需要使用更安全的方式来调用 ffmpeg 命令,例如使用 subprocess.call() 方法或者使用 ffmpeg-python 等第三方库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玩编程的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值