ffmpeg转码使用硬件加速
需求源于手机拍摄的视频,默认参数码率较大,拍摄的文件体积较大,不便于保存和转发。
手机默认拍照的720P视频,默认码率达到4M,实际上转成1M就差不多了。
FFmpeg默认的转码是使用软件解码,然后软件编码,速度慢,CPU使用率太高(基于100%)。
本次测试
硬件环境:
CPU: Intel i5- 4核2.7GHz
RAM: 8GB
SSD: Reeinno ST120GB
GPU: Intel HD Graphics 芯片集成显卡
软件环境:
Windows SP1 64bit
FFmpeg version N--g64ea4d1 Copyright (c) - the FFmpeg developers
1. 默认参数
ffmpeg.exe -i .mp4 -f mp4 -.mp4
得到 fps 57, speed 1.97x, CPU 95+%
Stream mapping:
Stream #: -> #: (h264 (native) -> h264 (libx264)) # 这里看到编码都是使用libx264
------
frame= fps= q=29.0 size= 5368kB time=::27.56 bitrate=.6kbits/s speed=.97x
2. 编码使用硬件
ffmpeg.exe -i .mp4 -vcodec h264_qsv -f mp4 -.mp4
得到 fps 239, speed 8.34x, CPU 85+%
Stream mapping:
Stream #: -> #: (h264 (native) -> h264 (h264_qsv)) # 这里看到编码都是使用h264_qsv
------
frame= fps= q=-0.0 size= 2909kB time=::25.10 bitrate= .4kbits/s speed=.34x
3. 解码也指定硬件解码
ffmpeg.exe -c:v h264_qsv -i .mp4 -vcodec h264_qsv -f mp4 -.mp4
得到 fps 219, speed 7.45x, CPU 60+%
Stream mapping:
Stream #: -> #: (h264 (h264_qsv) -> h264 (h264_qsv)) # 这里看到编码都是使用h264_qsv,但是没有完全使用硬件加速
------
frame= fps= q=-0.0 size= 7869kB time=::03.57 bitrate=.9kbits/s speed=.45x
4. 指定硬件加速qsv
ffmpeg.exe -hwaccel qsv -c:v h264_qsv -i .mp4 -vcodec h264_qsv -f mp4 -.mp4
运行这个报错
Impossible to convert between the formats supported by the filter 'graph 0 input from stream 0:1' and the filter 'auto_scaler_0'
Error reinitializing filters!
Failed to inject frame into filter network: Function not implemented
Error while processing the decoded data for stream #:
[aac @ 000000000234a940] Qavg: 2433.237
[aac @ 000000000234a940] frames left in the queue on closing
Conversion failed!
后来经过大师兄FFmpeg微信群 李忠@Intel的提示,视频带有旋转信息,才发现手机拍摄的视频自带90°旋转。
添加输入参数-noautorotate后为:
ffmpeg.exe -hwaccel qsv -c:v h264_qsv -noautorotate -i .mp4 -vcodec h264_qsv -f mp4 -.mp4
得到 fps 347, speed 11.7x, CPU 30+% 目前最好的效果了
Stream mapping:
Stream #: -> #: (h264 (h264_qsv) -> h264 (h264_qsv)) # 这里看到解码和编码都是使用h264_qsv
------
frame= fps= q=-0.0 size= 24773kB time=::12.77 bitrate=.8kbits/s speed=.7x
尝试过其他的软件,比如:
HandBrake-1.0.7-x86_64-Win_GUI
MediaCoder-x64-0.8.52.5920
通过设置能达到编码使用Intel QSV,但是解码依然是CPU,并且使用率依然很高。
尝试过Linux平台,发现硬件加速还提示缺失文件。下次再研究。
ffmpeg转码使用硬件加速的更多相关文章
- 【视频开发】【CUDA开发】FFMPEG硬件加速-nvidia方案
1.目标 <1>显卡性能参数: <2>方案可行性: 2.平台信息 2.1.查看当前显卡信息 命令: lspci |grep VGA 信息: 01:00.0 VGA com ...
- NVIDIA FFmpeg 转码技术分析
NVIDIA FFmpeg 转码技术分析 所有从 Kepler 一代开始的 NVIDIA GPUs 都支持完全加速的硬件视频编码,而从费米一代开始的所有 GPUs 都支持完全加速的硬件视频解码.截至 ...
- ffmpeg实现dxva2硬件加速
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.这是第二篇,记录用ffmpeg实现dxva2. 第一篇翻译的Direct3D device manager,链接:http: ...
- FFmpeg再学习 -- 硬件加速编解码
为了搞硬件加速编解码,用了一周时间来看 CUDA,接下来开始加以总结. 一.什么是 CUDA (1)首先需要了解一下,什么是 CUDA. 参看:百度百科 -- CUDA 参看:CUDA基础介绍 参看: ...
- 【并行计算-CUDA开发】【视频开发】ffmpeg Nvidia硬件加速总结
2017年5月25日 0. 概述 FFmpeg可通过Nvidia的GPU进行加速,其中高层接口是通过Video Codec SDK来实现GPU资源的调用.Video Codec SDK包含完整的的高性 ...
- 【视频开发】ffmpeg实现dxva2硬件加速
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.这是第二篇,记录用ffmpeg实现dxva2. 第一篇翻译的Direct3D device manager,链接:http: ...
- 【ARM-Linux开发】【CUDA开发】【视频开发】关于Linux下利用GPU对视频进行硬件加速转码的方案
最近一直在研究Linux下利用GPU进行硬件加速转码的方案,折腾了很久,至今没有找到比较理想的硬加速转码方案.似乎网上讨论这一方案的文章也特别少,这个过程中也进行了各种尝试,遇到很多具体问题,以下便对 ...
- 【并行计算与CUDA开发】英伟达硬件加速解码器在 FFMPEG 中的使用
目录(?)[-] 私有驱动 编译 FFMPEG 使用 nvenc 这篇文档介绍如何在 ffmpeg 中使用 nvenc 硬件编码器. 私有驱动 nvenc 本身是依赖于 nvidia 底层的私有驱动的 ...
- Chrome/Chromium HTML5 video 视频播放硬件加速
Chromium站点上有个大致的框图.描写叙述了Chromium的video在各个平台 - 包含Android - 上是怎样使用硬件资源来做视频编解码加速的: 而依据Android Kitkat上的C ...
随机推荐
- 客户端一致性与多Leader机制------《Designing Data-Intensive Applications》读书笔记7
接着上一篇的内容,我们继续来梳理分布式系统之中的副本机制与副本一致.上文我们聊到了在可用性与一致性之间的一个折中的一致性等级:最终一致性.我们顺着上篇的内容,由用户来分析一致性等级. 1. 客户端的困 ...
- 微信小程序使用字体图标的方法
一.先到阿里巴巴矢量图标库(http://iconfont.cn/),用微博帐号登录,搜索你想要的图标,然后添加入库 从项目里下载下来并解压,找到ttf格式文件 二.到这个平台https://tran ...
- 关于Swing窗体有时候要放大缩小边框才能显示问题?
有时候会出现编写swing窗体后添加的组件在run之后显示不出来的问题.如图: 搜了下解决办法.此时如果是程序里面有panel组件的话,应该这样: labels[i] = new Label(lett ...
- PHP性能分析工具xhprof的安装使用与注意事项
前言 xhprof由facebook开源出来的一个PHP性能监控工具,占用资源很少,甚至能够在生产环境中进行部署. 它可以结合graphviz使用,能够以图片的形式很直观的展示代码执行耗时. 下面主要 ...
- 关于php存储cookie时path存放路径放的详细介绍
以前在存储cookie时,没有用到path这个参数,最近开发中在存储cookie时,要用到path参数来决定存储的路径,结果一开始的时候一直取不到值,到最后详细看了一下path参数的介绍后,才顿悟.分 ...
- 更改dede网站地图模板样式
dedecms后台可以生成2个地图,一个是网站地图,html格式的,一个是rss地图,同样默认这2个地图生成之后也会有底部的dedecms版权声明,这个时候我们需要分别更改这2个模板才可以去掉底部的版 ...
- Eclipse配置maven环境
一.什么是maven? Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个 ...
- iOracle实战笔记(第五天)
导读 今天的主要内容:维护数据的完整性.索引.管理Oracle的权限和角色. 一.维护数据库的数据的完整性 数据完整性用于确保数据库数据遵从一定的商业规则和逻辑规则.在Oracle中,数据完整性可以使 ...
- java中的nextLine
package scanner; import java.util.Scanner; public class NextLine { public static void main(String[] ...
- 注释中不允许出现字符串 "--"。
问题: 在启动tomcat时会出现如上错误,同时有可能会出现xml无法解析等错误 解决办法: 注释中不能出现字符串 "--",即需要把xml文件中多余的“--”去掉,例如: < ...