Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа с видео > Алгоритм конвертирования MJPG2000 => AVI


Автор: EKoshelev 19.1.2011, 15:03
Заранее извиняюсь за возможную нечеткость формулировки вопроса.

Один человек делает железку, у которой микросхема выкидывает видеопоток в формате MJPG 2000. На сколько мне известно, стандартные (и не очень) проги такой поток показывать не умеют. Моя задача написать драйвер (я в это на данный момент вообще не шарю), который бы любым способом мог показать этот поток. Но этот путь наименее предпочтительный.

Идеальный вариант - узнать как поток MJPG2000 переделать в AVI, и переделать железку таким образом чтобы стала источником AVI потока, с которым стандартные кодеки и проги работают более охотно. Короче, не плохо было бы найти алгоритм этого преобразования.

Доки которые нашел (по AVI про формат заголовка и про формат внутренностей) - все на английском, но насколько я понял они мало что проясняют. (тем как устроен MJPG 2000 пока не занимался). Когда я начал сравнивать два файла (один с потоком MJPG 2000, другой - тот же мувик, но конвертированный в AVI (при помощи спец проги из инета)) то наткнулся на загадочную перетасовку кадров в одном формате по сравнению с другим. Но как мне сказали, факт загадочности этого алгоритма не беда. Для начала было бы не плохо узнать вот что:

Внутренности обоих форматов содержат блоки, начинающиеся с FF 4F FF 51 и заканчивающиеся FF D9. Так вот между этими блоками и в формате MJPG, и в формате AVI болтается нефиксированное количество байтов, в пределах 20. Неплохо было бы узнать что означают эти байты, может кто-то знает, подскажите пожалуйста. Т. к. я пытался сопоставлять их с длинами блоков искать аналоги в другом файле (т. е. для AVI в MJPG) но их природы так и не понял.

Т. е., подытоживая цель создания этой темы:
1. Идеальный вариан - это алгоритм трансляции.
2. Или хотя бы смысл фрагментов болтающихся промеж блоков.

Понятно, что полных ответов не получу. Хотелось бы каких-нибудь ссылок, которые, на ваш взгляд, могут чем-нибудь помочь, или на край хотя бы на предмет каких слов погуглить. А то я уже ваще не знаю чё делать.

Заранее спасибо.

Автор: EKoshelev 21.1.2011, 13:56
С блоками  FF 4F FF 51 - FF D9 разобрался. Вопрос в этой части был сформулирован не совсем корректно.

Буду рад ссылкам на любые конверторы MJPEG2000 => AVI.

Автор: x128 21.1.2011, 15:34
Цитата

Один человек делает железку, у которой микросхема выкидывает видеопоток в формате MJPG 2000.

Если железка на ADV202, есть конвертер http://www.morgan-multimedia.com/M-JPEG2000/my_dat2avi.htm
Разных плееров и кодеков для воспроизведения MJPEG2000 тоже достаточно, гугол все знает. 
Из open-source стоит глянуть http://ffmpeg.org/ и http://www.openjpeg.org/.


Автор: EKoshelev 24.1.2011, 09:31
x128, да, ADV202, и конвертер такой есть. В исходном файле кадры зажаты в формате ADV202 RAW Format, а конвертер в авишку пихает их зажатыми в J2C. Вот сейчас стоит задача разобраться как это можно сделать без конвертера. Ковыряние в обоих файлах результата пока не даёт, разница между форматами, вообще говоря, не значительная - много одинаковых кусков длиной от 500 до 70000 байт, но порядок их перетасовки пока до конца не ясен.

Видать теперь надо надыбать спецификации на форматы ADV202 RAW и J2C.

Спасибо за ответ и за ссылки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)