使用跳帧解码解决视频流或高帧视频处理缓慢过程

简介: 使用跳帧解码解决视频流或高帧视频处理缓慢过程

前言


  相信大家在使用cv2读取视频流的过程中一定遇到过读取缓慢的问题(或者在处理高帧视频时变的缓慢),为了研究如何解决这一问题研究了下opencv文档,今天为大家带来一个小notes,能优化 卡顿和花屏&灰屏。




分析原因


  由于opencv是默认为自带的ffmpeg进行解码播放视频,在使用单独的使用ffmpeg进行播放视频时发现与opencv的差异:


  1. opencv进行连接后播放的视频画面是从cv2读取视频流时进行播放的


  1. ffmpeg在碰到视频流连接不顺畅会跳到实时状态的画面,不会进行读取缓冲区的画面


  查阅opencv文档中发现ret, frame = cap.read()中的read函数是包含了两大步骤:从缓冲区拿出数据 + 对数据进行解码


  当我们无法解决视频流自身的问题的时候,可以从读取视频流这里做文章。细分从缓冲区拿数据和解码这两个过程,显而易见的是解码的过程较为耗费时间。 针对这一问题我们可以在保证不影响性能的前提下牺牲部分帧加速视频处理过程,采用cap.grab() 和  cap.retrieve() 分别进行跳帧和解码替代cap.read()



解决


  例如视频的帧率是30,在不影响对下游任务的影响的前提下,我们可以进行跳帧处理。每处理一帧后跳过下一帧,对下下帧进行读取解码工作


import cv2
cap = cv2.VideoCapture(0)
idx = 0
freq = 2
while True:
    idx += 1
    ret = cap.grab()
    if not ret:
        break
    if idx % freq == 1:
        ret, frame = cap.retrieve()
        if frame is None:  
            break
        cv2.imshow("video", frame)
        c = cv2.waitKey(1) & 0xff
        if c == 27:
            cap.release()
            break
cap.release()




相关文章
|
6月前
|
存储 算法 C++
深入理解ffmpeg视频播放以及音视频同步:时间基与样本处理
深入理解ffmpeg视频播放以及音视频同步:时间基与样本处理
519 1
|
3月前
|
编解码 开发工具 Android开发
低延迟播放超高分辨率(4K+)帧率(50帧+)RTSP|RTMP流技术探讨和实现
为满足安检等场景需求,需支持4K+分辨率与50帧以上的高帧率视频流播放。实现这一目标的关键步骤包括:确保视频源支持高帧率输出、选用高性能RTSP/RTMP播放器以处理高负载视频解码、采用硬件解码以降低CPU负担、保证充足的网络带宽以维持流畅播放并控制延迟、合理配置播放器缓冲策略以适应网络波动、进行性能监控与调试以优化播放效果,以及确保播放器在多平台上的良好兼容性和表现。例如,大牛直播SDK的SmartPlayer在不同平台上实现了稳定且低延迟(150-300ms)的播放体验,支持多种视频和音频格式及多种功能,如多实例播放、事件回调、视频快照等。
|
5月前
|
Java Linux
ffmpeg音频格式转换、合成、速率调整
ffmpeg音频格式转换、合成、速率调整
114 2
|
6月前
|
存储 编解码 API
【视频花屏问题】解码天书:深入理解视频流花屏现象及其解决方案
【视频花屏问题】解码天书:深入理解视频流花屏现象及其解决方案
1274 7
|
6月前
|
存储 算法 API
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略(三)
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略
257 1
|
6月前
|
编解码 UED
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略(一)
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略
909 1
|
6月前
|
传感器 机器学习/深度学习 编解码
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略(二)
音视频同步的方法:深入探索基于FFmpeg的音视频同步策略
436 1
|
6月前
|
编解码 API 数据处理
【摄像头数据处理】摄像头数据处理:使用FFmpeg合并、编码和封装视频流
【摄像头数据处理】摄像头数据处理:使用FFmpeg合并、编码和封装视频流
345 0
|
编解码 Android开发
【Android FFMPEG 开发】FFMPEG 音视频同步 ( 音视频同步方案 | 视频帧 FPS 控制 | H.264 编码 I / P / B 帧 | PTS | 音视频同步 )(二)
【Android FFMPEG 开发】FFMPEG 音视频同步 ( 音视频同步方案 | 视频帧 FPS 控制 | H.264 编码 I / P / B 帧 | PTS | 音视频同步 )(二)
720 1