MPlayer动态播放方案

简介:   一、      让MPlayer自动读取我们不断添加的列表,也就是一边添加MPlayer可以一边读,形成动态播放列表。把添加在QT界面中的播放列表的歌曲名字写到一个文件中形成一个播放列表,每添加一首歌曲都换行,每首歌曲占一行,方便后面读取,这样QT界面中的歌曲列表在更新的时候与之对应的播放列表文件也随着更新,这样播放列表能够动态了。

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

目录
相关文章
|
8月前
|
Linux iOS开发 开发者
探索FFmpeg:实现自定义播放速度的全方位指南(一)
探索FFmpeg:实现自定义播放速度的全方位指南
615 0
|
8月前
|
存储 缓存 编解码
【FFmpeg 视频播放】深入理解多媒体播放:同步策略、缓冲技术与性能优化(一)
【FFmpeg 视频播放】深入理解多媒体播放:同步策略、缓冲技术与性能优化
383 0
|
编解码 Android开发 数据安全/隐私保护
Android平台外部编码数据(H264/H265/AAC/PCMA/PCMU)实时预览播放技术实现
好多开发者可能疑惑,外部数据实时预览播放,到底有什么用? 是的,一般场景是用不到的,我们在开发这块前几年已经开发了非常稳定的RTMP、RTSP直播播放模块,不过也遇到这样的场景,部分设备输出编码后(视频:H.264/H.265,音频:AAC/PCMA/PCMU)的数据,比如无人机或部分智能硬件设备,回调出来的H.264/H.265数据,除了想转推到RTMP、轻量级RTSP服务或GB28181外,还需要本地预览甚至对数据做二次处理(视频分析、实时水印字符叠加等,然后二次编码),基于这样的场景诉求,我们开发了Android平台外部编码数据实时预览播放模块。
163 0
|
5月前
|
编解码 Linux 开发工具
Windows平台RTSP|RTMP播放器如何实现细粒度录像控制
大牛直播SDK为Windows平台提供了细致的RTSP/RTMP直播播放及录像功能。支持多平台(Windows/Linux/Android/iOS)的推送端录像,并具备轻量级RTSP服务及GB28181设备接入能力。其特性包括:拉取RTSP/RTMP流录像、推送端同步录像、录像过程中的实时暂停与恢复、支持中文路径设置、单文件大小限制、纯音频/视频或音视频录制模式、音频转码至AAC、H.265编码支持、URL切换时自动文件分割等功能。此外,还提供丰富的事件回调机制以监测录像状态。通过细粒度的接口设计,满足了多样化的应用场景和技术需求。
|
8月前
|
算法 Ubuntu API
探索FFmpeg:实现自定义播放速度的全方位指南(二)
探索FFmpeg:实现自定义播放速度的全方位指南
266 0
|
8月前
|
缓存
停止AVPlayer并在缓存阶段立即播放其它视频闪退问题及解决方案
停止AVPlayer并在缓存阶段立即播放其它视频闪退问题及解决方案
90 0
|
8月前
|
存储 算法 C++
【FFmpeg 视频播放】深入理解多媒体播放:同步策略、缓冲技术与性能优化(二)
【FFmpeg 视频播放】深入理解多媒体播放:同步策略、缓冲技术与性能优化
338 0
|
8月前
|
Linux C++ iOS开发
VLC源码解析:视频播放速度控制背后的技术
VLC源码解析:视频播放速度控制背后的技术
657 0
|
8月前
|
算法 C++
探索FFmpeg:实现自定义播放速度的全方位指南(三)
探索FFmpeg:实现自定义播放速度的全方位指南
224 0
|
8月前
|
XML Java 调度
Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)
Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)
375 0

热门文章

最新文章