Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Вниз

Как из видеофайла получить кодек, которым он сжат?   Найти похожие ветки 

 
cosinus   (2009-12-09 04:21) [0]

Необходимо узнать какой видео и аудио кодек используется. То есть в идеале на входе имеем видеофайл, а на выходе получаем
Xvid
Dolby AC3 48000Hz 6ch 320kbps


Куда смотреть?


 
cosinus   (2009-12-09 05:01) [1]

С видеокодеком вроде разобрался (читай - нагуглил). Там просто вроде достаточно 4 байта просто прочитать. С аудио пока затык (((


 
KilkennyCat ©   (2009-12-09 05:03) [2]

в заголовки файла.


 
KilkennyCat ©   (2009-12-09 05:06) [3]


> С видеокодеком вроде разобрался (читай - нагуглил). Там
> просто вроде достаточно 4 байта

это ты очень сильно заблуждаешься. очень.
тебе к этим четырем винда может насильно присобачить (при каких-либо более сложных манипуляций, чем скопировать-удалить файл) RIFF-заголовок и кранты.


 
cosinus   (2009-12-09 05:19) [4]


> KilkennyCat ©   (09.12.09 05:06) [3]

Плохо... А я уже обрадовался. Ну да ладно ))
Правильно ли я понял [2], что просто нужно найти описание формата avi (например), чтобы выдернуть оттуда необходимую мне информацию? RIFF вроде как (судя по "быстрому гуглению") всего-лишь добавляет что-то, то есть просто сдвиг имеем...
Алгоритм следующий - читаем файл, смотрим на присутствие\отсутствие RIFF, читаем нужные куски из заголовка. Или все "глубжее значительно"?
Где можно об этом почитать, желательно, чтобы после прочтения я понял все относительно заголовков видео и подводных камнях в этой области (тот же RIFF), но не знал бы ВСЕ о видео? ))) В том смысле, что не хотелось бы читать что-то ГЛОБАЛЬНОЕ страниц так на 100500 ))


 
cosinus   (2009-12-09 18:50) [5]

Все, что я нашел в интернете - это просто чтение байт из заголовка.
Как правило все примеры частично работают, после определенного момента работать перестают, то есть где то идет чтение "не оттуда, откуда надо". В этом может быть виноват этот многострадальный RIFF?

Вот пример того, что в разных интерпретациях встречается на просторах интернета....
//Проверяем, что это AVI файл
FileSeek(AviFileHandle, 7, 0);
FileRead(AviFileHandle, TEMP_TEST, 5);
if copy(TEMP_TEST, 0, 4) <> "AVI " then
begin
ShowMessage("Невозможно обработать выбранный AVI файл. Операция остановлена!");
exit;
end;

// Определяем размер файла
FileSeek(AviFileHandle,4,0);
FileRead(AviFileHandle, TEMP_SIZE, 4);

//Производим инициализирующие действия, чтобы в дальнешем получить
//информацию об аудио и видео
FileSeek(AviFileHandle,28,0);
FileRead(AviFileHandle, AVI_HEADER_SIZE, 4);
AVI_HEADER_START := 32;

//Значение необходимо для получения fps
FileSeek(AviFileHandle,AVI_HEADER_START,0);
FileRead(AviFileHandle, TEMP_MICROSEC, 4);

//Длина фильма в кадрах
FileSeek(AviFileHandle,AVI_HEADER_START + 16,0);
FileRead(AviFileHandle, TEMP_LENGTHinFRAMES, 4);

//Ширина
FileSeek(AviFileHandle,AVI_HEADER_START + 32,0);
FileRead(AviFileHandle, VWidth, 4);

//Высота
FileSeek(AviFileHandle,AVI_HEADER_START + 36,0);
FileRead(AviFileHandle, VHeight, 4);

FileSeek(AviFileHandle,AVI_HEADER_START + AVI_HEADER_SIZE + 4,0);
FileRead(AviFileHandle, V_HEADER_SIZE, 4);
V_HEADER_START := AVI_HEADER_START + AVI_HEADER_SIZE + 20;

//Видеокодек
FileSeek(AviFileHandle,V_HEADER_SIZE + 3,0);
FileRead(AviFileHandle, TEMP_VCODEC, 5);
A_HEADER_START := V_HEADER_START + V_HEADER_SIZE + 8;
FileSeek(AviFileHandle,AVI_HEADER_START - 4,0);
FileRead(AviFileHandle, A_STRH_SIZE, 5);

