c# - 在 MemoryStream 中拆分 mp3 音频的正确方法是什么?

标签 c# audio mp3

我有一个 MemoryStream,它从在线读取音频,然后将其保存到 FileStream。音频播放很好,但有一个问题,即剪辑的前 30-40 毫秒在每次拆分开始时都是死音和静音。这是有问题的,因为我需要将音频剪辑分成多个文件以便以后无缝播放。 mp3 数据中是否有特定的字节或十六进制指示 mp3 帧的开始/结束位置以尝试在正确的位置拆分它?这在代码中看起来像什么?

在这个保存在这里的简单 FileStream 中,您可以在我的实验中看到,即使我尝试在开始时剪掉那个死角,它仍然会产生死角 - 让我认为我正在 split 声音文件位置不正确,然后播放器无法读取该帧 - 但我该如何克服这个问题?

byte[] byteArray = ms.ToArray();
using (FileStream fs = new FileStream(destPath + filename + ".mp3", FileMode.Create))
{
        fs.Write(byteArray, 0, byteArray.Length);
}

剪回以尝试摆脱开始时的死角只是为了测试:

byte[] oldArray = ms.ToArray();
byte[] newArray = new byte[oldArray.Length - 1000];
Array.Copy(oldArray, 1000, newArray, 0, newArray.Length);
using (FileStream fs = new FileStream(destPath + filename + ".mp3", FileMode.Create))
{
      fs.Write(newArray, 0, newArray.Length);
 }

enter image description here

检查正在保存的 mp3 的字节数组,当我将其转换为文本时,即使在那个死空间中也有数据被保存,但由于某种原因它只是不播放。正如我所说,我猜这与文件在声音帧或其他东西中途被错误分割有关?对不起,如果我使用了不正确的术语。

enter image description here

最佳答案

试试看这里: NAudio to split mp3 file . NAudio 是一个完整的库,可能适合你......

关于c# - 在 MemoryStream 中拆分 mp3 音频的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555841/

相关文章:

android - 音频不会播放?

c++ - C++ 控制台应用程序中的 mp3 文件的 MCI_OPEN 失败

linux - 使用 ffmpeg 合并时调整两个输入 mp3 文件的音量

php - MIME 类型检测是检测一种文件的最佳方法吗?

c# - 在 C# 中处理多参数查询的模式或最佳实践

使用 MediaInfo.dll 的 C# 发布应用程序

c# - 尝试将 SHOW DATABASES 放入 C# 中的组合框会给我 System.Data.DataRowView 列表

c# - 在 C# 中调试 Windows 服务调用的 WCF 服务

c# - 使用 C# 在 Windows 10 上控制左右扬声器平衡级别

ios - 为什么我的 UILocalNotification 不播放任何声音?