The Diary
Дневникът на Георги
<- Вторник, 18 Октомври 2005 | Начална страница | Четвъртък, 20 Октомври 2005 ->
Сряда, 19 Октомври 2005
Преди време си купихме мини Mpeg4 камера, но чак днес се наложи да свалям от нея филми.
Камерата е Samsung Miniket VP-M110. Има чудесни възможности, а най-благото в нея е, че
фърмуера и е Linux :) Повече за камерата може да прочетете отваряйки следните връзки:
Samsung Miniket VP-M110 (внимание Flash!)
LinuxDevices - Device Profile: Samsung Miniket multi-function diskless camcorder
Preview: Samsung Miniket VP-M110
Вече бях прочел тук-там, че камерата използва някаква модификация на Mpeg4 кодека и ми стана доста интересно защо Samsung са извършили глупостта да не спазят утвърдения стандарт и то точно в устройство, на което фърмуера е Linux? С идиотщината която са извършили, кажи речи всеки player има нужда от нещо допълнително, за да работи с видео файловете създадени от Miniket.
Например любимият ми MPlayer при опит за гледане на филм сниман с камерата, показва
следното съобщение:
Playing SMOV0001.AVI.
Cache fill: 0.00% (0 bytes) AVI file format detected.
VIDEO: [SEDG] 720x576 24bpp 25.000 fps 6140.2 kbps (749.5 kbyte/s)
==========================================================================
Opening audio decoder: [alaw] aLaw/uLaw audio decoder
AUDIO: 22050 Hz, 2 ch, s16le, 352.8 kbit/50.00% (ratio: 44100->88200)
Selected audio codec: [ulaw] afm:alaw (uLaw)
==========================================================================
vo: X11 running at 1280x1024 with depth 24 and 32 bpp (":0.0" => local display)
==========================================================================
Cannot find codec matching selected -vo and video format 0x47444553.
Read DOCS/HTML/en/codecs.html!
==========================================================================
След това съобщение се чува само звука, но видео няма никакво.
Потърсих из нета и бързо намерих решението, което се оказа доста елементарно. Достатъчно беше да окажа в конфигурацията на MPlayer, че формата 0x47444553 е mpeg4, и за да се гледа трябва да се ползва, някой от mpeg4 драйверите.
Това се прави като във файла файла ~/.mplayer/codecs.conf
или /usr/local/etc/mplayer/codecs.conf
/ако искате да настроите конфигурацията за всички потребители/ трябва да добавите реда format 0x47444553
при описанието на драйвера ffodivx.
Ето извадка от файла codecs.conf (и само patch за codecs.conf), който при мен работи:
videocodec ffodivx info "FFmpeg MPEG-4" status working fourcc FMP4,fmp4 fourcc DIVX,divx fourcc DIV1,div1 divx fourcc MP4S,mp4s ; ISO MPEG-4 Video V1 fourcc M4S2,m4s2 fourcc xvid,XVID,XviD,XVIX fourcc DX50,dx50,BLZ0 DX50 fourcc mp4v,MP4V format 0x4 fourcc UMP4 fourcc 3IV2,3iv2 ; 3ivx Delta 4 fourcc DXGM format 0x10000004 ; mpeg 4 es format 0x47444553 ; Support for Samsung Miniket VP-M110 driver ffmpeg dll mpeg4 ;opendivx out YV12,I420,IYUV
Използвайки така модифицирания codecs.conf си пуснах видеото и при MPlayer под OS X, като просто
копирах файла в /usr/local/etc/mplayer/
. По този начин проработи и конзолният
MPlayer, които съм си компилирал сам и MPlayer OS X.
Ако някой знае как да "подкарам" видеото и с Xine под Linux и VLC под OS X, да казва.
Добавка от 24.10.2005
Тъй като файловете са си стандартен DivX, оказва се че е достатъчно да се
смени идентификатора във файла, за да може да се гледа с всеки плеър разбиращ
от DivX. Това може да направите като отворите avi файла със шестнайсетичен
редактор и замените текста SEDG с DIVX. Ако имате инсталиран perl, може
да използвате следната команда:
perl -pi -e 's|SEDG|DIVX|m' *.AVI
Тази команда заменя SEDG с DIVX във файлове с разширения .AVI в текущата директория.
[ Коментари: 5 ]Коментари
Защо се опитваш да се справиш със симптомите на проблема, а не го решиш генерално? ;-) Ако само това му е грижата взимай hex редактора, firmware на камерата и смени този така зловреден низ. Ако ли пък поради някакви причини това решение не става (силни крипто проверки, etc), доколкото виждам, чрез проста промяна на 4cc-то в avi файла този ти проблем се решава... Това 0x47444553 не ми изглежда случайно избрано. Да видим сега дали Fjalar Ravia е имал успех...
47|44|45|53
G |D |E | S
Или както още е известен този кодек - SEDG. Най-вероятно FourCC го взима наобратно заради endiannes. Да видим:
D |I |V |X
44|49|56|58
или 0x58564944, което според мен e FourCC на XVID.
Доколкото виждам mplayer разпознава и XVID и DIVX като формати за "FFmpeg MPEG-4", така че в случая и s/SEDG/DIVX/ ще ти свърши работа, и s/SEDG/XVID/. Малко предизвикателство представлява фактът, че тази последователност от байтове се среща на две места във avi файловете - на отмествания 0x70 и 0xbc. Не ми се рови защо е така, предполагам, че второто е свързано с аудиото. Мисля, че с малко опит и грешка ще се разбере кое е правилното място/комбинация за подмяна. А, divx и xvid също вършат работа ;-)
Което означава, че просто трябва да напишеш 1..n редово програмчЕ на $favorite_programming_language за import/postprocessing на филмите ти и...
happy hacking!
Мерси, Христо ще пробвам да заменя идентификатора във файловете, да видим дали ще стане (би трябвало!).
Ако наистина помогне, ще съм супер доволен защото няма да се налага да прекодирам всеки път файловете. А Самсунг заради тази селяния със сменения идентификатор заслужават едно голямо GFY!
Пратих писмо на един от разработчиците на MPlayer и той вече ми отговори, че има по-добър patch за да се поддържа Самсунга и то именно с добавяне на SEDG идентификатора към fourcc.
Второ мерси за Христо! Ето какво използвах:
perl -pi -e 's|SEDG|DIVX|m' S*.AVI # Replace SEDG with DIVX in S*.AVI
and voila, it is working!
Тази команда сменя SEDG с DIVX във файловете с имена S*.AVI
С тази промяна във файловете, всички плеъри работят и филмите направени със Самсунга могат да се гледат и чуват :)
There is no such thing as SEDG codec. Samsung in their infinite wisdom, put SEDG indentifier instead of DIVX in the files. The files are encoded with standart DivX codec.
Basically, to watch movies shoot by Miniket in any player that supports DivX, it is enough to edit AVI file in some HEX editor, replaceing the text SEDG with DIVX (it is found 1 or two times in the first 1Kb of the file).
Hope this helps english speaking visitors of this page.
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
Качи някъде едно кратко клипче за тестове, пък ще видим.
Написа Н.Пепелишев на 21-Oct-2005 16:10