需求:教师上课,学生利用PC端 进行观看,经调研针对Qt的播放器,主流有两种方式 vlc-qt 与QtAv
效果:
1,首页 即登录页,包括扫码登录与账号密码登录
2,视频页 视频展示,并在视频上叠加 常用工具栏
3.实现
一,vcl-qt方式
(win10 下可用,但是win7 下 有点问题,可能版本不兼容,所以需要自己编译 ,参考:vlc-qt的编译与使用(MSVC+Qt5)_龚建波的博客-CSDN博客_vlc-qt编译)
1,利用vlc-qt 和qml 实现客户端,用户用手机扫码直接登录观看
2,vlc-qt VLC-Qt · GitHub
3,工程配置
LIBS += -LE:\vlc-qt\lib -lVLCQtCore -lVLCQtQml
INCLUDEPATH += E:\vlc-qt\include
4,视频加载
VlcVideoPlayer {
id: vidwidget
anchors.fill: parent
autoplay:false
url:root.url //视频流地址
}
VLC QWidget 形式使用时,发现一个问题,会异常抛出视频结束的事件,因此改成根据时间来判断 视频是否播放完毕.
有问题没找到原因,改用下面的形式。
二,qtAv方式
(1),qtAv编译
Build QtAV · wang-bin/QtAV Wiki · GitHub
下载源码
git clone https://github.com/wang-bin/QtAV.git
cd QtAV && git submodule update --init
下载依赖
Download QtAV from SourceForge.net
QtCreator编译
添加环境变量,对于msvc2015+Qt5.10 的环境 只需要修改 INCLUDE 和LIB,再这两个变量后增加上述ffmpeg的依赖
(2),使用
import QtAV 1.7
Video {
id:vidwidget
anchors.fill: parent
source:root.url
autoPlay: false
onStatusChanged:{
console.log("onStatusChanged",status)
if(status==MediaPlayer.Buffered){
animation.paused=true
animation.visible=false
}
}
}
(3),win7 下需要安装插件,否则析构时 崩溃
Download QtAV from SourceForge.net
(4),播放状态 。利于此状态可以检测 开始加载视频,以及视频断开等。
4,对比
qml方式, qtAV 比vlc-qt 占用更少的cpu和gpu。 并且qtAV的功能 更多一些,接口调用简单,编译也简单。所推荐qtAV.