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格式的视频文件,支持在浏览器播放了!

相关推荐
阿正呀7 分钟前
c++如何动态追加JSON数组到已有文件_nlohmann局部修改【详解】
jvm·数据库·python
m0_690825828 分钟前
CSS如何使用-disabled控制禁用按钮的鼠标样式_通过状态伪类优化交互
jvm·数据库·python
财经资讯数据_灵砚智能9 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月11日
大数据·人工智能·python·信息可视化·自然语言处理
2301_7950997410 分钟前
JavaScript事件委托机制在高性能列表开发中的应用
jvm·数据库·python
Sylvia33.11 分钟前
世界杯数据链路解析:从球场传感器到终端推送的毫秒级架构
java·前端·python·架构
ㄟ留恋さ寂寞15 分钟前
CSS如何引入CSS暗黑模式配置_通过媒体特性实现主题自动化
jvm·数据库·python
2401_8246976616 分钟前
如何用 cookie 的 HttpOnly 与 Secure 属性防范 XSS 攻击
jvm·数据库·python
Chen--Xing17 分钟前
Python -- 并发编程
python·多线程·并发编程
SunnyDays101118 分钟前
使用 Python 将 PDF 转换为 HTML:完整指南
python·pdf 转 html
SmallBambooCode19 分钟前
【人工智能】【Python】离线环境下huggingface预训练权重导入流程
开发语言·人工智能·python