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

相关推荐
Terio_my18 小时前
Python制作12306查票工具:从零构建铁路购票信息查询系统
开发语言·python·microsoft
万粉变现经纪人19 小时前
如何解决 pip install -r requirements.txt 约束文件 constraints.txt 仅允许固定版本(未锁定报错)问题
开发语言·python·r语言·django·beautifulsoup·pandas·pip
站大爷IP19 小时前
Python定时任务实战:APScheduler从入门到精通
python
Fairy_sevenseven19 小时前
[1]python爬虫入门,爬取豆瓣电影top250实践
开发语言·爬虫·python
ThisIsMirror19 小时前
CompletableFuture并行任务超时处理模板
java·windows·python
java1234_小锋20 小时前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 计算图和 tf.function 简介
python·深度学习·tensorflow·tensorflow2
程序员晚枫20 小时前
Python 3.14新特性:Zstandard压缩库正式加入标准库,性能提升30%
python
逆境清醒20 小时前
VS Code配置Python开发环境系列(1)___VScode的安装 ,VScode常用快捷键
vscode·python·visual studio code
万粉变现经纪人20 小时前
如何解决 pip install -r requirements.txt 无效可编辑项 ‘e .‘(-e 拼写错误)问题
开发语言·python·r语言·beautifulsoup·pandas·pip·scipy
潇凝子潇20 小时前
在使用Nacos作为注册中心和配置中心时,如何解决服务发现延迟或配置更新不及时的问题
开发语言·python·服务发现