opencv-python保存视频为mp4格式并支持在浏览器播放

前言

之前在项目上使用yolov8进行视频检测的时候,yolov8默认windows系统下保存的是avi格式

python 复制代码
suffix, fourcc = ('.mp4', 'avc1') if MACOS else ('.avi', 'WMV2') if WINDOWS else ('.avi', 'MJPG')
self.vid_writer[idx] = cv2.VideoWriter(str(Path(save_path).with_suffix(suffix)),
                                                       cv2.VideoWriter_fourcc(*fourcc), fps, (w, h))

前端对接的时候说avi文件无法播放,需要转换为mp4格式,后来我修改了yolov8的源码,将结果视频的格式修改为了mp4。

python 复制代码
suffix, fourcc = ('.mp4', 'avc1') if MACOS else ('.mp4', 'mp4v') if WINDOWS else ('.avi', 'MJPG')

结果还是无法播放。。。在浏览器访问的效果如下:

后来百度发现,浏览器只支持播放H.264编码的mp4视频!!!opencv使用ffmpeg进行视频流的编解码,不支持H.264编码,需要额外安装openh264。

下载安装openh264

下载地址:Releases · cisco/openh264 (github.com)

下载后解压得到dll文件,并将其放置于虚拟环境下,下图所示是我本机的虚拟环境目录:

修改编码类型

使用编解码器H.264 (High Profile),需要设置fourcc_type = 'avc1'

python 复制代码
suffix, fourcc = ('.mp4', 'avc1') if MACOS else ('.mp4', 'avc1') if WINDOWS else ('.avi', 'MJPG')

然后在启动程序,生成的就是H.264编码的mp4格式的视频文件,支持在浏览器播放了!

相关推荐
李昊哲小课8 小时前
PyMySQL完整教程
服务器·数据库·python·pymysql
学技术的大胜嗷8 小时前
一文讲透 OpenCV 的 forEach:Lambda、像素访问与性能优化
图像处理·opencv·cpp
sqyno1sky8 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
belldeep9 小时前
python:spaCy 源代码解析,性能优化方法
python·性能优化·cython·spacy
deephub9 小时前
TPU 架构与 Pallas Kernel 编程入门:从内存层次结构到 FlashAttention
人工智能·python·深度学习·tpu
薛定谔的猫喵喵9 小时前
卸载 Python 3.8 报错 “Could not set file security” 的终极解决方案
开发语言·python
墨尔本、晴9 小时前
[Django-web]1.环境准备
python·django
Daydream.V9 小时前
opencv项目实战——抠图
opencv·抠图
智算菩萨9 小时前
OpenCV色彩空间转换实战:BGR转HSV/LAB的工业应用场景详解(含自动化脚本)
人工智能·python·opencv·计算机视觉·自动化·音视频
曲幽9 小时前
别再数据线了!用FastAPI 5分钟搭个局域网文件+剪贴板神器
python·fastapi·web·async·clipboard·fileupload