1. 基于 Windows 下演示,Linux 下也可以通用。建议先阅读关于使用硬件加速的基础部分。文章链接:ffmpeg 硬件加速视频转码指南

  2. 后文将会演示 wmv3 以及 vc1 编码的 wmv 格式视频向 h264 编码的 mp4 格式视频的转换。如果你理解了原理,那么 wmv2 转 hevc 也是类似的。

  3. 测试案例1
    可以看到原视频是一段 wmv3 编码的 4000k 码率 720p 30帧的视频

  • 首先还是默认情况下,用 CPU 编解码:ffmpeg -i input.wmv output.mp4 ,速度如图所示,CPU 满载,GPU 围观。

  • 接着尝试使用加入-hwaccel auto参数,使用自动的硬件加速:ffmpeg -hwaccel auto -i input.wmv output.mp4
    程序自动选择了 dxva2 的硬件加速方法( cuda 我也测试了,差不多)

    速度提升不能说没有,只能说差不多

    用到了一点点的 GPU 解码器,约等于没有用,主要依旧还是 CPU 在干活。

  • 尝试寻找适用于 wmv3 的硬件解码器 ffmpeg -codecs | findstr "wmv3" ,可以看到并没有

  • 但是没有关系,转码过程中主要的负载来自于编码工作,我们可以手动指定 编码器 encoder,来达到硬件加速的作用
    通过加入 -c:v 参数,来调用 N 卡的硬件编码器:ffmpeg -hwaccel cuda -i input.wmv -c:v h264_nvenc output.mp4




可以看到指定的编码器生效了,转码速度也快了很多,GPU 的硬件编解码器也得到了较为充分的利用,CPU 占用也维持在一个较低的水平。但是编码器默认的码率(2000k)较低,清晰度有所下降,可以通过参数 -b:v 4000k 设定输出视频的码率与原视频一致来避免画质损失。

  1. 测试案例2
    vc1 编码,1080p 30帧 6000k 码率,直接 CPU 编解码和打开自动硬件解码和上面差不多的结论,都很慢。
  • 不过有一个特殊情况就是指定 -hwaccel cuda 的时候,转码速度会非常慢。GPU 的硬件解码器使用率会达到 100% ,但是编码器没有用到,CPU 也是占用率很低。ffmpeg -hwaccel cuda -i input2.wmv output.mp4

  • 手动指定编解码器
    通过 ffmpeg -codecs | findstr "vc1" 查看 vc1 的编解码器
    可以看到有 i卡 专用的 vc1_qsvN卡 专用的 vc1_cuivid 解码器

    加入参数-c:v来指定解码器:ffmpeg -c:v vc1_cuvid -i input2.wmv -c:v h264_nvenc output.mp4 (根据你的显卡选择对应的编解码器,我这里是 N卡 所以选择了 vc1_cuvid 作为解码器,h264_nvenc 作为编码器)

可以看到转码速度非常快,并且硬件编解码器也得到了充分的利用,CPU 占用也较低。


同样也是注意 nvenc 默认编码输出为 2000k 码率,可以手动设置码率来降低画质损失。

