前言
我一直在使用命令行添加和调整过滤器和效果来摆弄ffmpeg
和ffplay
。
很快就会感到厌烦
- 开始播放一些音频文件
- 停止
- modify命令
- 回到1
例如微调降噪或添加效果和均衡器时。
我曾经尝试过使用zmq
通过在不同的终端中执行命令来调整过滤器,但这也变得有些麻烦。
我想要一些界面,在运行时/收听生效的更改时,我可以添加、删除和调整过滤器。
FFMPEG
我使用filter
来表示从现在开始的效果/过滤器。例如afftdn
、rubberband
。。。
ffmpeg
有点吓人。它很强大,但也很复杂,至少在开始深入研究时是这样。:0
看看库和示例,我看到的是用于音频解码和过滤的API示例,至少一开始看起来很有前途。
输出
我想最好有多个接收器或一些带有多个音轨的容器:
- 原始音频
- 已应用效果的音频
可选:
- 原始音频
- 带所有滤波器的音频
- 带滤波器的音频总成1
- 带滤波器的音频总成2
- 。。。等等
处理
我想程序应该是这样的:
- 从流/文件/url读取数据包
- 打开样品包装
- 复制/复制每个过滤器组的样本/或过滤器的一个样本
- 将筛选器应用于这些"效果样本">
- 写入原始音频,已过滤的音频1,已过滤已过滤的音频N。。。出局
或者对于步骤3-5(因为一次只能听一首曲目(但如果一个人决定在音频流中来回跳跃,这可能不是最好的):
- 应用当前活动的筛选器
- 将原始音频、过滤的音频写入输出
同时,可以通过某些接口读取并检查对过滤器的更改。即输入:
afftdn=rf=-20:nr=20
然后,如果过滤器中不存在afftdn
,则添加它,否则设置新值。
想法是输出";原始音频";。即在采样和调谐阶段使用,然后生成一行带有滤波器选项的行,用户可以使用ffmpeg
-工具处理音频文件。
问题部分
- 是否存在类似的情况
概述:
- 这似乎是一种使用
ffmpeg
库的方法吗?- 是否可以在运行时添加、删除和更改过滤器值,或者是否必须为每个添加/删除的过滤器重新初始化整个流等
- "处理">部分是否正确
- 使用支持多个音轨的容器可能是最好的解决方案吗?例如mp4。
- 有比其他容器更喜欢的容器吗
- 任何缺点(即在流中来回跳跃)
子注释
梦想是有一个Arduino接口与这个程序,我使用物理旋转开关,增量旋转编码器,按钮和口哨。使用物理旋钮调整过滤器的各种选项。但一开始我需要一些工作样本,在那里我使用FIFO或任何东西来测试ffmpeg
本身。
将mpv与IPC一起使用。然后,您可以通过shell实时添加、删除、切换音频或视频过滤器。