MPlayer动态播放方案

  一、      让MPlayer自动读取我们不断添加的列表,也就是一边添加MPlayer可以一边读,形成动态播放列表。把添加在QT界面中的播放列表的歌曲名字写到一个文件中形成一个播放列表,每添加一首歌曲都换行,每首歌曲占一行,方便后面读取,这样QT界面中的歌曲列表在更新的时候与之对应的播放列表文件也随着更新,这样播放列表能够动态了。然后在第一次往播放列表里添加歌曲的时候调用readFile()函数,读取播放列表文件中的第一行,把获得的歌曲名字传给player()函数,然后player()函数使用QProcess调用MPlayer并把歌曲名字给它就可以播放了。然后就是QProcess调用MPlayer播放完歌曲后是不是应该有一个finished信号发出?如果有的话使用这个信号和readFile()函数连接,每当MPlayer播放完成后就调用readFile()函数进行读取播放列表文件中的下一行的歌曲名,然后readFile()函数再调用player()函数,这样就实现了自动读取列表播放了。其中readFile()函数中开头先判断QProcess是不是正在被调用,如果正在被调用则关闭QProcess再读取歌曲名,然后传递给player()函数,player()函数只管用QProcess调用就行了,这样就避免了不能重复调用而且系统提示QProcess正在运行的错误警告。readFile()函数只有两种情况下被调用,一种是QProcess调用MPlayer后歌曲播放结束后调用redaFile()函数,含有一种是用户发出下一首的指令后也调用readFile()函数,这样readFile()函数就强行关闭QProcess,然后读取播放列表文件中的下一行的歌曲名字,然后再调用player()函数,这样就实现了下一首的功能!另外就是这个播放列表文件还可以使用数据库表的形式,这样的话读取和存储可能会更加方便和快捷一些,因为我们程序中已经使用了数据库。

