流媒体技术学习笔记之(十七)FFmpeg 3.3《希尔伯特》-新版本的亮点

简介: FFmpeg 3.3“Hilbert”,一个新的主要版本的一些亮点:苹果Pixlet解码器NewTek SpeedHQ解码器QDMC音频解码器PSD(Photoshop Document)解码器FM屏幕捕获解码器ScreenPressor解码器XPM解码器DNxHR解码器修复了HQX和高分辨率视频ClearVideo解码器(部分)16.

 FFmpeg 3.3“Hilbert”,一个新的主要版本的一些亮点:

  • 苹果Pixlet解码器
  • NewTek SpeedHQ解码器
  • QDMC音频解码器
  • PSD(Photoshop Document)解码器
  • FM屏幕捕获解码器
  • ScreenPressor解码器
  • XPM解码器
  • DNxHR解码器修复了HQX和高分辨率视频
  • ClearVideo解码器(部分)
  • 16.8和24.0浮点PCM解码器
  • 英特尔QSV加速VP8视频解码
  • 本机Opus编码器
  • DNxHR 444和HQX编码
  • (M)JPEG编码器的质量改进
  • VAAPI加速MPEG-2和VP8编码
  • 超前视频过滤器
  • 摄像机多媒体过滤器
  • readeia608过滤器
  • 阈值滤波器
  • 过滤器
  • MPEG-7视频签名过滤器
  • 添加内部ebur128库,删除外部libebur128依赖
  • 英特尔QSV视频缩放和去隔行滤波器
  • 示例转储交换解码器
  • MIDI样品转储标准分解器
  • 幕墙封闭字幕解码器和复用器
  • 支持MOV多个样品说明表
  • Pro-MPEG CoP#3-R2 FEC协议
  • 支持球形视频
  • CrystalHD解码器移动到新的解码API
  • 如果自动检测库被请求但未找到,则配置将失败
  • 我们强烈建议用户,分销商和系统集成商升级,除非他们使用当前的git master。

下面我们测试下:英特尔QSV加速VP8视频解码(Intel QSV-accelerated VP8 video decoding)

前期准备工作:

1、查看你的CUP是否支持英特尔QSV加速:https://ark.intel.com/Search/FeatureFilter?productType=processors&QuickSyncVideo=true

2、查看本系统的处理器信息【Intel® Core™ i3-4160】

3、在Inel列表中查询自己的处理器型号,我的如下所示:

可以看出,本机处理器是支持的

windows如何安装FFmpeg,在另外一篇博客,地址:流媒体视频编码之————Windows安装FFmpeg

4、FFmpeg 支持的编码查询命令:    ffmpeg -codecs  

DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 
(decoders: h264 h264_qsv libopenh264 h264_cuvid )
(encoders: libx264 libx264rgb libopenh264 h264_nvenc h264_qsv nvenc nvenc_h264 )

说明:出现以上信息表示是支持 英特尔QSV加速VP8视频解码的

5、列出此构建ffmpeg支持的所有硬件加速方法:      ffmpeg -hwaccels  

一、不使用英特尔QSV加速VP8视频解码

(1)命令行

ffmpeg -i c.mkv -acodec copy -vcodec libx264 no-qsv.mp4

(2)执行打印信息

(3)CPU和内存消耗

CPU(93%)和内存(414,912K)

二、使用英特尔QSV加速VP8视频解码

注意:为了是测试能够更好的工作,解码器和编码器都必须支持QSV加速度,并且不能使用滤波器

 1、普通 ffmpeg 

(1)命令行

F:\Tinywan\FFmpeg\Ver-Test>ffmpeg -hwaccel qsv -c:v h264_qsv  -i c.mkv  -look_ahead 0 -c:v h264_qsv -preset veryfast out001-1.mp4

参数说明:

(1) -hwaccel[:stream_specifier] hwaccel (input,per-stream)  ,使用硬件加速来解码匹配的流,获取更多http://ffmpeg.org/ffmpeg-all.html

(2)执行打印信息

