当前位置: 首页 > news >正文

关于OpenCV无法进行h264视频转码的问题

问题复现

opencv无法将mp4v编码格式的视频转换为h264编码格式的视频,使用ffmpeg解决问题

使用下面方式即保存为mp4v格式没有问题

fourcc = cv2.VideoWriter.fourcc(*"mp4v")

使用下面方式即保存为h264格式会报错Failed to load OpenH264 library: openh264-1.8.0-win64.dll Please check environment and/or download library: https://github.com/cisco/openh264/releases

fourcc = cv2.VideoWriter.fourcc('H', '2', '6', '4')

解决方案

windows配置ffmpeg

https://www.gyan.dev/ffmpeg/builds/下载

在这里插入图片描述

import subprocessdef convert_video(input_file, output_file):ffmpeg = r'D:\chromeDownload\ffmpeg-7.1.1-essentials_build\ffmpeg-7.1.1-essentials_build\bin\ffmpeg.exe'  # ffmpeg的路径cmd = [ffmpeg,'-hide_banner',  # 启动时隐藏版权和版本信息'-loglevel', 'warning',  # 只显示警告和错误信息'-i', input_file,  # 输入文件路径'-vcodec', 'libx264',  # 指定视频编码'-preset', 'fast',  # 编码速度+压缩效率,速度快效率就低导致文件大,默认'medium''-crf', '23',  # 视频质量,越小质量越高,文件越大,默认23'-acodec', 'aac',  # 音频编码output_file  # 输出文件路径]subprocess.run(cmd)

docker配置ffmpeg(下面只是安装ffmpeg的指令)

# 安装编译工具和依赖
RUN apt-get update && \apt-get install -y --no-install-recommends \wget \tar \build-essential \nasm \yasm \libx264-dev \libmp3lame-dev \libvorbis-dev \libopus-dev && \apt-get clean && \rm -rf /var/lib/apt/lists/*# 下载并编译FFmpeg
RUN cd /tmp && \wget https://ffmpeg.org/releases/ffmpeg-7.1.1.tar.gz && \tar -xzf ffmpeg-7.1.1.tar.gz && \cd ffmpeg-7.1.1 && \./configure \--prefix=/usr/local \--enable-gpl \--enable-libx264 \--enable-libmp3lame \--enable-libvorbis \--enable-libopus \--enable-nonfree && \make -j$(nproc) && \make install && \cd / && \rm -rf /tmp/ffmpeg*
import subprocessdef convert_video(input_file, output_file):ffmpeg = 'ffmpeg'  # ffmpeg指令,不需要路径cmd = [ffmpeg,'-hide_banner',  # 启动时隐藏版权和版本信息'-loglevel', 'warning',  # 只显示警告和错误信息'-i', input_file,  # 输入文件路径'-vcodec', 'libx264',  # 指定视频编码'-preset', 'fast',  # 编码速度+压缩效率,速度快效率就低导致文件大,默认'medium''-crf', '23',  # 视频质量,越小质量越高,文件越大,默认23'-acodec', 'aac',  # 音频编码output_file  # 输出文件路径]subprocess.run(cmd)
http://www.dtcms.com/a/395340.html

相关文章:

  • KingbaseES 四维操控:索引、视图、用户与事务的实战密码
  • 大模型强化学习-PPO应用
  • 惠普打印机连接电脑完整指南:方法与故障排除
  • 轻松加载外部Jar,实现SpringBoot功能灵活扩展
  • MCGS COM口MODBUS转发
  • Elasticsearch面试精讲 Day 22:机器学习与异常检测
  • 仓颉语言中的 `Some` 类型解析
  • spring-boot--redis调整token过期时间
  • 树形表格示例
  • 【完整源码+数据集+部署教程】六角螺母分割系统: yolov8-seg-EfficientHead
  • 零基础搭建赛博朋克个人主页:蓝耘Claude Code完整实战教程
  • C语言第19讲
  • 【含文档+PPT+源码】基于springboot+ssm的智能人脸识别养老系统的设计与开发
  • Linux-> UDP 编程3
  • 分库分表后ID冲突怎么解决?分布式ID生成方案。保证ID全局唯一性。
  • 域名如何解析家庭ip
  • LeetCode 2460.对数组执行操作
  • Unity Time.time 详解
  • LeetCode 922.按奇偶排序数组 II
  • 请简要谈谈Android系统的架构组成?
  • LeetCode 面试经典 150_哈希表_两数之和(44_1_C++_简单)
  • Kafka是什么,架构是什么样的?Kafka概述
  • TCN时序卷积网络、CNN、RNN、LSTM、GRU神经网络工业设备运行监测、航空客运量时间数据集预测可视化|附代码数据
  • 【HarmonyOS】HMRouter关键原理-动态import
  • 【Python】面向对象(三)
  • 05-django项目的跨域处理
  • go语言并发
  • Qt QSS 美化完整教程文档
  • jwt与token+redis,哪种方案更好用?
  • 基于react的前端项目开发和实战总结(umi框架)