QtAV--基于Qt和FFmpeg的音视频播放库

Totem,mplayer,sopcast,realplayer,bmp
novesky
帖子: 159
注册时间: 2008-07-12 17:18

QtAV--基于Qt和FFmpeg的音视频播放库

#1

帖子 novesky » 2013-03-04 22:12

主页 http://wang-bin.github.io/QtAV

2015.02.13 QtAV1.5.0
加入QtAVWidgets模块。和QtMultimeida一样,QtAV模块只包含核心的功能,只依赖QtCore和QtGui。这样部署QtQuick应用可以去掉QtWidgets模块,大概小6M。QtAV模块还是可以进行视频显示的,要用Qt5的QWindow。QtAVWidgets模块中包含了几种显示视频的widget,还有实时预览的widget。使用该模块前要在pro文件中加入QT += avwidgets
改进音频输出接口。修复音量增大噪音问题。
提高音轨切换速度
修复wmv播放卡顿和噪音问题。这个问题存在很久很久了,最近才发现是个很低级的错误
预览更加精确
修复seek可能导致的花屏
减少ffmpeg读出来的数据的拷贝
修复QML中的几个崩溃问题
QML加入基于FBO的视频显示元素,完全重用QtAV模块的opengl渲染代码。默认已使用,要在qml文件中加入import QtAV 1.5
简化OSX的部署,无需自行编译QtAV。只要下载我发布的player安装包,安装到”应用程序”,然后运行 /Applications/player.app/sdk_osx.sh ~/Qt5.4.0/5.4/clang_64/lib 就行
windows的安装包支持HEVC硬解
大量其他改进和bug修复
播放器例子:C++和QML的两个播放器都支持进度条上实时预览了

下载:https://sourceforge.net/projects/qtav/f ... ease/1.5.0 https://github.com/wang-bin/QtAV

实时预览,给您看片新体验
preview
preview
2014.12.27 QtAV 1.4.2
- 提高seek速度。要感谢wm4(mpv主力开发者)的指点
- 优化音视频同步逻辑,软解播放高分辨率高帧率视频完胜其他播放器。其他播放器几乎不能看,包括硬解,除了mpv+vaapi。以后将有更好的优化。windows下效果略差。4k 120fps h264测试视频: http://pan.baidu.com/s/1sj6s40l
- 修复VA-API解码图像下方多出一条模糊的线问题。修复使用libav9时vaapi可能不工作的问题。
- ffmpeg运行时支持hevc dxva硬解的话就启用硬解。目前要使用LAVFilters的ffmpeg。
- Cedarv硬解优化
- 增加可扩展的视频输入源接口。支持qrc资源文件里的音视频播放(QtMultimedia还不支持)
- 异步加载
- 修复使用openal时多个播放器实例播放音频不正常问题
- 修复播放下一帧问题
- 修复截图不是当前帧问题。简化截图接口
- 修复qml视频画面抖动问题
- 正确处理文件名中的特殊字符。
- libass改为动态加载。依赖 https://github.com/wang-bin/capi
- 支持链接到ffmpeg静态库
- rgb48支持。opengl只支持rgb48le

2014.11.06 QtAV 1.4.1
- QML里更多和QtMultimedia兼容的接口
- 完善外挂字幕接口。libass字幕渲染支持。libass和ffmpeg字幕解析可实时切换,见图
- QML 视频预览支持
- 日志级别控制
- debian 打包支持,在ubuntu>=14.04上可以用debuild来编译成deb包
- Qt5.4支持,bug修复等等
更多细节及下载 http://www.qtav.org/blog/1.4.1.html
qml preview
qml preview
2014.09.10 QtAV 1.4.0
下载:https://sourceforge.net/projects/qtav/f ... ease/1.4.0
- OpenGL优化,支持更多的格式,支持QML,对于Qt>=5.4支持opengl动态切换
- VAAPI: GLX直接渲染支持,性能大幅提升。检测显卡是否4k以防止系统崩溃.
- DXVA: 更多解码表面以提升性能防止画面抖动
- OSX的VDA硬解支持
- Android支持,部署更简单
- 字幕支持,包括qml
- OpenAL 改进,支持大多数平台
- FFmpeg的libavfilter支持
- 音频播放接口改变
- 简化OSX的部署和安装包制作
- bug修复

