Здравствуйте, race1, Вы писали:
R>нужно прочитать информацию об mpeg видео файле вроде аудио\видео кодека, битрейта и т.д. помогите такое сделать, а то где я искал есть описание кодирования видео, но формата заголовка не нашёл...
Что касается информации о видео-потоке (кодек, битрейт и т.д.), то её можно вытащить из заголовка видео-последоватедьности, начинающегося с последовательности байт [00 00 01 B3]. Вот кусочек кода, ответственный за это дело:
case 0xB3:
strcat(szLine, " [Sequence]");
{
if (nRemain < 11)
goto need_more;
int nHeight = (pStart[4] << 16) | (pStart[5] << 8) | pStart[6];
int nWidth = ((nHeight >> 12) + 15) & ~0x0F;
nHeight = ((nHeight & 0xFFF) + 15) & ~0x0F;
int nAspectRatioInfo = pStart[7] >> 4;
int nFrameRateCode = pStart[7] & 0x0F;
int nBitrate = (pStart[8] << 10) | (pStart[9] << 2) | (pStart[10] >> 6);
char* pszAspectRatio = "?";
switch (nAspectRatioInfo)
{
case 1: pszAspectRatio = "1:1"; break;
case 2: pszAspectRatio = "4:3"; break;
case 3: pszAspectRatio = "16:9"; break;
case 4: pszAspectRatio = "2.21:1"; break;
}
char* pszFrameRate = "?";
switch (nFrameRateCode)
{
case 1: pszFrameRate = "23.976"; break;
case 2: pszFrameRate = "24"; break;
case 3: pszFrameRate = "25"; break;
case 4: pszFrameRate = "29.97"; break;
case 5: pszFrameRate = "30"; break;
case 6: pszFrameRate = "50"; break;
case 7: pszFrameRate = "59.94"; break;
case 8: pszFrameRate = "60"; break;
}
sprintf(szTemp, " Width=%d Height=%d AspectRatio=%s FrameRate=%s Bitrate=%g",
nWidth, nHeight, pszAspectRatio, pszFrameRate, double(nBitrate) * 4.0 / 10.0);
strcat(szLine, szTemp);
}
break;
Если есть желание, могу прислать весь исходник этой проги.