ffmpeg - 使用 ffmpeg 进行流式传输时,仅当源文件/流没有音频时才插入音频
问题描述
无论我的源文件或源流是有音轨还是根本没有音轨,我都想使用相同的命令。然后,我希望 ffmpeg 对音频进行转码 - 仅在不存在源音轨时使用音频源(如果存在)或静音(我看到各种不同的 ffmpeg 音频过滤器可以生成)。
有人可以为此给出正确命令的示例或一些指示吗?map
有什么方法可以用或类似的开关做到这一点?
请注意,我真正的意思是根本没有音轨,而不是说在源音轨中检测到静音。能够在一个命令中执行此操作而不是知道可以执行每个变体的两个谨慎命令是关键。
解决方案
ffmpeg -i input.mp4 -f lavfi -i anullsrc=cl=mono -shortest output.mp4
这是可以使用默认流选择行为的示例。它将自动选择具有最多通道的音频流,如果它们相同,它将选择具有最低索引号的音频流。
如果
input.mp4
没有音频,那么它将使用由anullsrc生成的无声音频。如果
input.mp4
确实有音频,那么它将使用来自input.mp4
.
缺点是默认的流选择行为只会为每种流类型选择一个流。因此,如果input.mp4
有多个视频流,则只会选择一个视频流。
在这种情况下,我建议使用ffprobe
确定文件是否有音频,然后使用-map
选择您想要的特定流。
推荐阅读
- python-3.x - 进行登录/注销,根据状态更改名称
- flutter - TabBar 控制器从另一个类更改页面
- python - Docker 节点:8.16.0-alpine 错误:未找到:python2
- postgresql - Doobie:创建带有值的常量表
- php - 按 Enter 时,文本框向下一行而不是调用函数
- php - 当会话在数据库中过期时,Laravel 如何存储和刷新/删除的方法?
- android - Xamarin PushAsync 动画 (Android)
- mysql - 如何获取当前年份的每月金额总和并将其显示在 consoleTv 条形图中
- react-native - 条件样式似乎不起作用?
- php - Wordpress 中的扩展插件功能