大家好,关于m3u源码分享网站很多朋友都还不太明白,今天小编就来为大家分享关于2021流畅m3u源的知识,希望对各位有所帮助!
今天给大家分享一下:
如何用Qt实现一个超简单的视频播放器。
运行效果:
代码链接:
https://doc.qt.io/qt-5/qtmultimedia-multimediawidgets-videowidget-example.html
实现难度:
★☆☆☆☆
1.新建应用
在QtCreator依次点击:
->File->NewFileorProject
->Applications->QtWidgetsApplication
然后一路点击next直到finish。
2.界面设计
VideoPlayer::VideoPlayer(QWidget*parent)\n:QWidget(parent)\n{\nm_mediaPlayer=newQMediaPlayer(this,QMediaPlayer::VideoSurface);\n[…]\n\n//横向布局打开button、播放button、进度条\nQBoxLayout*controlLayout=newQHBoxLayout;\ncontrolLayout->addWidget(m_openButton);\n[…]\n\n//竖向布局视频窗口、控制台、状态栏\nQBoxLayout*layout=newQVBoxLayout;\nlayout->addWidget(m_videoWidget);\nlayout->addLayout(controlLayout);\nlayout->addWidget(m_msgLabel);\n\nsetLayout(layout);\n\n//重点\nm_mediaPlayer->setVideoOutput(m_videoWidget);\n}\n
m_mediaPlayer的类型为QMediaPlayer,QMediaPlayer支持播放媒体文件,包括音频和视频。
m_videoWidget的类型为QVideoWidget,QVideoWidget是一个用来容纳视频或者音频的控件。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:嵌入式物联网学习资料(头条)
运行效果:
所有控件都是摆设,没有任何实际功能。
3.支持播放
打开文件:
VideoPlayer::VideoPlayer(QWidget*parent)\n:QWidget(parent)\n{\n[…]\n\n//绑定信号和槽\nconnect(m_openButton,&QPushButton::clicked,this,&VideoPlayer::openFile);\nconnect(m_playButton,&QPushButton::clicked,this,&VideoPlayer::play);\n}\n
当用户点击&34;按键时,弹出文件选择框:
voidVideoPlayer::openFile()\n{\nQUrlurl;\nQFileDialogfileDialog(this);\n\nif(fileDialog.exec()==QDialog::Accepted){\n\nurl=fileDialog.selectedUrls().constFirst();\nif(url.isValid()){\n//通知QMediaPlayer,QMediaPlayer待播放的媒体文件路径\nm_mediaPlayer->setMedia(url);\nplay();\n}\n}\n}\n\n
setMedia()用于设置媒体文件的路径。
播放视频:
voidVideoPlayer::play()\n{\nswitch(m_mediaPlayer->state()){\ncaseQMediaPlayer::PlayingState:\nm_mediaPlayer->pause();\nbreak;\ndefault:\nm_mediaPlayer->play();\nbreak;\n}\n}\n
如果当前处于播放状态,则暂停播放。
如果当前处于暂停状态,则开始播放。
运行效果:
4.支持进度条
显示进度:
VideoPlayer::VideoPlayer(QWidget*parent)\n:QWidget(parent)\n{\n[…]\n\n//绑定信号和槽\nconnect(m_mediaPlayer,&QMediaPlayer::positionChanged,this,&VideoPlayer::positionChanged);\n\nconnect(m_posSlider,&VideoSlider::sliderMoved,\nthis,&VideoPlayer::setPosition);\n[…]\n}\n
当播放内容的进度发生改变时,QMediaPlayer会发出positionChanged()信号,此时我们需要更新进度条:
voidVideoPlayer::positionChanged(qint64position)\n{\nm_posSlider->setValue(position);\n}\n
当用户拖动进度条时,更新播放进度:
voidVideoPlayer::setPosition(qint64position)\n{\nm_mediaPlayer->setPosition(position);\n}\n
运行效果:
到此,一个简陋的播放器就实现完毕了。
5.进一步学习
关于Qtmultimedia的底层实现:
Qtmultimedia的源码位于:
Qt5.14.1/5.14.1/Src/qtmultimedia,
想进一步了解的小伙伴可以阅读一下。
$treeqtmultimedia/src/-L2-d\nqtmultimedia/src/\n├──gsttools\n├──imports\n│├──audioengine\n│└──multimedia\n├──multimedia\n│├──audio\n│├──camera\n│├──controls\n│├──doc\n│├──playback\n│├──radio\n│├──recording\n│└──video\n├──multimediawidgets\n│└──doc\n├──plugins\n│├──alsa\n│├──android\n│├──audiocapture\n│├──avfoundation\n│├──common\n│├──coreaudio\n│├──directshow\n│├──gstreamer\n│├──m3u\n│├──opensles\n│├──pulseaudio\n│├──qnx\n│├──qnx-audio\n│├──resourcepolicy\n│├──v4l\n│├──videonode\n│├──wasapi\n│├──windowsaudio\n│├──winrt\n│└──wmf\n└──qtmultimediaquicktools\n└──shaders
Linux平台下的实现是基于GStreamer的,关于GStreamer,可以参考下面的入门文章。
GStreamer系列-基础概念
GStreamer系列-HelloWorld
更多关于QtMutilMedia的例子:
https://doc.qt.io/qt-5/multimedia-examples.html\n
原文链接:https://mp.weixin.qq.com/s/lbcNw67YSb-1hmApEoQXiw
文章转载自:老吴嵌入式
文章来源于:哈哈哈,这是我用过的最简陋的视频播放器|Qt官方示例
原文链接:哈哈哈,这是我用过的最简陋的视频播放器|Qt官方示例
版权声明:本文来源于网络,免费传达知识,版权归原作者所有,如涉及作品版权问题,请联系我进行删除
好了,文章到这里就结束啦,如果本次分享的m3u源码分享网站和2021流畅m3u源问题对您有所帮助,还望关注下本站哦!