ZBLOG

void MainWindow::on_video_start_clicked() { qDebug()

您提到录制的视频文件不能播放,这可能是由几个原因引起的。以下是一些常见问题和解决方案:

  1. 编码格式问题

    • 您使用了 MJPG 编码,但是在某些情况下,播放器可能不支持该格式。可以尝试更换编码格式,例如使用 XVID 编码(通过将 fourcc('M', 'J', 'P', 'G') 改为 fourcc('X', 'V', 'I', 'D'))或其他常见编解码器。
  2. 文件路径与命名

    • 在生成文件名时,您使用了空格(例如“HH mm ss”),这可能导致某些播放器无法正确识别文件路径。建议将空格替换为下划线或其他字符。例如,可以将时间格式化为 "yyyy-MM-dd_HH-mm-ss"
  3. 确保VideoWriter打开成功

    • 在您的代码中,如果视频文件未能打开,应该打印出详细错误信息以便于排查原因。确认检查输出的调试信息,以查看是否存在任何打开失败的问题。
  4. 帧率与视频流配置

    • 检查摄像头提供的帧率与所设置的帧率是否一致。如果设备不支持25fps,可能会导致视频无法正常录制。
  5. 确认输入源有效性

    • 在调用 capture >> frame; 之前,请确保摄像头已成功打开并且正在捕获数据。在开始录制之前,也许可以插入一些延时以确保稳定性。
  6. 关闭 VideoWriter

    • 请确保在结束录制时正确关闭 videoWriter 对象。这通常是在一个单独的方法中进行,例如添加一个停止录制的方法,在其中调用 videoWriter.release();.
  7. 检查OpenCV版本和播放器兼容性

    • 某些OpenCV版本和播放器可能存在兼容性问题,尝试更新OpenCV库或用不同的视频播放器进行播放。

下面是一些建议的修改:

// 修改时间字符串格式
QString times = current.toString("yyyy-MM-dd_HH-mm-ss");

// 尝试使用 XVID 编码
int codec = cv::VideoWriter::fourcc('X', 'V', 'I', 'D');

// 打开 videoWriter
if (!videoWriter.open(recordViedo_fileName, codec, fps, cv::Size(width, height), true)) {
    qDebug() << "视频文件未能成功打开!";
    return;
}

// 确保在结束录制的时候释放 videoWriter
void MainWindow::on_video_stop_clicked()
{
    if (m_video_record) {
        m_video_record = false;
        videoWriter.release();
        qDebug() << "录制已结束.";
    }
}

请根据以上建议逐步排查问题,希望能帮助您解决视频无法播放的问题!如果仍有疑问,请提供更多细节以供分析。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=6534

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?