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

相关推荐
junyuz1 小时前
Dify docker内网部署常见问题记录
python·docker
@HNUSTer1 小时前
Python数据可视化科技图表绘制系列教程(一)
python·数据可视化·科技论文·专业制图·科研图表
reasonsummer2 小时前
【办公类-48-04】202506每月电子屏台账汇总成docx-5(问卷星下载5月范围内容,自动获取excel文件名,并转移处理)
python·excel
AmazingKO2 小时前
5分钟申请edu邮箱【方案本周有效】
python·chatgpt·ai编程·竹相左边·edu教育邮箱
幸存者1552 小时前
从零开始:亲手搭建你的第一个AI Agent(简单上手,先跑起来!)
python
点云SLAM2 小时前
Python中os模块详解
开发语言·前端·人工智能·python·计算机视觉
NON-JUDGMENTAL2 小时前
从零开始,搭建一个基于 Django 的 Web 项目
前端·python·django
PixelMind2 小时前
【LUT技术专题】图像自适应3DLUT代码讲解
人工智能·python·算法·lut
聚客AI2 小时前
AI大模型应用实战之GPU加速实战:手把手教你配置TensorFlow/PyTorch深度学习环境
人工智能·python·掘金·日新计划
疯狂的小强呀2 小时前
基于langchain的简单RAG的实现
python·langchain·rag检索增强