//Аудиокодек
FileSeek(AviFileHandle,A_HEADER_START + A_STRH_SIZE + 8,0);
FileRead(AviFileHandle, TEMP_ACODEC, 2);

//Дополнительная информация об аудио
//Mono(1), Stereo(2)
FileSeek(AviFileHandle,AVI_HEADER_START + A_STRH_SIZE + 10,0);
FileRead(AviFileHandle, TEMP_ACHANNELS, 2);
//samplerate
FileSeek(AviFileHandle,AVI_HEADER_START + A_STRH_SIZE + 12,0);
FileRead(AviFileHandle, TEMP_ASAMPLERATE, 4);
//bitrate
FileSeek(AviFileHandle,AVI_HEADER_START + A_STRH_SIZE + 16,0);
FileRead(AviFileHandle, TEMP_ABITRATE, 4);

//Информация прочитана, закрываем файл
FileClose(AviFileHandle);


Куда же все таки копать чтобы выдергивание нужной мне информации работало хотя бы в 95% случаев?


 
DVM ©   (2009-12-09 19:05) [6]


>  после определенного момента работать перестают

это как? Т.е. сначала работает потом перестает для тех же файлов?


 
cosinus   (2009-12-09 19:15) [7]


> DVM ©   (09.12.09 19:05) [6]
>
>

Да сам уже понял, что криво написал )))
В том смысле, что всякие высоту, ширину, битрейт читает нормально, а начиная с чтения видеокодека - читает не там и соответственно на выходе чушь. У меня тут для теста порядка 10 файлов и у всех одно и тоже. Подправить позицию, с которой он читает аудио и видео данные не проблема, насколько я понял, а вот насколько это верно будет... Получится так, что попадись мне другой видео-файл, для которых и заточена эта функция (что странно, кстати, что не на всех работает, в моем случае, так вообще ни на одном) моя подправленная читать не будет.
Странно мне в данном случае то, что люди писавшие эту и похожие почти как две капли воды функции не учитывали вариант, когда читать будет неверно. Или это просто устаревшая функция, а у меня все avi-шки вплоть новые?


 
Медвежонок Пятачок ©   (2009-12-09 19:26) [8]

все это слишком частный случай.
достаточно взять мпег2 файл чтобы обломаться с сигнатурой рифа в начале файла. ее там просто нет


 
DVM ©   (2009-12-09 20:28) [9]


> cosinus

http://www.swissdelphicenter.ch/torry/showcode.php?id=2050

для контейнера AVI

Для других контейнеров (а их немало) методы похожие но требуется описание контейнеров.


 
cosinus   (2009-12-09 20:42) [10]


> Медвежонок Пятачок ©   (09.12.09 19:26) [8]

Это более, чем прозрачно, для начала понять бы с avi.


> DVM ©   (09.12.09 20:28) [9]

Спасибо, действительно полезный модуль. А вы не встречали где-нибудь более менее обобщенной информации по контейнерам? Или придется, с мира по нитке?


 
cosinus   (2009-12-10 15:55) [11]

Нашел идеальный вариант.
Может кому пригодится, вот ссылка http://mediainfo.sourceforge.net/ru
MediaInfo позволяет получать техническую информацию из видео- или аудио- файлов.
Это - свободное программное обеспечение (распространяется бесплатно и с исходным кодом, доступным по лицензии GPL или LGPL)


Для меня плюсы очевидны:
+Поддерживает огромное количество кодеков и форматов и платформ.
+GNU GPL
+Есть вариант, выполненный в виде библиотеки с примерами (что я и буду использовать)

Всем все равно спасибо. Я нашел его только благодаря тому, что искал дополнительную информацию к данной на форуме.


 
KilkennyCat ©   (2009-12-28 08:13) [12]

Тебе тож спасибо, меня тут озадачили мультимедией... ща посмотрим это чудо.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.005 c
2-1262182249
11223344
2009-12-30 17:10
2010.03.07
классы


2-1262082279
ford
2009-12-29 13:24
2010.03.07
прочитать файл


2-1262446465
NanoTek
2010-01-02 18:34
2010.03.07
SendMessage


8-1180531137
Zeleniy
2007-05-30 17:18
2010.03.07
MediaPlayer и несколько файлов одного расширения.


10-1164100105
yaJohn
2006-11-21 12:08
2010.03.07
Получить бинарные данные из внешнего OLE сервера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский