На днях мне в голову пришла мысль, а нельзя ли по дороге на работу не только читать книжки, но и смотреть фильмы. Недавно я приобрёл 4 Гб miniSD, так что место придостаточно. Обычные фильмы Nokia играть либо просто отказывается, либо делает это по кадру в несколько секунд. Однако если отмасштабировать видео, так чтобы оно не превышало 400 пикселей по горизонтали и 240 по вертикали (сохраняя пропорции) оно нисколько не тормозит.
При помощи mencoder мы можем сделать DVDrip, или если рип сделали до нас, то можем просто отмасштабировать видео. О том, как правильно делать DVDrip есть множество статей, например, эти (ч. 1, ч. 2) или эта. Они конечно поучительные, однако во первых по примерам из man mencoder получаются рипы не хуже, а во вторых нам нужно всего лишь “маленькое” видео, которое будем смотреть в дороге и бороться за качество нам как-то смысла особого нет.
mplayer dvd://цифра -vf cropdetect
Какая должна быть цифра? Может 1, может 2, может 3. Нужно поэкспериментировать и определить именно тот заголовок, с которого начинается сам фильм.
Если у вас не DVD-диск, а образ (или просто каталог с файлами), в нужно сперва его подмонтировать (пропускаем, если у вас просто каталог с файлами)
mount file.iso /mnt/iso -o loop
а затем обратиться к точке монтирования, как к DVD диску, указав опцию -dvd-device /mnt/iso (в дальнейших примерах я буду опускать этот параметр).
mplayer -dvd-device /mnt/iso dvd://цифра -vf cropdetect
Полистаем фильм немного вперёд (стрелкой вверх или кнопкой PageUp) и посмотрим на вывод в консоли. Он должен быть примерно такой:
[CROP] Crop area: X: 3..708 Y: 77..500 (-vf crop=704:416:4:82).0 [CROP] Crop area: X: 3..708 Y: 77..500 (-vf crop=704:416:4:82).0 [CROP] Crop area: X: 3..708 Y: 77..500 (-vf crop=704:416:4:82).0 [CROP] Crop area: X: 3..708 Y: 77..500 (-vf crop=704:416:4:82).0
Значение crop=704:416:4:82 как раз то, что нам нужно. Можно запустить mplayer с этим параметром и убедиться, что чёрные поля обрезаны:
mplayer dvd://цифра -vf crop=704:416:4:82
Обратите внимание также на строку в консоли, в которой указывается разрешение фильма. Она должна выглядеть примерно так:
VO: [xv] 704x432 => 1001x432 Planar YV12
Итак разрешение нашего фильма в оригинале (уже обрезанном) 1001×432. Нам необходимо его уменьшить так, чтобы по горизонтали оно не превышало 400, а по вертикали 240. Придётся вспомнить математику и посчитать. Сперва примем вертикальное разрешение равным 240. Горизонтальное в нашем случае будет равняться:
1001 * 240 / 432 = 566
Да, 566 явно больше чем 400, в таком случае, приняв горизонтальное разрешение равным 400, вертикальное будет:
400 * 432 / 1001 = 172
В принципе mplayer умеет пропорционально рассчитывать вертикальное разрешение если задать ему только горизонтальное (опция -xy 400). Наоборот к сожалению он делать не умеет.
Относительно звука. На DVD он как правило хороший. Но на таблетке нам явно не нужен Dolby Digital, занимающий лишнее место. Так что есть смысл его урезать, перекодировав при помощи кодека mp3lame (-oac mp3lame -lameopts vbr=0:br=128:mode=0).
Относительно видео. В качестве кодека возьмём mpeg4 и среднее значение битпотока 500 (можете поставить побольше для улучшения качества, можете поменьше для уменьшения размера). Как ни странно, но N810 прекрасно крутит видео с потоком 1800, лишь бы разрешение было не больше 400×240, так что битпоток подберите на свой вкус.
Итак, мы знаем как обрезать изображение, перекодировать звук и установили новое разрешение. Теперь приступим к перекодированию:
mencoder -o video.avi dvd://цифра -oac mp3lame -lameopts \ vbr=0:br=128:mode=0 -vf crop=704:432:8:74,scale=400:172 \ -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500
или с опцией -xy
mencoder -o video.avi dvd://цифра -oac mp3lame -lameopts \ vbr=0:br=128:mode=0 -vf crop=704:432:8:74,scale -zoom \ -xy 400 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500
В результате получим файл video.avi, который нужно будет перекинуть на таблетку.
Команды будут практически идентичными, только параметр dvd://цифра нужно будет заменить на имя файла.
В этой статье я не затрагиваю всевозможные финты, такие как накладывание различных звуковых дорожек, субтитров, начало и окончание кодирования в определённых местах. В указанных мною статьях есть некоторые сведения об этом, хотя, судя по всему, с ошибками. А изложенного материала я думаю вполне хватит большинству пользователей.