博客
关于我
Python subprocess ffmpeg
阅读量:798 次
发布时间:2023-03-06

本文共 1496 字,大约阅读时间需要 4 分钟。

ffmpeg 实时视频流处理系统配置与实现

本文将介绍一个基于 ffmpeg 的实时视频流处理系统,详细阐述系统的配置方法及核心实现逻辑。

系统配置

1. 环境搭建

  • 操作系统:Windows 10/11
  • ffmpeg 版本:2018年发布的 fa0c9d6-win64-static 版本
  • 编程语言:Python 3.x
  • 依赖库
    • numpy
    • cv2
    • subprocess

2. 命令行参数设置

# 查看帮助信息ffmpeg -help# 查看视频流信息ffmpeg -log info input_file# 查看输出格式支持情况ffmpeg -formats

3. 视频流处理配置

  • 输入设置
    ffmpeg -i rtsp://admin:hik12345@192.168.3.175/cam/realmonitor?channel=1&subtype=1
  • 输出设置
    ffmpeg -i -y -f rawvideo -vcodec rawvideo -pix_fmt bgr24 -s 704*576 -f flv rtmp://192.168.3.56:1935/MyRed5/test

视频流处理核心实现

1. 读取视频流

import osimport sysimport numpy as npimport subprocess as sp# ffmpeg 执行器ffmpeg_bin = "E:/ffmpeg-20180227-fa0c9d6-win64-static/bin/ffmpeg.exe"# 命令行参数command_in = [    ffmpeg_bin,    '-i', input_file,    '-f', 'rawvideo',    '-s', f'{width}*{height}',    '-pix_fmt', 'bgr24',    '-']# 创建 ffmpeg 进程pipe_in = sp.Popen(command_in, stdout=sp.PIPE)

2. 视频流处理

def process_image(img):    cv2.imshow('实时视频', img)# 读取视频流while True:    raw_image = pipe_in.stdout.read(width * height * 3)        if len(raw_image) == 0:        break        # 转换为图像数组    image = np.fromstring(raw_image, dtype='uint8')    image = image.reshape((height, width, 3)).copy()        # 处理当前帧    process_image(image)        # 写入输出流    pipe_out.stdin.write(image.tobytes())    pipe_out.stdin.flush()        # 等待键盘输入    k = cv2.waitKey(25)    if k & 0xff == ord('q'):        break

技术实现总结

  • 视频流输入处理:通过 ffmpeg 读取实时视频流,设置参数如分辨率、像素格式等。
  • 图像处理:使用 OpenCV 库显示实时视频帧。
  • 流处理:将处理后的图像输出到指定 rtmp地址。

整个系统通过 ffmpeg 实现视频流的实时读取与处理,兼顾了高效性与实用性。

转载地址:http://ehafk.baihongyu.com/

你可能感兴趣的文章
python谷歌翻译,2021年9月10日亲测可用,一次可以翻译十万,强烈star
查看>>
Python UI自动化测试数据驱动实战
查看>>
Python UI自动化测试集成UnitTest
查看>>
Python UI自动化测试集成UnitTest
查看>>
python unicode-escape
查看>>
Python unittest mock:是否可以在测试时模拟方法默认参数的值?
查看>>
Python unittest单元测试框架 TestSuite测试套件
查看>>
PYTHON调离线语音合成并实时播放
查看>>
python unittest高级特性!
查看>>
Python unittest:如何将标准输出消息临时重定向到缓冲区并测试其内容?
查看>>
Python urllib/Requests下载文件失败,但浏览器下载失败
查看>>
Python urllib2 文件上传问题
查看>>
Python urllib2.open 连接由对等错误重置
查看>>
python urllib2详解及实例
查看>>
Python url请求提示certificate verify failed unable to get local issuer certificate
查看>>
Python UTC 日期时间对象的 ISO 格式不包括 Z(祖鲁语或零偏移)
查看>>
python valueerror object2_python遇到错误记录
查看>>
python vars的作用
查看>>
Python vcrpy库:HTTP请求记录和重放
查看>>
Python virtualenv
查看>>