FFmpeg 合并视频文件没声音,不同步原因

查了不少帖子也没搞明白,可能懂的人不会遇到吧。

1 没声音是因为我几个视频文件中,有的没音轨,就是用文字生成了个视频,需要先给它加个dummy的音轨才行。

2 视频不同步是因为各个视频格式不一样,参数挺多我也不知道具体哪个参数导致的,我只想到办法就是先把所有视频都格式化成一个格式,然后再合并。我是都格式化成一样的分辨率,一样的fps,然后就行了。

记录一下,以备以后有用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Qt中使用FFmpeg合并视频的代码如下所示: ```cpp QlyAVFormatContext inFile, outFile; inFile.openFile(QString("D:\\AV36_1.avi")); inFile.dumpFormat(); QSet<AVMediaType> type; type << AVMEDIA_TYPE_VIDEO << AVMEDIA_TYPE_AUDIO; QVector<QlyAVStream> inStreams = inFile.findStreams(type); qDebug() << inStreams\[0\].m_stream->time_base; outFile.createFile(QString(), QString("D:\\AV36_1-qt-15.mkv")); outFile.setStreams(inStreams); outFile.writeHeader(); inFile.seekFrame(10.0, -1, AVSEEK_FLAG_BACKWARD); QlyAVPacket pkt; while(inFile.readFrame(pkt, type)) { AVRational in_tb = inFile.rawStream(pkt.streamIndex())->time_base; if(pkt.compare_ts(25.0) >= 0) { pkt.unref(); break; } pkt.adjustTime(10.0); outFile.writeFrame(pkt, in_tb, true); pkt.unref(); } outFile.writeTrailer(); ``` 这段代码使用了Qt和FFmpeg库来合并视频。首先,打开输入文件并获取输入流的信息。然后,创建输出文件并设置输出流。接下来,写入文件头部信息。然后,定位到指定的时间点,并循环读取输入文件的帧。在每一帧中,调整时间戳并将帧写入输出文件。最后,写入文件尾部信息,完成音视频合并的过程。 #### 引用[.reference_title] - *1* *3* [基于FFMPEG的音视频截取(C++Qt 版)](https://blog.csdn.net/liyuanbhu/article/details/121757477)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [QT-FFMPEG录制屏幕和声音的完整程序(包含音视频同步)](https://blog.csdn.net/hulinhulin/article/details/124877654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值