Posts Tagged ‘mencoder’

Компресия на видео

Tuesday, December 25th, 2012

От както си хакнах Magic Lantern на фотоапарата, вече мога да снимам и видео. Не съм никакъв видео маниак с продуцентски наклонности, но от време навреме е хубаво да можеш да запишеш 1-2 минути.

Имаше два основни проблема за решаване:
1. Крайните видео файлове са огромни по размери за скромните ми хард дискове. Примерно 1 минута VGA видео – 160MB. А ако се снима на FULL HD, размерите стават още по-потресаващи.
2. Апарата няма хардуерен микрофон и записва без звук. По принцип въобще няма функцията “видео”, но благодарение на софтуерните ентусиасти – снима 🙂

Първия проблем ми беше особено належащ, защото наистина нямам никакво излишно място, а и щайгата ми въобще няма претенция да е станция за видео обработка. Така че ми трябваше софтуер, който да върви на Linux, да може да се batch-ва и да изкарва качествени смачкани видеа.

Естествено първо пробвах с mencoder, но така и не можах да изкарам качествено видео. Артефактите от компресията са едно на ръка, допълнително всичко що се мърда беше замацано и блурнато… Пробвах какви ли не кодеци и какви ли не компресии.
После пробвах директен ъплоуд в YouTube и да си го оправят както знаят 🙂 Една готина тяхна опция е “Reduce camera shake” за клипчета снимани от ръка. За съжаление YouTube го надроби същото като mencoder – грозотия.

Правилния начин беше компресия с H264 и ffmpeg.
Тук също имаше препъващи камъни. Оказа се че на древното ми Убунту 10.04 има ffmpeg, но супер стара версия без H264. Почнах да си псувам тихичко и да премислям за N-ти път алтернативата за ъпгрейд, когато ей така на майтап си свалих сорса на ffmpeg и пуснах да се компилира. Очаквах да изреве че всяка нужна библиотека е с прекалено стара версия в системата ми, но не! За 10 минути имах работещ нов bleeding edge ffmpeg.
H264 се сваля и се инсталира отделно. В това HOWTO е описано как става.
Веднъж като имаме работещ ffmpeg+H264, останалото е лесно:

ffmpeg -i MVI_2355.MOV -acodec aac -vcodec h264 out.mp4

В случая може би би било по-добре да не се задава никакъв аудио кодек, понеже видеото няма звук.

Крайния резултат в размера на файла е покъртителен:

-rw-rw-rw- 1 ivanatora ivanatora 163M 2012-12-23 20:15 MVI_2355.MOV
-rw-r--r-- 1 ivanatora ivanatora  22M 2012-12-24 12:24 out.mp4

Около 8 пъти по-малък размер. Видео качеството е същото като на оригинала – с минимална загуба.

Втория проблем въобще не ми беше приоритет, но така и така ме беше хванало настроение, та разучих какви са опциите.
По форумите казват че можело да се използва външен микрофон, който да се включи в слота за дистанционното и някак си да се записва от там.
Вместо това реших да пробвам да запиша аудиото с телефона и после някак си да ги напасна с видеото.

За Android има доста приложения диктофони или voice recorders. Пробвах поне 3-4 безплатни от маркета, но все нещо не ми харесваха. Или бяха ограничени до много къси записи, или записваха в някакви незнайни формати, или качеството на звука беше ужасно. Накрая се спрях на дефаултния voice recorder – записва в AMR, няма никакви ограничения и звукът е доста приличен.

Недостатък на целия метод е че трябва едновременно да пусна записа на аудиото и видеото, и после едновременно да ги спра. Е, обект на следващото ТНТМ ще е монтиране на аудио с произволна дължина и начало 🙂

След като имаме крайния AMR с аудиото, много лесно го преобразуваме в какъвто и да е формат:

ffmpeg -i audio.amr audio.wav

И също така лесно го добавяме във видеото:

ffmpeg -i audio.wav -i out.mp4 -strict -2 -ar 22050 test.mp4

В резултат вече имам FULL HD capable машина която с малко час по труд и творчество може да записва и аудио.