博客
关于我
Python subprocess ffmpeg
阅读量:802 次
发布时间: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 | feature_engine,一个实用的 Python 库!
查看>>
python | filelock,一个超酷的 Python 库!
查看>>
python | fire,一个强大的 Python 库!
查看>>
python | flanker,一个神奇的 Python 库!
查看>>
python | flower,一个强大的 Python 库!
查看>>
python | funcy,一个超强的 提供函数式编程工具 Python 库!
查看>>
python | ggplot,一个超强的 Python 库!
查看>>
python | grab,一个强大的 Python 库!
查看>>
python | gunicorn,一个非常实用的 Python 库!
查看>>
python | h5py,一个无敌的关于 HDF5 的 Python 库!
查看>>
python | huey,一个非常厉害的 任务调度 Python 库!
查看>>
python | hypothesis,一个有趣的 Python 库!
查看>>
python | Indico,一个超酷的 Python 库!
查看>>
python | isort,一个有趣的 自动整理导入语句 的Python 库!
查看>>
python | jinja,一个超酷的 Python 库!
查看>>
python | joblib,一个强大的 Python 库!
查看>>
python调用git bash_Python学习第70课-用Git Bash在命令行打开sublime
查看>>
python | jsonschema,一个实用的 验证 JSON 数据结构 Python 库!
查看>>
python课程的中期报告范文_课题研究中期总结报告范文
查看>>
python | lxml,一个超酷的 关于XML/HTML 文档 Python 库!
查看>>