qt5结合ffplay实现一个播放器,点击播放后其他按钮无响应的情况
原因:在播放的时候,主线程被用来做编解码工作,导致页面按钮监听失效。
解决方案:采用多线程编码,具体代码:
play.h
class PlayerThread : public QThread
{
Q_OBJECT
public:
PlayerThread()
{
}
void run();
}
mainwindows.cpp
#include "play.h"
void PlayerThread::run(){
int ret;
ret = ::ffplay(cur_file.toStdString().c_str());
}
void MainWindow::on_playBtn_clicked()
{
PlayerThread *play;
play = new PlayerThread();
play->start();
}
采用多线程编码后可以顺利实现暂停功能。