2014.05.30 QtAV1.3.4
- CUDA:修复播放时花屏、画面顺序跳动等问题
- VAAPI,DXVA:之前VAAPI的性能很差。现在intel gpu使用sse4.1来拷贝解码数据,性能提升明显。 VAAPI支持drm
- 使用ffmpeg新的硬解接口
- 修复切换解码器后画面显示不对甚至崩溃问题
- 加入avcodec、avformat和各解码器的一些高级选项。
- metadata 支持
- 优先使用流信息里的显示比例。感谢 Sandro Cavazzoni
- 修复文件名编码问题。之前貌似日语文件名打不开
- 修复带图片的音频不显示图片和不能拖动进度的问题
- 支持将QtAV安装为Qt的模块方便开发应用
详情见 http://wang-bin.github.io/qtav.org/blog/1.3.4.html
decoders
decoders
2014.04.20 QtAV 1.3.3
- 支持调用NVIDIA的cuvid库进行CUDA硬解。支持平台:windows, linux。(是linux上第一个支持cuda硬解的么?)。有些视频播放会抖动,目前原因还不清楚。4k硬解画面貌似有点花,效果不如lavfilters好。
- OpenGL和OpenGL ES2支持16-bit的YUV渲染,包括9, 10, 12, 14, 16 bit的little/big endian的yuv。目前vlc,xbmc,mplayer都只支持Desktop OpenGL,而ES2都不支持(又是第一个?)。对比下效果还是很明显的,比如htc butterfly S的android上测一个10bit的视频cpu使用率比vlc低10%
- 修复1.3.1以来的某些视频播放时有点马赛克问题
- 支持Sailfish OS
- 改进CedarV硬解
- QML里进行声道设置
- 其他:player例子修复画面大小不对的问题。改进编译ffmpeg脚本,支持maemo5, meego, sailfish, android, mingw gcc, msvc


2014.03.17 QtAV 1.3.2 发布
此版本主要优化了 OpenGL渲染,性能大幅提升。测试了2台window和mac比vlc的cpu使用率低不少。iOS, android, meeg0上的opengl渲染也能工作 截图见 http://wang-bin.github.io/QtAV
如果支持glsl就采用glsl。用glsl进行yuv视频渲染,还有亮度、对比度等调节。
修复XV渲染的一些问题,支持NV12,支持亮度、对比度等调节。
支持从QIODevice播放(于是可以放内存里的数据,等等等等)
视频截图支持保存为原始的YUV格式
player:打开文件状态显示,设置对话框等

2014.01.29 QtAV 1.3.1 发布
- OpenAL初步支持
- 修复硬件解码时seek、网络丢包等情况下崩溃问题
- CedarX硬解支持。可以在pcDuino上硬解。感谢 Miroslav Bendik. 可以看他的视频 http://www.youtube.com/watch?v=u3mvDe3GBPI
- FFmpeg log和错误处理
- AVDictionary 支持
- Hi10bits 使用软解
- 还有其他诸多改进
播放器相关:
滚动滚轮进行缩放,禁止屏保等
同时加入了界面更加 cool 的 QMLPlayer例子,在windows、mac、linux上都有不错的体验
QtAV+QML on ubuntu
QtAV+QML on ubuntu
QtAV+QML on OSX 10.9
QtAV+QML on OSX 10.9
2013.12.19 QtAV 1.3.0 发布
- windows下dxva硬解初步支持,目前拖动时间可能会有崩溃问题。vaapi目前性能很差
- 可选择音轨
- 可调节亮度、饱和度等
- 循环播放、播放列表、历史记录
- HEVC支持(FFmpeg)
- 优化网络电视界面、其他界面等
以下功能是库里支持但player未加ui的
- 一个视频播放多个输出窗口支持,支持裁剪,自定义filter
mac.jpg
2013.07.03 QtAV 1.2.2发布:
用户可见的改进就是之前版本播放音频爆音的问题修复,加入任意播放速度控制的支持,音量调节ui,画面质量切换,任意比例显示
此外,还修复了很多bug

