VLC音视频播放,支持添加视频列表和循环播放
注:本文基于C代码讲述vlc音视频播放控制过程,且假设你已经集成好了VLC到你的项目中。
CLinux服务器开发学习资料:点击领取CLinux服务器开发高级架构师资料
一、初始化
像播放单个视频一样,首先我们需要初始化instancelibvlcinstancetmvlclibvlcnew(0,0);
而不同于播放单个视频,我们需要的是libvlcmediaplayert实例,但是它只支持播放单个媒体,因此我们需要初始化另外一个实例libvlcmedialistplayert,它支持列表播放。但同时,libvlcmediaplayert实例也是不可或缺的,因为它代表了我们列表中的正在播放的媒体。libvlcmediaplayertmmediaplayerlibvlcmediaplayernew(mvlc);libvlcmedialistplayertmlistplayerlibvlcmedialistplayernew(mvlc);
之后我们还需要一个不同于单个媒体libvlcmediat的libvlcmedialistt实例,保存了我们的列表媒体。libvlcmedialisttmmedialistlibvlcmedialistnew(mvlc);二、设置媒体列表
基础对象初始化工作完成之后,接下来我们需要将具体的媒体文件添加到我们的播放器中。voidNovaVlcAudio::setMediaList(std::vectorstd::stringpaths){for(inti0;ipaths。size();i){QStringstrQString::fromStdString(paths〔i〕);libvlcmediatmmedialibvlcmedianewpath(mvlc,str。toUtf8()。replace(,)。data());libvlcmedialistaddmedia(mmedialist,mmedia);libvlcmediaparse(mmedia);mdurationMSlibvlcmediagetduration(mmedia);libvlcmediarelease(mmedia);}libvlcmedialistplayersetmedialist(mlistplayer,mmedialist);libvlcmedialistplayersetmediaplayer(mlistplayer,mmediaplayer);}
我们用for循环模拟添加媒体列表。对于本地文件,我们用libvlcmedianewpath生成媒体对象,然后通过libvlcmedialistaddmedia方法将其添加到我们的媒体列表对象中。libvlcmediaparse方法是为了获取媒体时长,完成后将其release。媒体列表添加完成后又将其通过libvlcmedialistplayersetmedialist设置给列表播放器,最后我们大多数情况下都是对mlistplayer进行操作,获取播放状态等等。而后面libvlcmedialistplayersetmediaplayer这个方法的目的就是由mmediaplayer代表播放列表中当前正在播放的媒体播放器,可通过mmediaplayer获取单个媒体的播放进度,音量等。
C音视频开发学习资料:点击领取音视频开发(资料文档视频教程面试题)(FFmpegWebRTCRTMPRTSPHLSRTP)
三、常用方法
该做的工作完成之后我们就可以通过下面的play方法进行播放了。libvlcmedialistplayerplay(mlistplayer);播放typedefenumlibvlcstatet{libvlcNothingSpecial0,libvlcOpening,libvlcBuffering,XXX:Deprecatedvalue。CheckthelibvlcMediaPlayerBufferingeventtoknowthebufferingstateofalibvlcmediaplayerlibvlcPlaying,libvlcPaused,libvlcStopped,libvlcEnded,libvlcError}libvlcstatet;libvlcstatettlibvlcmedialistplayergetstate(mlistplayer);获取播放状态if(libvlcmedialistplayerisplaying(mlistplayer)){libvlcmedialistplayerpause(mlistplayer);}暂停libvlcmedialistplayerstop(mlistplayer);停止floatposlibvlcmediaplayergetposition(mmediaplayer);posis0。010。991。0获取当前媒体的播放进度(注意不是index)typedefenumlibvlcplaybackmodet{libvlcplaybackmodedefault,libvlcplaybackmodeloop,循环libvlcplaybackmoderepeat单个重复}libvlcplaybackmodet;libvlcmedialistplayersetplaybackmode(mlistplayer,mode);设置播放模式libvlcaudiosetvolume(mmediaplayer,volume);设置音量
为什么国外老年人普遍爱穿长款,头发也不长?看完这些街拍就知道头条创作挑战赛很多人会从街拍中找寻穿衣思路,主要是因为街拍很真实地反映了当下时尚趋势,特别是很多中老年人,学习同龄人那些简约又自然的穿搭方式,可以轻松开启时尚之旅哦。那么在秋季,时
分手后的徐璐颜值高身材火辣!她的私服系列也很让人种草大家晚上好,我是春春。来看看分手后的徐L,这两年奋起搞事业,资源是越来越好。偶尔也会忙里偷闲,给自己放放假享受生活。有钱有闲还有颜,身材火辣衣品同样也可圈可点。这不,干脆自己做起了
玫瑰永不凋零美丽的玫瑰可能花期很短暂,但是属于他的璀璨永久的留在了这里。这个残酷美丽的世界,他们说人间是地狱。但是拥有玫瑰的地方又怎会想地狱一样黑暗他在默默的绽放,绽放属于他的花朵,可是人间是
人民日报每日金句摘抄1旗帜引领方向,使命凝聚力量。2团结就是力量,奋斗开创未来。3发展和安全犹如鸟之双翼车之两轮,相互支撑,密不可分。4为当代计,为万世谋。5像保护眼睛一样保护生态环境,像对待生命一样
你还爱我吗你还爱我吗头条作者云开日初你还爱我吗这是多幼稚的问答可又有多少人偷偷问过自己怕你说爱我更怕你说不爱我已画句号的故事爱与不爱又有什么意义遍体鳞伤的结局爱与不爱还不一样的痛苦人总是这样
魂牵故地游,欲问归程何处是,长空万里月如钩水流愁,魂牵故地游,欲问归程何处是,长空万里月如钩。浮生一梦已千年,流光不复还,莫问归程万里尽云烟。载归程,万里江山任我行,水流东逝去,人生有梦总关情。水流花落几时休,梦绕魂牵总是
极米H5对比当贝X3体验LED投影能否逆袭激光投影?前言当贝X3发布一年多,这款采用激光光源的长焦投影机凭借强大的亮度获得市场关注,但时至今日,行业中几乎不存在跟进,在DLP投影机中依旧独树一帜。极米H5,在2022年8月正式发布的
户外电源哪家强1度电新品正浩德DELTA2与电小二1000Pro对比大家好,我是老纪很大力!秋天终于来了,相比起暑期,秋天凉爽的周末更受露营爱好者的喜爱。上周去露营,我从露营地汽车的数量发现露营的人群比夏天更多了,而且我身边的朋友也开始选择到一些提
Prada与女性的私人行动守则我们如何可以离开Prada,如何想象这个世界没有Prada,何等庆幸我们仍旧拥有Prada。数字拨到2023,时装在近几年的变迁下越来越脱离具象的立体概念和板上钉钉的章程,柔化成一
(外代二线)巴黎时装周VictoriaTomas品牌时装秀(外代二线)巴黎时装周VictoriaTomas品牌时装秀9月27日,模特在法国巴黎时装周上展示VictoriaTomas品牌的2023春夏新款服装。新华社西霸9月27日,模特在法
维密天使场上走秀和生活娱乐写真简直不要太美了维密秀超模风采,场里场外都是一样的美艳不可方物,一样的让人赏心悦目。骄阳似火,沙滩泳装,冲浪纳凉,怎么能少了维密超模的身影。高挑修长的好身材,在海天一色沙滩上更是一道靓丽的风景。椰