【问题标题】:BASS/LAME Enc: How to properly continue MP3 recording / encoding?BASS/LAME Enc:如何正确继续 MP3 录音/编码?
【发布时间】:2016-06-15 15:57:45
【问题描述】:

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

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

目前我使用BASS_StreamCreateFile打开旧文件,启动录制和编码器并使用BASS_ChannelGetDataBASS_Encode_Write读取整个文件以“传输”以前的数据。

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

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

(Delphi XE7、Windows、VCL)

【问题讨论】:

    标签: delphi mp3 audio-recording lame bass


    【解决方案1】:

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

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

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

    “正确”和“错误”在结果中变得明显。最好的方法总是以最少的努力达到最好的效果。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2011-01-26
      相关资源
      最近更新 更多