понедельник, 20 сентября 2010 г.

DVD -> mpeg

Есть у меня телевизор, который умеет проигрывать всякие разные видоформаты, что весьма удобно - не нужно загружать ноут и возиться с кабелями. Правда в этом проигрывателе есть и недостатки, но мириться с ними можно. Один из этих недостатков - невозможность выбрать звуковую дорожку: проигрывается всегда первая. А я скачал пару DVD аж с четырмя дорожками и русская не первая :) VOB файл проигрывается, но на английском.

Ну, взял в руки напильник и по быстрому сконвертировал DVD в avi:
mencoder -dvd-device DVD1/ dvd://1 -oac copy -ovc copy -aid 130 -o 1.avi
Быстро(потому, что рекомпрессии не происходит) перегнал так пару серий, проверил на телевизоре. Не фурычит, подлец, а на компе всё нормально...

Стал разбираться - оказалось не прописан fourcc код. Начал искать, подбирать разные варианты - ни один не работает. По тихоньку выяснил, что для MPEG-PS вроде бы нет fourcc кода, а надо просто сменить контейнер с avi на mpeg. В результате такая команда решает все проблемы и конвертит все titles(не знаю, как это корректно перевести):

for i in $(seq 1 100); do
mencoder -dvd-device DVD1/ dvd://$i -oac copy -ovc copy -aid 130 -of mpeg -o $i.mpeg
done

пятница, 10 сентября 2010 г.

Каррирование

Наткнулся тут на форуме на забавную штуку.

Представим следующую задачку по математике
У Пети есть яблоки. Вася забрал у Пети 3 яблока, сколько у Пети осталось яблок?

Вам кажется, что задачку нельзя решить? Не хватает каки-то данных? Как бы не так :)

Ответом на эту задачку является не число, а функция, принимающая один аргумент - начальное количество яблок и возвращающая остаток.

В целом, для программиста знакомого с функциональными языками в этом ничего странного нет. Вот решение на Haskell
reshenie = \x -> x - 3

А называется это каррирование.