要使用 Python 录制摄像头和 RTMP 直播流数据并保存为本地 MP4 文件,可以使用 OpenCV 和 FFmpeg。以下是详细的步骤和示例代码:
1. 安装必要的库首先,确保你已经安装了 OpenCV 和 FFmpeg。可以使用以下命令安装 OpenCV:
pip install opencv-python2. 使用 OpenCV 录制摄像头视频
以下是使用 OpenCV 录制摄像头视频并保存为 MP4 文件的示例代码:
import cv2
# 设置摄像头
cap = cv2.VideoCapture(0) # 0表示默认摄像头
# 获取视频帧宽度和高度
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
# 定义视频编码器和输出文件
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (frame_width, frame_height))
while True:
ret, frame = cap.read()
if ret:
# 写入视频文件
out.write(frame)
# 显示视频帧
cv2.imshow('frame', frame)
# 按 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows() 3. 录制 RTMP 直播流要录制 RTMP 直播流,可以使用 FFmpeg 和 subprocess 模块。以下是示例代码:
import subprocess
# 设置 RTMP 流 URL
rtmp_url = 'rtmp://example.com/live/stream'
# 设置输出文件名
output_file = 'rtmp_output.mp4'
# 使用 FFmpeg 录制 RTMP 流
command = [
'ffmpeg',
'-i', rtmp_url,
'-c:v', 'copy',
'-c:a', 'copy',
output_file
]
# 执行命令
subprocess.run(command) 4. 组合摄像头和 RTMP 录制如果你想同时录制摄像头和 RTMP 直播流,可以将两者的代码组合在一起。以下是一个简单的组合示例:
import cv2
import subprocess
import threading
# 摄像头录制函数
def record_camera():
cap = cv2.VideoCapture(0)
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('camera_output.mp4', fourcc, 20.0, (frame_width, frame_height))
while True:
ret, frame = cap.read()
if ret:
out.write(frame)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
# RTMP 录制函数
def record_rtmp():
rtmp_url = 'rtmp://example.com/live/stream'
output_file = 'rtmp_output.mp4'
command = [
'ffmpeg',
'-i', rtmp_url,
'-c:v', 'copy',
'-c:a', 'copy',
output_file
]
subprocess.run(command)
# 创建线程
camera_thread = threading.Thread(target=record_camera)
rtmp_thread = threading.Thread(target=record_rtmp)
# 启动线程
camera_thread.start()
rtmp_thread.start()
# 等待线程完成
camera_thread.join()
rtmp_thread.join() 注意事项FFmpeg 安装:确保你已经安装了 FFmpeg,并且它在系统的 PATH 中。你可以从 FFmpeg 官方网站 下载并安装。RTMP 流 URL:将 rtmp://example.com/live/stream 替换为实际的 RTMP 流 URL。性能问题:同时录制摄像头和 RTMP 流可能会占用大量系统资源,确保你的系统性能足够支持。通过以上步骤,你可以使用 Python 录制摄像头和 RTMP 直播流数据,并保存为本地的 MP4 文件。
网友回复


