FFMPEG音视频开发:获取flv视频格式的时长

举报
DS小龙哥 发表于 2021/12/09 23:13:46 2021/12/09
5.9k+ 0 0
【摘要】 flv格式的视频不能像其他视频一样直接通过ffprobe输出的json获取,可以通过它的命令行输出截取时间段转换得到时间。 直接上代码: QProcess process; process.setProcessChannelMode(QProcess::MergedChannels); process.start...

flv格式的视频不能像其他视频一样直接通过ffprobe输出的json获取,可以通过它的命令行输出截取时间段转换得到时间。

直接上代码:


          QProcess process;
          process.setProcessChannelMode(QProcess::MergedChannels);
          process.start("C:/FFMPEG/ffmpeg_x86_4.2.2/bin/ffprobe.exe -i D:/test1080.flv");
          process.waitForFinished();
          process.waitForReadyRead();
          QString str  = process.readAllStandardOutput();
          process.close();
         //分析字符串
         const char *src=str.toStdString().c_str();
         char *p1=strstr(src,"Duration");
         if(p1)
          {
             int addr=p1-src;
              str = str.mid(addr+10);
              str =str.section(',', 0,0);
             qDebug("视频的时长(标准时间):%s",str.toStdString().c_str());
             //解析数据
              QTime t1=QTime::fromString(str);
             int time_ms=t1.hour()*60*60*1000+t1.minute()*60*1000+t1.second()*1000+t1.msec();
             qDebug()<<"最视频的时长(MS):"<<time_ms;
             //反向解析回来对比
             qDebug()<<"还原视频的时长(标准时间):"<<QTime(0,0,0,0).addMSecs(int(time_ms)).toString(QString::fromLatin1("HH:mm:ss.zzz"));
          }
  
 

输出结果:


      视频的时长(标准时间):00:06:37.15
      最视频的时长(MS): 397150
      还原视频的时长(标准时间): "00:06:37.150"
  
 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/119181945

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。