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

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

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

直接上代码:


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

输出结果:


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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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