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

相关推荐
Want59516 分钟前
Python太极八卦图
开发语言·python
川石课堂软件测试18 分钟前
自动化测试|持续集成Git使用详解
git·python·jmeter·mysql·ci/cd·容器·kubernetes
饕餮争锋26 分钟前
python开发工具uv简介
开发语言·python·uv
znx93926 分钟前
量化交易:用理性穿越市场混沌的修行之路
人工智能·python·机器学习·期魔方
兔子零102437 分钟前
FastAPI 零基础入门教程:写过 Node.js,就能轻松学会 Python 后端开发(一)
前端·后端·python
Marst Code1 小时前
上位机开发日记 · 第 12 篇 · 测试:设备模拟器是核心资产
python
坊钰2 小时前
【LangGraph框架入门级】4. 支持联网搜索的智能代理系统
python·ai编程·langgraph
运维@小兵2 小时前
安装Pycharm并破解
ide·python·pycharm
冬、不眠的夜2 小时前
Nuitka 将 python 程序编译成 exe 指南
开发语言·python
范中勤2 小时前
Python Asyncio 协程与 LLM 异步并发原理技术文档(与 Java 对比|彻底澄清所有误区)
python·llm·协程·并发编程·asyncio