Я хочу получить информацию о длительности для удаленного mp3-файла в начале его загрузки. Я могу получить фреймы сначала, но не знаю, что должно быть прочитано, Xing или VBRi.Как рассчитать битRate для VBR mp3 без скачивания всего файла?
Как я могу получить эту информацию, читая теги?
MemoryStream ms = new MemoryStream();
waveOut.Play();
long offset = from;
ms.Position = 0;
byte[] decBuffer = new byte[50 * 1024];
while (true)
{
if (paused)
{
waveOut.Stop();
bwProvider.ClearBuffer();
break;
}
lock (LockObj)
{
byte[] readed = Helper.ReadStreamPartially(localStream, offset, 100 * 1024, orders);
if (readed == null)
continue;
ms = new MemoryStream(readed);
}
Mp3Frame frame;
try
{
frame = Mp3Frame.LoadFromStream(ms);
}
catch
{
continue;
}
if (frame == null)
continue;
int decompressed = decompressor.DecompressFrame(frame, decBuffer, 0);
bwProvider.AddSamples(decBuffer, 0, decompressed);
if (Helper.IsBufferNearlyFull(bwProvider))
Thread.Sleep(500);
offset += ms.Position;
}
http://stackoverflow.com/q/9046492/1070452 – Plutonix
Может быть, это поможет вам - https://www.mp3-tech.org/programmer/frame_header.html и http://mpgedit.org/ mpgedit/mpeg_format/mpeghdr.htm –
Посмотрите здесь http://stackoverflow.com/questions/6196011/how-to-read-xingheaders-and-vbriheaders-from-mp3-files-using-taglib-sharp –