如何利用OpenCV进行H264视频编码

发布时间:2021-12-13 17:26:03 作者:小新
来源:亿速云 阅读:1989

这篇文章给大家分享的是有关如何利用OpenCV进行H264视频编码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

在Python下,利用pip安装预编译的opencv库,并实现h364格式的视频编码。

1. 安装OpenCV

$ pip install opencv-python

建议在python虚拟环境下安装,不容易产生相互影响。

2. 代码示例

读取笔记本自带摄像头,并保存为视频的最简实现。

import cv2

def main():
    output_path = './output.avi'
    vc = cv2.VideoCapture(0)
    ret, frame = vc.read()
    w = int(vc.get(cv2.CAP_PROP_FRAME_WIDTH))
    h = int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fps = vc.get(cv2.CAP_PROP_FPS)
    
    fourcc = cv2.VideoWriter_fourcc('H', '2', '6', '4')
    # fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
    # fourcc = cv2.VideoWriter_fourcc('H', 'E', 'V', 'C')
    vw = cv2.VideoWriter(output_path, fourcc, fps, (w, h), True)
    while ret:
        vw.write(frame)
        ret, frame = vc.read()
        cv2.imshow('frame', frame)
        if cv2.waitKey(5) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            return -1

if __name__ == '__main__':
    main()

2.1 默认编码

预编译的opencv,默认支持XVID格式的编码,但是不支持H264。

如果将# fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')注释取消,程序可以正常运行并保存视频。

2.2 H264支持

按示例代码配置为H264编码,会显示如下错误提示。摄像头可以采集到图像,但是不能正常保存为视频。

Failed to load OpenH264 library: openh364-1.8.0-win64.dll
Please check environment and/or download library: https://github.com/cisco/openh364/releases

[libopenh364 @ 000001e7a96ddec0] Incorrect library version loaded
Could not open codec 'libopenh364': Unspecified error

根据提示,到Github库中搜索对应的动态库。

注意选取对应的版本。我安装的OpenCV版本为4.4.0.42,提示需要的动态库为openh364-1.8.0-win64.dll,在Release页中找到对应的版本,将下载获得的dll文件解压并放在与py文件同级的工程目录下。

不同OpenCV版本可能需要的支持库版本也不同,没有测试,注意看提示就行。

如果考虑通用性也可以将dll所在的路径加入环境变量Path中。

本示例实现是在Windows平台下,Linux下应该也是类似的操作,下载对应的h364支持库文件,并加入到PATH能够搜索到的地址。

重新运行程序,可以正常显示图像,并保存为视频文件。

用Potplayer之类的播放器打开,可以在属性中看到,编码格式的相关信息:

 视频编码: H264 - Native D3D9 DXVA Decoder(VLD)

2.3 H265支持

想着用同样的方法尝试一下H265编码。

# fourcc = cv2.VideoWriter_fourcc('H', 'E', 'V', 'C')注释取消,发现如下错误提示:

OpenCV: FFMPEG: tag 0x43564548/'HEVC' is not found (format 'avi / AVI (Audio Video Interleaved)')'

看起来目前预编译版本的OpenCV是不支持H265编码的。如果要用H265编码,需要从源码编译,并在编译过程中添加对应的支持库。

感谢各位的阅读!关于“如何利用OpenCV进行H264视频编码”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. 利用 android mediaRecorder c++类进行视频编码
  2. 如何在python中利用opencv对图片进行比对

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

opencv

上一篇:python中怎样实现二叉树展开为链表

下一篇:python二叉树的存储方式以及递归和非递归的三种遍历方式分别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》