首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FFMPEG concat在剪辑之间留下音频间隙

FFMPEG concat在剪辑之间留下音频间隙
EN

Stack Overflow用户
提问于 2020-04-10 02:46:18
回答 1查看 222关注 0票数 0

我正在编写一个python脚本,它使用子进程来调用FFMPEG,而不是使用pyffmpeg。

我的脚本使用AAC音频编解码器生成数量可变的MP4文件,并使用FFMPEG将它们连接在一起。下面是我是如何构造每个剪辑的:

代码语言:javascript
复制
ffmpeg -loop 1 -i image.jpg -i recording.mp3 -tune stillimage -c:a aac -b:a 256k -shortest clip.mp4

我用来连接它们的命令是:

代码语言:javascript
复制
ffmpeg -f concat -i clip_names.txt -c copy video_raw.mp4

然后,我将生成的视频,在其上混合一个循环音轨,并调整音量。(对于糟糕的格式,很抱歉)

代码语言:javascript
复制
ffmpeg -i video_raw -filter_complex
                 "amovie=Tracks/Breaktime.mp3:loop=0,
                  volume=0.1,
                  asetpts=N/SR/TB[aud];
                  [0:a][aud]amix[a]"
-map 0:v -map [a] -b:a 256k -shortest final_video.mp4

这些命令似乎按照我的预期工作。当我在本地机器上播放生成的MP4时,一切都没有问题。

然而,我将视频上传到了YouTube,并遇到了问题。当从YouTube播放视频时,在下一个剪辑开始之前,在连接两个剪辑的每个时间戳上都会有大约一秒钟的静默。我已经在Chrome,IE和Firefox上尝试过了,都有同样的问题。

根据我到目前为止所看到的,我认为这可能是每个单独剪辑的初始化样本如何处理的问题。我没有义务继续使用MP4或AAC,所以如果使用不同的音频/视频编解码器会更好,请随时建议!

是否可以在FFMPEG中进行某种类型的操作来去除初始化样本,或者以某种方式对它们进行不同的处理?最后,我希望每个剪辑都可以背靠背播放,而不会出现concat操作似乎插入的延迟。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 03:18:23

这不是因为引爆样本。-shortest不能确保所有流的长度相同,因为当多路复用器接收到停止输出的信号时,在多路复用队列中可能存在缓冲的分组。对于25fps的视频流,1秒的溢出似乎是正确的。有一些方法可以mitigate持续时间溢出,但我建议你获取音频的持续时间,并根据这一点设置-t X并跳过-shortest。

另外,保存到具有音频编解码器-c:a pcm_s16le的MOV。您将避免初始化样本偏移量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61128138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档