将不断生成的音频推送到 rtmp
如何在已安装 ffmpeg-
python
库的 python 3.10 程序中,将外部程序不断生成的动态音频,通过 ffmpeg 推送到指定的 rtmp 地址?
解决方案:使用管道 (pipe)
如果外部程序支持 pipe 输出,我们就可以通过读取该 pipe,将音频数据持续地流式传输给 ffmpeg。
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载
立即学习
“
Python免费学习笔记(深入)
”;
参考代码
通过这种方式,外部程序不断生成的音频数据将被动态写入 ffmpeg 流中,并推送到指定的 rtmp 地址。
ffmpeg -i pipe:0 -f mpegts rtmp://xxxxximport subprocess
# 开始外部程序,将输出重定向到管道
process = subprocess.Popen(['external_program'], stdout=subprocess.PIPE)
# 创建 ffmpeg 命令
command = ['ffmpeg', '-i', 'pipe:0', '-f', 'mpegts', 'rtmp://xxxxx']
# 连接 ffmpeg 输入到外部程序的输出管道
pipe = process.stdout
subprocess.call(command, stdin=pipe)