2015-09-14 4 views
2

У меня есть MemoryStream, который читается в аудио из Интернета, а затем сохраняет его на FileStream. Воспроизведение звука воспроизводится отлично с одной проблемой, что первые 30-40 миллисекунд клипа мертвы и молчат в начале каждого разделения. Это проблематично, потому что мне нужно разделить аудиоклипы на несколько файлов, чтобы их можно было беспрепятственно воспроизводить. Есть ли определенный байт или гекс в mp3-данных, который указывает, где кадр mp3 начинается/заканчивается, чтобы попытаться разбить его в правильном положении? Что это может быть в коде?Каким образом можно разделить mp3-аудио в MemoryStream?

В этом простом FileStream Сохраните здесь, вы можете видеть, что в моем эксперименте, даже если я попытаюсь вырезать это мертвое место в начале, он по-прежнему создает мертвое пространство - заставляет меня думать, что я разбиваю звуковой файл на неправильный а затем игрок не может прочитать этот фрейм - но как я могу это преодолеть?

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

ответ

Смежные вопросы