QML 播放器(vlc-Qt 和QtAV 两种方式)

需求:教师上课,学生利用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.

QML中可以通过使用动画来实现各种特效,包括进场动画。其中,百叶窗特效是一种常见的进场动画,可以让界面元素以一定的节奏和方式出现。下面是一个简单的实现示例: ```qml import QtQuick 2.0 Rectangle { width: 300 height: 300 color: "white" Repeater { model: 5 Image { id: image source: "image.png" width: parent.width / 5 height: parent.height x: index * width clip: true transform: Scale { id: scale origin.x: width / 2 origin.y: height / 2 xScale: 1 yScale: 0 } Behavior on transform { PropertyAnimation { duration: 500 easing.type: Easing.InOutQuad } } } } Component.onCompleted: { for (var i = 0; i < repeater.count; i++) { var image = repeater.itemAt(i); image.scale.y = 1; } } } ``` 在这个示例中,我们使用了一个Repeater来创建了5个相同的Image元素,每个元素的宽度都是父元素宽度的1/5。我们将这些元素放置在一起,然后通过使用clip属性来将它们裁剪成相同大小。接着,我们为每个元素添加了一个缩放变换,初始时y轴的比例为0,这样它们就会“收缩”起来。最后,在组件完成时,我们将每个元素的缩放比例y设置为1,这样它们就会“展开”出现。 在这个示例中,我们使用了PropertyAnimation来控制变换的动画效果。该动画持续500ms,并且使用了Easing.InOutQuad缓动函数,使它看起来更加平滑。你可以根据需要对这些参数进行调整,以达到更好的效果。 总体来说,百叶窗特效是一种简单而又实用的进场动画,可以轻松地让你的应用程序变得更加生动有趣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土拨鼠不是老鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值