(3)CPU和内存消耗

CPU(27%)和内存(175.868K)

2、windows下自己编译的3.3.2版本

(1)命令行

F:\Tinywan\FFmpeg\Ver-Test>D:\ffmpeg-hw-win32\static\x86_64\bin\ffmpeg.exe -version
ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers

D:\ffmpeg-hw-win32\static\x86_64\bin\ffmpeg.exe -hwaccel qsv -c:v h264_qsv  -i c.mkv  -look_ahead 0 -c:v h264_qsv -preset veryfast out002-1.mp4 -y

 (2)执行打印信息

(3)CPU和内存消耗

CPU(27%)和内存(178.596K)

 3、官网下载的最新的3.4 版本

F:\Tinywan\FFmpeg\Ver-Test>D:\ffmpeg3.4\bin\ffmpeg.exe -version
ffmpeg version N-87871-g7480f232d2 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)

D:\ffmpeg3.4\bin\ffmpeg.exe -hwaccel qsv -c:v h264_qsv  -i c.mkv  -look_ahead 0 -c:v h264_qsv -preset veryfast out003-1.mp4 -y

 (2)执行打印信息

(3)CPU和内存消耗

 CPU(28%)和内存(177.744K)

三、使用NVDIA GPU的全硬件加速转码

ffmpeg.exe -hwaccel cuvid -c:v h264_cuvid -i <input.mp4> -vf scale_npp=1280:720 -c:v h264_nvenc <output.mp4>

参考:

1、https://github.com/illuspas/ffmpeg-hw-win32

2、https://trac.ffmpeg.org/wiki/HWAccelIntro

3、https://trac.ffmpeg.org/wiki/Hardware/VAAPI 

四、总结

如果是视频编码,尽量采用硬件加速去实现,可惜阿里云现在没有啊!

目录
相关文章
|
2月前
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
509 0
|
2月前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
78 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
2月前
|
计算机视觉 Python
FFMPEG学习笔记(一): 提取视频的纯音频及无声视频
本文介绍了如何使用FFmpeg工具从视频中提取纯音频和无声视频。提供了具体的命令行操作,例如使用`ffmpeg -i input.mp4 -vn -c:a libmp3lame output.mp3`来提取音频,以及`ffmpeg -i input.mp4 -c:v copy -an output.mp4`来提取无声视频。此外,还包含了一个Python脚本,用于批量处理视频文件,自动提取音频和生成无声视频。
75 1
|
3月前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
121 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
2月前
|
存储 编解码 网络协议
FFmpeg学习笔记(三):FFmpeg和FFplay参数介绍
这篇文章是关于FFmpeg和FFplay参数的介绍,包括如何使用这些参数进行视频流的捕获、处理和播放。
76 0
|
2月前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
255 0
|
4月前
|
JavaScript 前端开发 Java
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
IT寒冬使APP开发门槛提升,安卓程序员需转型。选项包括:深化Android开发,跟进Google新技术如Kotlin、Jetpack、Flutter及Compose;研究Android底层框架,掌握AOSP;转型Java后端开发,学习Spring Boot等框架;拓展大前端技能,掌握JavaScript、Node.js、Vue.js及特定框架如微信小程序、HarmonyOS;或转向C/C++底层开发,通过音视频项目如FFmpeg积累经验。每条路径都有相应的书籍和技术栈推荐,助你顺利过渡。
113 3
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
|
2月前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
144 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
2月前
|
编解码 语音技术 内存技术
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
《FFmpeg开发实战:从零基础到短视频上线》一书中的“5.1.2 把音频流保存为PCM文件”章节介绍了将媒体文件中的音频流转换为原始PCM音频的方法。示例代码直接保存解码后的PCM数据,保留了原始音频的采样频率、声道数量和采样位数。但在实际应用中,有时需要特定规格的PCM音频。例如,某些语音识别引擎仅接受16位PCM数据,而标准MP3音频通常采用32位采样,因此需将32位MP3音频转换为16位PCM音频。
74 0
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
|
2月前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
160 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频