gpt4 book ai didi

delphi - 低音/LAME编码: How to properly continue MP3 recording/encoding?

转载 作者:行者123 更新时间:2023-12-02 00:40:17 27 4
gpt4 key购买 nike

我有一个应用程序,可以从麦克风录制音频,并使用 BASSenc 使用 LAME 将录音编码为 MP3。如果您退出应用程序并稍后重新启动,则可以加载并继续(录制) session 。

到目前为止一切正常。但是,我想知道继续录制/编码流的正确方法是什么?

目前,我使用 BASS_StreamCreateFile 打开旧文件,启动录制和编码器,并使用 BASS_ChannelGetDataBASS_Encode_Write 读取整个文件将之前的数据“转移”过来。

我担心这可能不是“正确”的方式?录音越大,此步骤将花费越来越长的时间。而且我还认为它是有损的,因为我加载了有损 MP3 并重新编码它,丢失了更多信息。不是吗?还是我错了?

有没有办法告诉 BASSenc/LAME 仅使用现有文件并直接向其附加内容?或者我已经使用了正确的方法?

(德尔福 XE7、Windows、VCL)

最佳答案

如果不先解压缩,您无法直接将新的未压缩数据附加到压缩流中。所以你的方法似乎是合理的。

大小确实可能成为一个问题,具体取决于录音的最大预期长度。我正在处理高达 1 GB 的未压缩和压缩流,到目前为止,没有遇到重大延迟问题。至少在现代台式机上不是这样。

但是,优化该过程的一种方法是在记录新数据之前加载旧 session 数据,而是在将新 session 保存到磁盘之前读取它。这样您就可以立即开始录制,而无需每次都为进程分配越来越多的 RAM。

“对”和“错”随着结果变得显而易见。最好的方法始终是用最少的努力实现效果最好的方法。

据我所知,如果您不使用有损编解码器,多次重新编码不会对质量产生任何影响。

如果您需要支持源代码,请告诉我。

关于delphi - 低音/LAME编码: How to properly continue MP3 recording/encoding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840379/

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