gpt4 book ai didi

audio - 如何使用 Libav API 合并多个音频文件?

转载 作者:行者123 更新时间:2023-12-04 23:10:04 35 4
gpt4 key购买 nike

目前,我正在使用 Libav API 实现我的软件的一项新功能。这是要求:合并音频文件列表(M​​P3 和 WAV)并创建一个唯一的
音频文件 (MP3) 作为输出。注意:挑战不是连接文件,而是合并它们。播放输出声音时,所有输入音频内容必须同时发出声音,就像在视频编辑器中合并多个文件时一样。
我正在研究 Libav 音频流,我只是猜测我的要求与“ channel ”概念有关,我的意思是,可以在流中包含多个音频,每个音频使用一个 channel 或类似的东西。我希望找到有关此主题的更多信息,但 FFmpeg/Libav 文档实际上很少。
现在,我能够成功地将多个音频流合并到一个视频流中,并且可以创建一个可播放的 MP4 文件。我的问题是像 MPlayer/VLC 这样的播放器只用视频再现第一个音频流,其他两个音频流被忽略。
我正在查看 FFmpeg 源代码中包含的一组示例,但没有与我的要求特别相关的内容,因此我将不胜感激
关于如何使用 libav 将多个音频文件合并为一个的源代码引用或算法说明。谢谢。
更新:
合并多个音频文件的 ffmpeg 命令需要 de 过滤器标志“ amix ”,如下例所示:

ffmpeg -i 1.mp3 -i 2.mp3 -i 3.mp3 -filter_complex amix=inputs=3:duration=first result.mp3
FFmpeg Documentation 中描述了与该选项相关的所有语法。
检查 FFmpeg 源代码,似乎是 混合功能实现包含在文件 af_amix.c
我不是 100% 确定,但函数中似乎描述了一般算法:
static int activate(AVFilterContext *ctx) 

最佳答案

你知道如何使用命令行 ffmpeg 合并多个音频文件吗?如果您首先了解如何使用 ffmpeg 命令执行此操作,然后逆向工程它是如何实现的,这将对您有所帮助。这完全是关于如何构建过滤器图并通过它传递数据。
例如,查看 examples/filter_audio.c examples/filtering_audio.c

关于audio - 如何使用 Libav API 合并多个音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71565855/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com