记一次因视频编码无法在浏览器播放、编码视频报错问题

起因

python 复制代码
...
f = cv2.VideoWriter_fourcc(*'h264')
...

我这边使用h264编码会提示

复制代码
OpenCV: FFMPEG: tag 0x34363268/'h264' is not supported with codec id 27 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x31637661/'avc1'
[ERROR:0@2.711] global /io/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2927) open Could not find encoder for codec_id=27, error: Encoder not found
[ERROR:0@2.711] global /io/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (3002) open VIDEOIO/FFMPEG: Failed to initialize VideoWriter

按提示换成avc1也是报错 只是换了一个而已

不断的尝试

明显是不支持,网上很多说要自编译python-opencv的(太麻烦了没试),或者换编码mp4v之类的、换avi后缀兼容的

这些我都一一尝试了,可以是可以,下载下来播放时没问题的,但是视频没法直接通过url在谷歌浏览器上播放 ,就像这样

这里其实也可以通过视频二次转码来解决 这里用ffmpeg就可以,搜一下就可以有命令了。

但是这样还是麻烦了

解决方案

然后无意间找到一篇文章
https://butui.me/posts/install-opencv-python-with-h264-support-enabled/

我的操作步骤如下,仅供参考,不一定对症

  1. 修复依赖

    复制代码
     1049  pip list | grep opencv
     1050  pip install --no-deps mediapipe
     1051  conda uninstall opencv-python
     1052  pip uninstall opencv-python
     1053  conda install opencv!=4.6 -y
  2. 把编码格式换成了avc1(我这边如果没有第一步,也会报错)

    python 复制代码
    ...
    f = cv2.VideoWriter_fourcc(*'avc1')
    ...

至此 处理后的视频就可以直接在chrome通过url播放了

相关推荐
YXXY3134 小时前
线程的介绍(四)
linux
2601_957884844 小时前
面向内容合规性的短视频矩阵分发机制:感知哈希去重与语义检索优化实践
矩阵·音视频·哈希算法
许彰午4 小时前
14_Java泛型完全指南
java·windows·python
广州灵眸科技有限公司4 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Easy-Eai编译环境准备与更新
服务器·前端·人工智能·python·深度学习
TechWayfarer5 小时前
IP风险等级评估接入实战:金融信贷如何用IP画像辅助风控审核
python·tcp/ip·安全·金融
Esaka_Forever5 小时前
uv init 完整用法(Python 最快包管理器)
服务器·python·uv
kTR2hD1qb6 小时前
从 Responses API 到 Chat Completions:一个模型网关的设计复盘
linux·前端
姓刘的哦6 小时前
大模型祛魅
linux
hj2862517 小时前
linux下一步学习内容
linux·运维
神仙别闹8 小时前
基于Python + SQL server 实现(GUI)原神圣遗物管理与角色数值模拟系统
java·数据库·python