`
mmdev
  • 浏览: 12950881 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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()进行响应,开始读取播放列表文件中的下一首歌曲,这样就形成了循环,也就是自动播放列表。)。

分享到:
评论

相关推荐

    Mplayer的嵌入移植

    选用在Windows平台上运行的Cygwin作为Linux仿真环境,选定Mplayer作为嵌入式系统的移植目标,利用交叉编译工具Crosstool在嵌入系统中完整地实现了多媒体播放软件Mplayer的音频与视频的播放功能。

    PHP+mplayer+ffmpeg生成视频截图方案

    1、详细介绍了PHP+mplayer+ffmpeg生成视频截图方案,直接给代码。 2、如果能用mplayer,就不要像我一样SB的去测试ffmpeg,那玩意慢的让你怀疑人生。也不要像我一样SB的去找ffmpeg扩展,找遍全世界也没找到一个能用的...

    linux 下mplayer的安装

    根据作者在linux下安装mplayer的过程所遇到的问题的解决方法,但不一定对每个人有用,只是个人总结,希望能带来些解决方案。

    MPlayer安装编译总结(1.3.0、1.0rc4).docx

    对Mplayer背景闪烁、抖动有疑惑,对Mplayer1.3、Mplayer1.0rc4安装步骤不清楚的,想知道解决方案,都可以下载

    最全面mplayer音视频linux交叉编译成功移植(支持alsa和oss)

    综合了网上其他mplayer的移植教程,在Linux交叉编译通过的支持alsa和oss架构的mplayer,有详细的介绍和常见问题出错解决方案,该mpalyer可直接移植到嵌入式开发板上运行,实现板子的音视频播放。

    ARM+mplayer+QT+流媒体项目源代码包下载(刘继光著)

    一套完整的 mplayer(linux_x86)+mplayer(linux_ARM)++流媒体 开发方案,完美的QT界面完全可以与windows专业的视频播放器媲美!!

    MPlayer-tru-开源

    MPlayer-tru是向所有与流行浏览器集成的主流媒体播放器提供Truran VOD系统网络协议实施的解决方案。 MPlayer-tru当前支持Mozilla Firefox和MSIE中集成的MPlayer和Xine播放器。

    ARM +流媒体+QT+mplayer 完美开发 资源包项目开发文档(刘继光)

    一套完整的 mplayer(linux_x86)+mplayer(linux_ARM)++流媒体 开发方案,完美的QT界面完全可以与windows专业的视频播放器媲美!!

    DragVideo,一种在播放视频时,可以任意拖拽的方案

    Log.d(TAG, ">> onViewPositionChanged-mPlayer:left-"+mPlayer.getLeft()+",top-"+mPlayer.getTop()); if (mDragDirect == VERTICAL) { //垂直方向 mTop = top; mVerticalOffset = (float) (mTop - mMinTop) / ...

    基于ARM的Linux多媒体播放器Mplayer的设计与实现设计说明.doc

    基于ARM的Linux多媒体播放器Mplayer的设计与实现设计说明.doc

    MusicBox:一个围绕 mplayer 的网络界面,以我喜欢的方式播放音乐

    一个围绕 mplayer 的网络界面,以我喜欢的方式播放音乐。 或者真的,它的原型。 拿住! 回想起来,这个项目是不必要的。 存在其他可能更好的解决方案。 tl;dr:获取 VLC 和 VLC 遥控器应用程序,或 XMBC 和 XMBC ...

    live555-20220715.zip

    一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了标准流媒体传输,是一个为流媒体提供解决方案的跨平台的C++开源项目,它...Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

    ( live555-latest.tar.gz ) 2015版本

    是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输是一个为流媒体提供解决方案的跨平台的C++开源...目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

    live555源代码最新版

    是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输是一个为流媒体提供解决方案的跨平台的C++开源...目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

    嵌入式Linux下基于ARM9的媒体播放的设计

    针对在嵌入式系统中实现播放MP3音乐和MPEG视频等多媒体文件,提出了基于ARM9的嵌入式Linux下媒体播放系统设计方案,Linux 下有许多媒体播放器,系统移植了2种不同的工具:madplay 和mplayer,其中,Madplay是一个...

    live555.zip

    Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。...目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer

    live555流媒体服务器

    Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。...目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer

    live 555 最新源代码

    Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。...目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer

    live555MediaServer for win7

    Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。...目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

    live555下载—流媒体

    Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。...目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer

Global site tag (gtag.js) - Google Analytics