首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FFmpeg:取代实时视频流中的音频

FFmpeg:取代实时视频流中的音频
EN

Stack Overflow用户
提问于 2020-01-16 10:45:47
回答 1查看 1K关注 0票数 0

我使用FFmpeg对通过DeckLink捕获卡捕获的实时视频进行编码.卡上的视频有一个音频流,但我想用另一个音频流来代替。此另一个音频流来自同一源,但通过添加固定延迟的音频处理器运行。音频通过虚拟声卡( IP上的音频,但在Windows上看起来像声卡)反馈到运行FFmpeg的pc中。

我知道如何补偿这个固定的延迟,但问题是音频和视频在流运行时缓慢地偏离同步。我假设这是由于虚拟声卡和DeckLink卡之间时钟速度的微小差异所致。

我尝试了vsync选项和FFmpeg中的高级过滤器,试图使音频和视频保持同步。但是我还没有成功。是否有办法使FFmpeg重采样音频和/或dup帧,以使两个流保持同步?

目前我正在运行这个命令,它不能保持同步。

代码语言:javascript
复制
ffmpeg.exe -f dshow -i audio="WNIP Input  1 (Wheatstone Network Audio (WDM))" -itsoffset 2.3 -f decklink -thread_queue_size 128 -i "DeckLink SDI (3)" -filter_complex "[1:v:0]bwdif,format=yuv420p,setdar=16/9,scale=-1:576:flags=bicubic[vidout];[0:a:0]aresample=min_comp=0.02:comp_duration=15:max_soft_comp=0.005[audioout]" -c:v libx264 -preset slow -crf 25 -maxrate 1200k -bufsize 2400k -map "[vidout]:0" -map "[audioout]:0" -vsync 1 -r 50 -g 90 -keyint_min 90 -sc_threshold 0 -c:a libfdk_aac -b:a 192k -ac 2 -f flv "rtmp://somewhere"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-28 08:58:04

我发现解决方案是为音频和视频流(这里的文件)使用-use_wallclock_as_timestamps 1标志。然后,在我的例子中,完整的命令变成:

代码语言:javascript
复制
ffmpeg.exe -f dshow -use_wallclock_as_timestamps 1 -i audio="WNIP Input  1 (Wheatstone Network Audio (WDM))" -itsoffset 2.1 -f decklink -thread_queue_size 128  -use_wallclock_as_timestamps 1 -i "DeckLink SDI (3)" -filter_complex "[1:v:0]bwdif,format=yuv420p,setdar=16/9,scale=-1:576:flags=bicubic[vidout];[0:a:0]aresample=min_comp=0.02:comp_duration=15:max_soft_comp=0.005[audioout]" -c:v libx264 -preset slow -crf 25 -maxrate 1200k -bufsize 2400k -map "[vidout]:0" -map "[audioout]:0" -vsync 1 -r 50 -g 90 -keyint_min 90 -sc_threshold 0 -c:a libfdk_aac -b:a 192k -ac 2 -f flv "rtmp://somewhere"

几天后,这两个流仍保持同步。

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

https://stackoverflow.com/questions/59767925

复制
相关文章

相似问题

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