目前上位机软件做了一个程序,其中使用QOpenglwidget控件用来接收视频帧,形成视频;
使用ffmpeg库进行解码,现在的问题是:
上位机软件不关闭,一直处于运行状态,当设备关闭时,就不显示视频;当设备上电后,视频在连接上,显示视频图像。
就是断网重连的意思。
请各位大lao赐教。视频部分单独开了一个线程,ffmpeg解码也是一个线程,其他代码可以si我,抱拳了!
void videothread::open(const QString &url) //打开rtsp视频流
{
if(!this->isRunning())
{
m_url = url;
emit this->start();
}
}
void videothread::run()
{
bool ret = Ffmpeg->open("rtsp://192.168.0.10/test0.264");
if(ret)
{
m_play = true;
emit playState(play);
}else
{
qWarning() << "打开失败!";
}
while (m_play)
{
// 暂停
while (m_pause)
{
sleepMsec(200);
}
QImage image = Ffmpeg->read(); // 读取视频图像
if(!image.isNull())
{
emit updateImage(image.copy());
}else{
if(Ffmpeg->isEnd())// 当前读取到无效图像时判断是否读取完成
{
break;
}else {
sleepMsec(1);// 这里不能使用QThread::msleep()延时,否则会很不稳定
}
}
}
qDebug() << "播放结束!";
Ffmpeg->close();
emit playState(end);
emit isturnoff(true);
}