python实现rtmp推流

如果只需要推送单独的视频流或者音频流时,最简单的方式是用python启动一个ffmpeg命令行进程,然后往该进程写入视频或者音频原始数据即可。
推送视频流代码

复制代码
command = ['ffmpeg',
                    '-y', '-an',
                    '-f', 'rawvideo',
                    '-vcodec','rawvideo',
                    '-pix_fmt', 'rgb24', #像素格式
                    '-s', "{}x{}".format(width, height),
                    '-r', str(fps),
                    '-i', '-',
                    '-pix_fmt', 'yuv420p', 
                    '-vcodec', "h264",
                    '-f' , 'flv',                  
                    push_url]
pipe = subprocess.Popen(command, shell=False, stdin=subprocess.PIPE)

在需要写入视频帧时调用

复制代码
pipe.stdin.write(image.tostring())

推送音频流代码

复制代码
command = ['ffmpeg',
                    '-y', '-vn',
                    '-f', 's16le',
                    '-acodec','pcm_s16le',
                    '-ac', '1',
                    '-ar', '16000',
                    '-i', '-',
                    '-acodec', 'aac',
                    '-f' , 'flv',                  
                    push_url]
pipe = subprocess.Popen(command, shell=False, stdin=subprocess.PIPE)

在需要写入音频时调用

复制代码
pipe.stdin.write(frame.tostring())

在同时有音视频时,用ffmpeg命令行一直没有调试成功,最后只好用c++代码调用ffmpeg api实现,然后再封装成python函数。这里主要参考了ffmpeg源代码中examples/muxing.c,对于音视频时间戳的同步需要比较注意,在这篇文章中有详细介绍 https://zhuanlan.zhihu.com/p/675007477。 代码已经开源 https://github.com/lipku/python_rtmpstream

相关推荐
用户77833661321111 小时前
用 React Hook 封装搜索数据:useSerp 的防抖、缓存与错误处理
python·api
65岁退休Coder15 小时前
LangGraph v1.2.9 节点容错策略 & 流式输出 & 持久化记忆管理
后端·python·langchain
ikun_文17 小时前
Django框架路由Router的使用
python·pycharm·django
IvanCodes17 小时前
Python 基础语法(二):字符串与常用操作
python
昭昭日月明18 小时前
LangChain 生态:从链到代理,开发者需要掌握的三大核心
python·langchain·agent
Csvn18 小时前
🐍 Day 8:面向对象编程
后端·python
程序员天天困18 小时前
向量检索不准怎么办:混合检索与 Rerank 重排序召回优化实战
后端·python·ai编程
alphaTao19 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
苏灿烤鱼19 小时前
当 AI Agent 遇见真实科学环境:深度拆解 Scientific Agent Skills,把"聊天机器人"变成"AI 科学家"
python·开源·agent
张文君19 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python