QT开发用ffmpeg将图片制作成视频

这篇博客介绍了如何使用QT结合ffmpeg将一系列图片制作成视频。博主首先尝试通过命令行调用ffmpeg,然后转向在QT代码中直接调用ffmpeg函数。在过程中遇到了关于AVStream.codec的弃用警告、图片数据类型转换以及容器不支持编码器等问题,并找到了相应的解决方案。
摘要由CSDN通过智能技术生成

继上一博文:QT打开图片文件夹快速播放图片现在要将图片做成视频

1,第一种方式:cmd 的调用:因为什么都不懂,刚开始是想用命令行来做,在cmd下用命令能合成比较模糊的视频了

      因输入文件的方式有两种调用方式:

   第一种:ffmpeg -f image2 -pattern_type glob -framerate 24 -i 'IMG_*.JPG'  ./IMG_.avi

   第二种:ffmpeg -f image2 -r 1/5 -i img%03d.png -vcodec libx264 -pix_fmt yuv420p out.mp4


   第二种方式要求输入图片文件名要有规则,如:%03d 代表 001 开始     如:%04d 代表 0001开始  


   我的文件的命名是 IMG_0152.JPG IMG_0220.JPG IMG_0288.JPG ......  因此用第一种方式,第一种方式的输出文件名必是IMG_与文件名一样,而且不知为什么,当改成mp4时就生成不了视频了。

 

   参考:http://ffmpeg.org/ffmpeg.html  https://stackoverflow.com/questions/21586256/turning-images-into-videos-with-ffmpeg


   接下来是在代码中调用了,最后不知什么原因运行不起来ffmpeg,不知哪里不对,真是小白,代码还是上来吧:

QString inputFiles = srcDir + "/IMG_0660.JPG";
    QString outputFile = "/Users/ljx/IMG_.avi";
    QString cmd = "ffmpeg";///usr/loacl/ffmpeg.app";
    //QString cmd = "ffmpeg -f image2 -pattern_type glob -framerate 18 -i "+inputFiles + " " + outputFile;
    qDebug() << "on_createAviBtn_clicked inputFiles:"<< inputFiles << " out:" <<outputFile;
 
    QStringList arguments;
//    //arguments.append("ffmpeg");
//    arguments.append("-f");
//    arguments.append("image2");
//    arguments.append("-pattern_type");
//    arguments.append("glob");
//    arguments.append("-framerate");
//    arguments.append("18");
//    arguments.append("-i");
//    arguments.append(inputFiles);
//    arguments.append(" ");
//    arguments.append(outputFile);
 
    arguments.append("-version");
 
    QProcess *p = new QProcess(this);
    int in = p->execute(cmd,arguments);
    //p.start(cmd,arguments);
    bool b = p->waitForStarted();
    bool b2 = p->waitForFinished();//等待完成
    QString strTemp=QString::fromLocal8Bit(p->readAllStandardOutput());
    qDebug() << "QProcess finished in: "<< in <<" b:"<< b + " b2:"<<b2 << " 
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值