二、        如果QProcess调用MPlayer播放完歌曲后如果没有finished信号发出的话,我们就是用另外一种方法来判断MPlayer是否播放结束。当首次向播放列表里添加文件时还是调用readFile()函数,读取播放列表文件中第一行,把获得的歌曲文件名传递给player()函数,然后player()函数开始是用QProcess调用MPlayer播放歌曲文件,同时是用process->write("get_time_length/”);

QString time(process->readLine());

timer->start(time);

         这样每当载入一次文件就获得它的的总时间长度,并且同时是用QTimer开始计时,当放完成后QTimer会有一个timeout信号发出,使这个信号和readFile()函数连接,这样就也能实现自动播放列表了,下一首对应的函数依然是readFile(),强行结束当前的QProcess重新使用QProcess调用MPlayer播放列表中的下一首歌曲(也就是播放列表文件中的下一行中的歌曲文件名,或者是数据库中播放列表中的下一条记录)。

最后,不管是动态播放列表,还是手动下一首切换播放,其中的列表都是在文件或者数据库中进行,都是调用readFile()函数进行读取列表文件中的下一首。(思路:不管是文件播放完还是手动切换下一首,势必都要读取播放列表文件中的下一首,把要播放的歌曲文件名传递给player()函数,然后player()函数关闭当前QProcess(就是关闭它所调用的外部程序),重新使用QProcess调用MPlayer并把歌曲文件名传递给MPlayerMPlayer就可以播放了,然后再使用函数获取当前载入文件的总长度,使用QTimer开始计时,直到歌曲播放结束,QTimer发出timeout信号,槽函数readFile()进行响应,开始读取播放列表文件中的下一首歌曲,这样就形成了循环,也就是自动播放列表。)。

时间: 2024-09-27 03:19:48

MPlayer动态播放方案的相关文章

轨迹系列——WebGIS中使用ZRender实现轨迹前端动态播放特效

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在地图上以时间轴方式播放人员.车辆在地图上的历史行进轨迹.在之前的博客中我们谈到了如何对轨迹数据进行滤波.平滑.聚类等,均是为让轨迹线变得简化优美,这里我们将和大家一起探讨如何将轨迹以播放的效果在前端地图上展示. 2.技术选型 2.1选型结论 GIS的前端框架我们选用的是AGS JS(3.18).选这个前端框架主要是基于浏览器的支持情况,我们要求IE

Python 抓取动态网页内容方案详解_python

用Python实现常规的静态网页抓取时,往往是用urllib2来获取整个HTML页面,然后从HTML文件中逐字查找对应的关键字.如下所示: 复制代码 代码如下: import urllib2 url="http://mm.taobao.com/json/request_top_list.htm?type=0&page=1" up=urllib2.urlopen(url)#打开目标页面,存入变量up cont=up.read()#从up中读入该HTML文件 key1='<a

PHP加Nginx实现动态裁剪图片方案

 这篇文章主要介绍了PHP加Nginx实现动态裁剪图片的方案,使用Imagick组件实现,需要的朋友可以参考下 许久以前写过一篇也是关于高性能PHP图片动态裁剪方案的文章,那文章使用的是nginx Cache和rewrite实现的,当然再加上CDN,那个方案存在一个问题就是图片并没有实际生成,而是以二进制的形式存在缓存中.如果缓存失效了那么还需要请求php再次生成.如果说到区别这是我暂且认为的吧. 利用空余时间,新增了静态生成图片支持,支持对图片3种模式切换,在门户网站自动对图片尺寸进行裁剪,减

基于QT的mplayer播放器

一.项目概述 Mplayer.它支持大量的多媒体文件格式,像常见的音频文件如mp3/wav/mid,常见的视频文件如avi/vcd/dvd/rm等等,各种视频编/解码方式也是应有尽有. 我们项目的目标是在liunx下,用QT做一个MPlayer皮肤,能够实现播放器的常见 功能,如:播放.停止.快进.快退.上/下一曲等.并把程序移植到ARM平台上. 二.功能体验 本节主要目的是让大家在学习具体实现过程前,先体验下播放器的功能. 1.PC端功能体验 将"项目代码/工程代码"目录下的mpla

PHP加Nginx实现动态裁剪图片方案_php实例

许久以前写过一篇也是关于高性能PHP图片动态裁剪方案的文章,那文章使用的是nginx Cache和rewrite实现的,当然再加上CDN,那个方案存在一个问题就是图片并没有实际生成,而是以二进制的形式存在缓存中.如果缓存失效了那么还需要请求php再次生成.如果说到区别这是我暂且认为的吧.利用空余时间,新增了静态生成图片支持,支持对图片3种模式切换,在门户网站自动对图片尺寸进行裁剪,减少服务器带宽,理论上应该也满足了业务的需求吧,图片裁剪使用了Imagick组件. 一.思路再现:1.先写好请求服务

win8媒体播放器兼容性测试

Win8所带来的全新体验模式,让成千上万的用深刻地感觉到了Windows升级变身之后的魅力所在,同时Win8所传承的Windows传统特征,包括Windows软件.主题.开始菜单等等.那么落实到Windows传统平台上犹如瀚海的软件,在全新的Win8上兼容性如何?ZOL软件频道将推出针对Windows 8软件兼容性系列测试文章,希望通过逐个对软件分类兼容性的测试,区分出还有哪些软件存在着不兼容的现象. 待测试软件详情 软件类别 软件名称 媒体播放类 TVAnts电视蚂蚁 沸点网络电视 Mplay

iOS 利用 framework 进行动态更新

前言 目前 iOS 上的动态更新方案主要有以下 4 种: HTML 5 lua(wax)hotpatch react native framework 前面三种都是通过在应用内搭建一个运行环境来实现动态更新(HTML 5 是原生支持),在用户体验.与系统交互上有一定的限制,对开发者的要求也更高(至少得熟悉 lua 或者 js). 使用 framework 的方式来更新可以不依赖第三方库,使用原生的 OC/Swift 来开发,体验更好,开发成本也更低. 由于 Apple 不希望开发者绕过 App

怎么在PPT中插入GIF动态图

  1.在插入的时候不要使用图片的插入形式,应该选择插入影片和声音的形式. 2.此时选择框中显示的是影片文件,但我们要选择所有文件格式. 3.这样就能显示你想插入的gif图片了. 4.插入之后,按F5就可以看到,GIF图片可以动态播放.

如何在PPT中插入GIF动态图

  1.在插入的时候不要使用图片的插入形式,应该选择插入影片和声音的形式. 2.此时选择框中显示的是影片文件,但我们要选择所有文件格式. 3.这样就能显示你想插入的gif图片了. 4.插入之后,按F5就可以看到,GIF图片可以动态播放.