ffmpeg 硬件加速 wmv 视频转码相关推荐

  1. Mac OSX ffmpeg 硬件加速

    Mac OSX ffmpeg 硬件加速 [toc] 首先下载最新版ffmpeg 3.3.4 安装x264 下载安装包编译安装 brew install x264 (推荐,未安装brew的请查看brew ...

  2. ffmpeg 硬件加速视频转码指南

    0. 系统环境 基于 Windows 下演示,Linux 下也可以适用. 所使用 ffmpeg 版本为 BtbN 编译的 win64-gpl 版(非 gpl-share),项目地址:BtbN / FF ...

  3. FFmpeg 硬件加速(硬解码)介绍

    参考地址 概述   本文主要针对ffmpeg支持的硬解码做一个总结阐述.   许多平台提供对专用硬件的访问,以执行一系列与视频相关的任务.使用此类硬件可以更快地完成某些操作,例如解码.编码或过滤,或者 ...

  4. FFmpeg 硬件加速方案概览 (下)

    被称为"多媒体技术领域的瑞士军刀",FFmpeg拥有广泛的应用基础.不过,当(实时)处理海量视频时,需要借助各种方法提升效率.比如,短视频平台Revvel将视频转码服务迁移到AWS ...

  5. FFmpeg 硬件加速方案概览 (上)

    被称为"多媒体技术领域的瑞士军刀",FFmpeg拥有广泛的应用基础.不过,当(实时)处理海量视频时,需要借助各种方法提升效率.比如,短视频平台Revvel将视频转码服务迁移到AWS ...

  6. [FFMPEG硬件加速]nvidia方案

    1.目标 <1>显卡性能参数: <2>方案可行性: 2.平台信息 2.1.查看当前显卡信息 命令:  lspci |grep VGA  信息:  01:00.0 VGA com ...

  7. 树莓派 —— 安装RaspberryPi系统(为了编译ffmpeg硬件加速)

    背景      最近项目上采购了一台"云盒"设备,该设备功能是将输入的rtsp转封装后直接推流到指定公网的rtmp服务器或将输入的hdmi视频数据通过硬编码后推流到指定的公网rtm ...

  8. FFMPEG使用显卡编码视频 转码

    FFMPEG 工具装备 参数介绍 工具装备 ffmpeg-4.1.4-win64-static GPU : nvidia 2080(当然680也行) 参数介绍 语法构成 : -b : 指定转码视频的比 ...

  9. 使用FFmpeg命令实现音视频转码的备忘录

    FFmpeg是比较经典,也是比较流行的多媒体工具库(demux,mux, decode,encode等等),支持格式也比较丰富,也比较实用. 做多媒体开发的经常都需要使用到各种格式的音视频对自己的开发 ...

最新文章

  1. WISMO模块GPRS上网设置的过程
  2. 【转】如何在github上fork一个项目来贡献代码以及同步原作者的修改 -- 不错
  3. 手写jwt框架SSO
  4. 当你在应用机器学习时你应该想什么
  5. gRPC创建Java RPC服务
  6. 基于tomcat5.5的数据库连接池环境设置(省的以后找系列)
  7. chrome 发送请求出现:Provisional headers are shown 提示
  8. 无法在Web服务器上启动调试。您不具备调试此应用程序的权限,此项目的URL位于Internet区域。...
  9. SVN分支创建,合并,多分支并行
  10. 方舟生存计划怎么删除服务器信息,方舟进化生存怎么删服务器存档
  11. 【STC15】定时器/计数器的相关寄存器解读
  12. FLStudio21无需切换中文语言fl下载中文免费版
  13. 高频射频计算机电缆,射频电缆是什么,它的作用又是什么
  14. 简单分析一个通过 js 劫持进行案例
  15. 什么是正则化?他是如何起作用的?
  16. 【数据库】数据库索引
  17. 什么是计算机嵌套分类汇总,Excel中插入分类汇总的嵌套级别的方法图解详细教程...
  18. tplink android管理软件,tplink路由器app下载
  19. 错失恐惧:铸造「区块链巴别塔」的原始动力
  20. windows学习记录之MFC通过URL上传下载文件

热门文章

  1. db2 jdbc 连接池_【转】java jdbc连接db2
  2. 【物联网实训项目】------(五)家庭智慧安防系统之智能监控
  3. JSPServlet中request.getParameter() 和request.getAttribute() 区别
  4. 如何关闭Mybatis的DEBUG log打印
  5. TOM邮箱|163邮箱容量评比!注册哪个容量好呢?
  6. Echarts饼图实现颜色渐变
  7. android 页面边框设置
  8. c语言输入10个数从小,C语言中,从键盘输入10个数,从小到大排列输出,怎
  9. MFC(CFile)文件操作
  10. latex数学公式神器Mathpix