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 ...
随机推荐
- android动画源码合集、动态主题框架、社交app源码等
Android精选源码 仿MIUI果冻视图-BouncingJellyView 一个快速易用的动态主题框架 android动画效果集合源码 android使用Kotlin开发的Dribbb ...
- c语言字符相关函数
1.fgetc(getc)fputc(putc)区别: getc和putc都是针对标准输入输出的,而fgetc和fputc可以对任意的文件操作,也可以用fgetc和fputc对标准输入输出操作fget ...
- 微信小程序实现滚动加载更多
1.需要用到的组件和api scroll-view(可滚动视图区域) wx.showToast(OBJECT)显示消息提示窗----显示loading小菊花用的 2.需要用到的属性 3.scrol-v ...
- Spring的IOC分析(一)
我们学习Spring之前需要对23种java的设计模式的9种有一定的理解,设计模式为了解耦,Spring也是在解耦的方向上设计的,所以设计模式要理解一下,它当中用到了很多. 单例模式(写法很多钟,7种 ...
- 算法-java代码实现计数排序
计数排序 第10节 计数排序练习题 对于一个int数组,请编写一个计数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3], ...
- [随笔] 简单操作解决Google chrome颜色显示不正常的情况
最近在用Linuxmint 真的是极友好的桌面Linux啊,然后用最新的Linuxmint自带的Firefox浏览器上网,发现颜色都变成了红色黄色变绿色,以为是显卡的问题,搞了一阵,无果.果断换Goo ...
- svn冲突文件解决方法
svn冲突文件解决方法 工具/原料 svn客户端 方法/步骤 1 通过SVN客户端更新需要的文件,如果出现有感叹号的文件,找到出现感叹号的文件. 2 选择感叹号文件,即冲突文件,单击鼠标右键对冲突文件 ...
- FileZilla出现Failed to convert command to 8 bit charset
FileZilla这款FTP客户端软件,自从华哥使用以来,采用其默认的设置,一直用得很顺畅,没有出现过什么问题.但是今天碰到了一个问题.如图. 错误信息为:Failed to convert comm ...
- 一.初识java
1.框架结构 2.main方法 3.转义符 public class Dome01 { public static void main(String[] args) { //main方法, ...
- asp.net -mvc框架复习(6)-基于MVC实现简单计算器
1.创建好文件夹 2.视图层代码编写 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dyn ...