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

相关推荐
麦麦大数据2 分钟前
vue+flask+CNN电影推荐系统
pytorch·python·cnn·flask·scikit-learn·电影推荐
腾飞开源7 分钟前
02_Flask是什么?
python·flask·python web开发·flask快速入门教程·人人都能学·小白看得懂学得会·跟我学编程
終不似少年遊*7 分钟前
国产之光DeepSeek架构理解与应用分析04
人工智能·python·深度学习·算法·大模型·ds
明月看潮生16 分钟前
青少年编程与数学 02-016 Python数据结构与算法 28课题、图像处理算法
图像处理·python·算法·青少年编程·编程与数学
羊小猪~~1 小时前
深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)
网络·人工智能·pytorch·python·深度学习·机器学习·cnn
深度学习lover1 小时前
<项目代码>YOLO小船识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·小船识别
愚公搬代码2 小时前
【愚公系列】《Python网络爬虫从入门到精通》055-Scrapy_Redis分布式爬虫(安装Redis数据库)
数据库·爬虫·python
浅浅2802 小时前
numpy、pandas内存优化操作整理
数据结构·经验分享·python·学习·性能优化·numpy·pandas
拓端研究室TRL3 小时前
Python+AI提示词比特币数据预测:Logistic逻辑回归、SVC及XGB特征工程优化实践
开发语言·人工智能·python·算法·逻辑回归
就叫飞六吧3 小时前
Python自动化selenium-一直卡着不打开浏览器怎么办?
python·selenium·自动化