【发布时间】:2022-01-25 00:24:01
【问题描述】:
我正在尝试使用音频流式传输 FFmpeg。
我将在下面显示我的代码:
导入模块
import subprocess as sp
创建变量
rtmpUrl = "rtmp://a.rtmp.youtube.com/live2/key"
camera_path = "BigBuckBunny.mp4"
cap = cv.VideoCapture(camera_path)
# Get video information
fps = int(cap.get(cv.CAP_PROP_FPS))
width = int(cap.get(cv.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))
命令参数
# ffmpeg command
command = ['ffmpeg',
'-y',
'-f', 'rawvideo',
'-vcodec','rawvideo',
'-pix_fmt', 'bgr24',
'-s', "{}x{}".format(width, height),
'-r', str(fps),
'-i', '-',
'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
'-preset', 'ultrafast',
'-f', 'flv',
rtmpUrl]
为 ffmpeg 命令创建子进程
# Pipeline configuration
p = sp.Popen(command, stdin=sp.PIPE)
发送帧到 RTMP 服务器
# read webcamera
while(cap.isOpened()):
ret, frame = cap.read()
if not ret:
print("Opening camera is failed")
break
# write to pipe
p.stdin.write(frame.tobytes())
我希望您能帮助我通过 FFmpeg 通过 RTMP 进行带音频的直播。谢谢!
【问题讨论】:
-
OpenCV 只提供视频。添加 mp4 作为 ffmpeg 的直接输入,即
-vn -i BigBuckBunny.mp4
标签: python opencv audio ffmpeg stream