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

相关推荐
weixin_307779132 小时前
实现Azure Synapse Analytics安全地请求企业内部API返回数据
开发语言·python·云计算·azure
白熊1883 小时前
【计算机视觉】CV实战项目- COVID 社交距离检测(covid-social-distancing-detection)
人工智能·opencv·计算机视觉
互联网搬砖老肖6 小时前
Selenium2+Python自动化:利用JS解决click失效问题
javascript·python·自动化
跟着杰哥学Python7 小时前
一文读懂Python之numpy模块(34)
开发语言·python·numpy
啊哈哈哈哈哈啊哈哈8 小时前
R4打卡——tensorflow实现火灾预测
人工智能·python·tensorflow
闻道☞8 小时前
RAGFlowwindows本地pycharm运行
python·pycharm·ragflow
默凉9 小时前
注意力机制(np计算示例)单头和多头
python
咸其自取9 小时前
Flask(3): 在Linux系统上部署项目
python·ubuntu
未来之窗软件服务9 小时前
数字人,磁盘不够No space left on device,修改python 执行环境-云GPU算力—未来之窗超算中心
linux·开发语言·python·数字人
暴富奥利奥10 小时前
基于 OpenCV 的图像与视频处理
opencv·学习