利用ffmpeg cv2取h265码流视频(转换图片灰屏问题解决)

利用海康威视相机拍出来的视频是H265格式的,相比于常规的H264编码,压缩率更高,但因此如果直接用正常取流方法读取,会出现无法读取的情况

1. 如图h265码流取出图片为灰屏

2 、解决灰屏问题

python 复制代码
import subprocess
import cv2

# 将h265流转换opencv可编译格式返回
def get_frame_from_rtsp(rtsp_url):
    # ( linux,windwos)  docker容器内部使用  两者兼容  当环境为linux时将传输协议改为tcp,否则转换失败 ( '-rtsp_transport', 'tcp')
    command = [
        'ffmpeg',
        #  rtsp_transport 参数,通过设定这个参数值为 tcp ,使得ffmpeg强制使用tcp协议传输RTSP流(RTSP流模式使用UDP方式传输)。
        '-rtsp_transport', 'tcp',
        # 设置探测大小,指定用于探测输入流的大小。在这里,150M 表示 150 兆字节的探测大小。
        '-analyzeduration', '150M',
        '-probesize', '150M',
        # 指定输入文件(RTSP 流)的 URL。
        '-i', rtsp_url,
        '-vf', 'fps=1,scale=1920:1080',  # 设置帧率和图像大小
        # 指定输出格式为图像流。在这里,将输出格式设置为图像流,以便后续通过管道读取。
        '-f', 'image2pipe',
        # 设置像素格式为 BGR24。在这里,将像素格式设置为 24 位 BGR 格式,即每个像素占据 3 字节。
        '-pix_fmt', 'bgr24',
        # 设置视频编解码器为原始视频。 如果设置为264需要额外增添参数   '-vcodec', 'libx264'
        '-vcodec', 'rawvideo', '-'
    ]


    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    # 从 ffmpeg 进程中读取一帧数据
    raw_frame = process.stdout.read(1920 * 1080 * 3)
    if not raw_frame:
        return None

    # 将帧数据转换为 numpy 数组
    frame = np.frombuffer(raw_frame, dtype=np.uint8).reshape((1080, 1920, 3))
    return frame

frame = get_frame_from_rtsp(path)

if frame is not None:
    # FILE_SAVE_PATH保存路径地址  
    img_path = os.path.join(FILE_SAVE_PATH,'2023')
    cv2.imwrite(img_path, frame)  # 存储为图像
else
     print('无法获取到图像')

3、转换完成h265码流图片

相关推荐
cuijiecheng20185 分钟前
modetest -c 指令详解:看懂显示接口、连接状态与分辨率
音视频
cuijiecheng201813 分钟前
GStreamer playbin 详解:从“一条命令播放视频”到播放器开发
音视频
Evanfu021629 分钟前
短剧硬字幕如何批量 OCR:从字幕区到整剧校对
aigc·音视频·视频·机器翻译·自动翻译
Evanfu021641 分钟前
AI 短剧出海前要检查哪些版权、肖像和声音权利?
自然语言处理·aigc·音视频·视频·机器翻译·自动翻译
quweiie1 小时前
阿里云视频点播+thinkphp8上传视频(一)
阿里云·音视频·视频点播·tp8
常州晟凯电子科技1 小时前
多对一无线视频传输系统评测
音视频·视频编解码
开发笔记-阿牛2 小时前
AM收音机蓝牙二合一设计复盘
人工智能·单片机·嵌入式硬件·音视频·音频
EasyCVR2 小时前
值班脱岗=事故前兆?视频汇聚/视频融合/视频分析平台EasyCVR岗位AI监测平台,7×24小时守住安全底线
安全·音视频·easycvr
做萤石二次开发的哈哈11 小时前
连锁门店、园区、交通枢纽的视频如何统一汇集?应用模板的接入与分权管理详解
人工智能·物联网·音视频·二次开发·视频监控·蓝海aiot一站式工作台·萤石云开放平台
david_tym11 小时前
语音降噪模型GTCRN学习笔记(一)
音视频