| | |
| | | p_this->m_running = true; |
| | | //启动ffmpeg解码模块 |
| | | p_this->m_fFmpegDecoderJPG.startThd(p_this->m_chanPubID, p_this->m_fps, p_this->m_gpuIdx); |
| | | usleep(1000000); |
| | | //阻塞线程,等待外部触发关闭点播 |
| | | while (p_this->m_running) { |
| | | // if(p_this->m_fFmpegDecoderJPG.getRunning()) { |
| | | usleep(300000); |
| | | // }else{ |
| | | // p_this->m_running = false; |
| | | // break; |
| | | // } |
| | | if(p_this->m_fFmpegDecoderJPG.getRunning()) { |
| | | usleep(300000); |
| | | } else { |
| | | |
| | | // 根据reopenTime判断是否需要重启 |
| | | if (reopenTime < 0) { |
| | | p_this->m_running = false; |
| | | stop(); |
| | | INFO("grabFrame faild, element stopping"); |
| | | } else { |
| | | //todo 业务死锁 |
| | | usleep((6 - reopenTime--) * 1000000); |
| | | INFO("grabFrame faild, try reopen video: "); |
| | | |
| | | //关闭ffmpeg解码模块 |
| | | p_this->m_fFmpegDecoderJPG.stopThd(); |
| | | //启动ffmpeg解码模块 |
| | | p_this->m_fFmpegDecoderJPG.startThd(p_this->m_chanPubID, p_this->m_fps, p_this->m_gpuIdx); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | DBG("videoCaptureElementThd stop ..."); |
| | | //停止点播 |
| | |
| | | INFO("grabFrame faild, element stopping"); |
| | | return; |
| | | } else { |
| | | //todo 业务死锁 |
| | | usleep(reopenTime * 1000); |
| | | INFO("grabFrame faild, try reopen video: "); |
| | | startRtpStream(m_streamTransType); |