Qt里的QAudioOutput怎样与QSlider同步

shan794462554 2016-05-25 06:17:56
初学Qt,正在做一个简单播放器,有什么方式可以让这QAudioOutput与QSlider同步?
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Little柯南 2016-05-25
  • 打赏
  • 举报
回复
如果你做的是影像类文件,如avi,那么需要使用ffmpeg,只是这里大部分人做法并非是将QAudioOutput与slider关联,见下: connect(ui->horizontalSlider,SIGNAL(sliderMoved(int)),this,SLOT(slotValueChanged(int))); void MainWindow::slotValueChanged(int value) { qint64 v = (value/100.0)*player->totalTime(); player->seek(v); } VideoPlayer *player;
Little柯南 2016-05-25
  • 打赏
  • 举报
回复
ffmpeg解码出来的是裸流,你可以将裸流写在pcm文件里面,然后读取播放。 但是复杂了,一个文件,你一边还在解码并生成pcm,一边还在读取并播放,原来的音频还没有完完全全转化成pcm,要是你非要这么关联slider,那么这样来:一个是原来音频的size,一个是解码的位置,获取已经解码的size数(累加),将这个“解码size/原来音频size” 的比例关联到你的slider里面。 不过要提醒的是:你的音频文件,假如是mp3文件,前面大概44字节数(记不太清,自己查下)是文件头,并非音频流。 自我感觉,你这样做多走了路,不是太好(个人建议)
shan794462554 2016-05-25
  • 打赏
  • 举报
回复
因为我是用ffmpeg解码音频,然后要用QAudioOutput播放,已经写了一大半了,不想再重写了,希望能提供下思路。
Little柯南 2016-05-25
  • 打赏
  • 举报
回复
如果是播放类似mp3文件这种,都用到QMediaPlayer,不会使用QAudioOutput的,关于播放进度与slider的协调使用信号与槽关联,见下: connect(ui->horizontalSlider, SIGNAL(sliderMoved(int)), this, SLOT(setPosition(int))); void MainWindow::setPosition(int position) { player->setPosition(position); }

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