2013.05.27 QtAV1.2.0发布:
更新很多东西,主要有
1. player例子加入gui界面,易于操控。自带一些网络电视
2. 独创的播放时渲染引擎无缝动态切换。可以方便地对比各种渲染引擎的cpu使用率
3. X11下XV的支持(Qt4 only)
4. bug修复等
图片
1.1.10还包含mac下的安装包。linux?不需要我编译把。
今天编译了个ubuntu1204上的:http://sourceforge.net/projects/qtav/fi ... b/download
需要装ffmpeg相关的libavcodec54等包,还要Qt。其实还是自己编译方便。而且现在支持直接

代码: 全选

make deb
的方式来生成deb包了,不过我对包的结果不太了解,可能不太规范。
命令行:

代码: 全选

player [-vo qt|gl] [url/path]filename
我机器上初始化音频非常慢,不知是代码问题还是系统问题。。。


欢迎fork,欢迎参与开发,一个人时间不够啊。。。欢迎报bug、提建议等。

去年10月开始写的。后来一直在更新。现在国内外有些人用于摄像头监控蛮多的。
功能么基本的功能都有,不支持字幕暂时,没有好看的界面(这个库嘛没必要做什么界面,能显示就好),方便二次开发。
带了几个例子,比如能同步播放的视频樯,可以旋转的播放窗口(其实很容易对播放窗口进行各种变换,以后再加例子),几种渲染引擎比较,多播放器共享同一窗口(那个例子支持播放网络视频,我编译的ffmpeg放很卡,可以用这个替换http://ffmpeg.zeranoe.com/builds )等。看下代码就会发现用我这个库写播放器超级方便。
编译么我在windows下mingw和VC、linux、Mac OS X下都编译过,木有问题。Qt4(只测过4.7.x~4.8.x)和Qt5都支持。这里的qmake编译工程是我精心编写的,支持config test,类似于./configure的那种,虽然有点不完善。

代码: 全选

cd your_build_dir
qmake QtAV_dir/QtAV.pro
make

qmake的时候会生成cache,重新配置要rm .qmake.cache

plan:
很多很多,比如字幕支持、视频信息、更多的渲染引擎、硬件解码、基于cuda等库的优化、组件化等等。 目前还是感觉渲染引擎扩展最好写,刚刚支持了direct2d。啊呀opengl略懂皮毛,虽然支持了,但是cpu占用没有什么改观。linux下还有xv什么的看了下貌似不难,有空加个。
就酱。
旋转多个video item
旋转多个video item
上次由 novesky 在 2015-02-16 12:45,总共编辑 34 次。
mraandtux
论坛版主
帖子: 5211
注册时间: 2009-12-12 19:29
系统: Kubuntu

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#2

帖子 mraandtux » 2013-03-05 19:28

有些Linux用户更想你编译,我编译后出现这个:

代码: 全选

FFmpeg avutil is required, but not available
novesky
帖子: 159
注册时间: 2008-07-12 17:18

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#3

帖子 novesky » 2013-03-06 9:16

mraandtux 写了:有些Linux用户更想你编译,我编译后出现这个:

代码: 全选

FFmpeg avutil is required, but not available
需要安装FFmpeg的开发包,可以自己编译最新版本的install下。还要装portaudio
顺便请更新下代码
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#4

帖子 eexpress » 2013-03-06 9:21

视频,编码库和opengl的编译,搞死人的。
● 鸣学
头像
nyfair
帖子: 1067
注册时间: 2007-12-07 12:49
系统: winnux10
来自: Tree New Bee

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#5

帖子 nyfair » 2013-03-06 13:28

ffmpeg的尿性,每过几个月api就差一大截,编译不过是三天两头的事
本人在此论坛仅负责吐槽,问题急需解决请支付宝转账5毛至{我的[email protected]},将会竭诚为您服务

linux常见多媒体问题处理指南

1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在

⇩自由网络⇩
https://github.com/nyfair/freeweb
novesky
帖子: 159
注册时间: 2008-07-12 17:18

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#6

帖子 novesky » 2013-03-06 16:18

nyfair 写了:ffmpeg的尿性,每过几个月api就差一大截,编译不过是三天两头的事
目前是支持最新版的,其他稍微老一点的可以做个兼容层
mraandtux
论坛版主
帖子: 5211
注册时间: 2009-12-12 19:29
系统: Kubuntu

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#7

帖子 mraandtux » 2013-03-06 16:26

novesky 写了:
mraandtux 写了:有些Linux用户更想你编译,我编译后出现这个:

代码: 全选

FFmpeg avutil is required, but not available
需要安装FFmpeg的开发包,可以自己编译最新版本的install下。还要装portaudio
顺便请更新下代码
代码昨天下了即刻编译,但是出现了以上错误
novesky
帖子: 159
注册时间: 2008-07-12 17:18

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#8

帖子 novesky » 2013-03-06 16:50

mraandtux 写了:
novesky 写了:
mraandtux 写了:有些Linux用户更想你编译,我编译后出现这个:

代码: 全选

FFmpeg avutil is required, but not available
需要安装FFmpeg的开发包,可以自己编译最新版本的install下。还要装portaudio
顺便请更新下代码
代码昨天下了即刻编译,但是出现了以上错误
git pull 下我的代码把,今天改了一点一些错误
头像
nyfair
帖子: 1067
注册时间: 2007-12-07 12:49
系统: winnux10
来自: Tree New Bee

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#9

帖子 nyfair » 2013-03-14 14:01

大大,我想请教下player有没有办法播放通过命令行传过来的yuv stream
本人在此论坛仅负责吐槽,问题急需解决请支付宝转账5毛至{我的[email protected]},将会竭诚为您服务

linux常见多媒体问题处理指南

1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在

⇩自由网络⇩
https://github.com/nyfair/freeweb
novesky
帖子: 159
注册时间: 2008-07-12 17:18

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#10

帖子 novesky » 2013-03-15 21:20

nyfair 写了:大大,我想请教下player有没有办法播放通过命令行传过来的yuv stream
我没试过,应该怎么测试?
头像
nyfair
帖子: 1067
注册时间: 2007-12-07 12:49
系统: winnux10
来自: Tree New Bee

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#11

帖子 nyfair » 2013-03-16 14:17

novesky 写了:
nyfair 写了:大大,我想请教下player有没有办法播放通过命令行传过来的yuv stream
我没试过,应该怎么测试?
主要是压片时会用Vapoursynth写一些视频处理的脚本,希望能找个软件能预览下效果,要简单测试下用ffmpeg就可以了
ffmpeg -i 视频文件 -f yuv4mpegpipe - | player
或者更简单些不管yuv直接 cat 视频文件 | player
总之就是这个意思
本人在此论坛仅负责吐槽,问题急需解决请支付宝转账5毛至{我的[email protected]},将会竭诚为您服务

linux常见多媒体问题处理指南

1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在

⇩自由网络⇩
https://github.com/nyfair/freeweb
novesky
帖子: 159
注册时间: 2008-07-12 17:18

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#12

帖子 novesky » 2013-03-16 21:18

nyfair 写了:
novesky 写了:
nyfair 写了:大大,我想请教下player有没有办法播放通过命令行传过来的yuv stream
我没试过,应该怎么测试?
主要是压片时会用Vapoursynth写一些视频处理的脚本,希望能找个软件能预览下效果,要简单测试下用ffmpeg就可以了
ffmpeg -i 视频文件 -f yuv4mpegpipe - | player
或者更简单些不管yuv直接 cat 视频文件 | player
总之就是这个意思
哦,还不支持,没调查过怎么用FFmpeg来读取这样的输入
头像
jogetwoo
帖子: 158
注册时间: 2012-07-07 16:44

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#13

帖子 jogetwoo » 2013-03-17 0:44

现在是ffmpeg version 1.1.2
FFmpeg avutil is required, but not available
install > libavutil-dev
还得最新x264
最新libtheora 这两个是必须的

代码: 全选

传说中肉隐肉现的那位!
novesky
帖子: 159
注册时间: 2008-07-12 17:18

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#14

帖子 novesky » 2013-03-17 10:03

jogetwoo 写了:现在是ffmpeg version 1.1.2
FFmpeg avutil is required, but not available
install > libavutil-dev
还得最新x264
最新libtheora 这两个是必须的
奇怪,跟那两个库没关系。。。
头像
jogetwoo
帖子: 158
注册时间: 2012-07-07 16:44

Re: QtAV--基于Qt和FFmpeg的音视频播放库

#15

帖子 jogetwoo » 2013-03-17 10:31

编译最新版ffmpeg才需要新的x264和libtheora
只解决错误只需安装 libavutil-dev

代码: 全选

传说中肉隐肉现的那位!
回复