Статейка-памятка, а также для гуглоиндексации.
Итак, цель следующая: на машине с freebsd, оборудованной относительно свежей видеокартой nvidia, надо заручиться ее помощью в нелегком деле проигрывания HD видео.
Если вкрадце, видео высокой четкости от обычного отличается высокой четкостью :) А именно, картинка там выводится в разрешении 1920x1080, что, разумеется, накладывает весьма суровые требования на машину. К примеру, размер фильма выходит 15-20Gb, а проигрывание этой дряни у меня сжирает подчистую целое ядро процессора (Core Quad 2.4) и подтормаживает :)
К счастью, более-менее свежие видеокарты умеют такие монстрообразные форматы декодировать аппаратно. Я разобрался как это сделать для нвидии (у меня 9600GT).
Прежде всего, надо распаковать архив с дровами (если ставилось через порты, то нужный архив должен валяться в /usr/ports/distfiles как какой-нибудь NVIDIA-FreeBSD-x86-185.18.29.tar.gz или подобное). В директории (почему-то) doc должны обнаружиться файлы vdpau.h и vdpau_x11.h, их надо перетащить в /usr/include/vdpau/.
Про api VDPAU можно поточнее почитать на
википедии.
Теперь надо со
страницы загрузок mplayerhq скачать последний снапшот и собрать его, отконфигурировав как ./configure --disable-x264-lavc --disable-x264 --enable-vdpau.
После этого, надо уточнить, что mplayer научился работать с vdpau:
- Список video outputs: mplayer -vo help | grep vdpau должен дать
vdpau VDPAU with X11 - Список video decoders: mplayer -vc help | grep vdpau должен дать список:
ffmpeg12vdpau ffmpeg working FFmpeg MPEG-1/2 (VDPAU) [mpegvideo_vdpau]
ffwmv3vdpau ffmpeg problems FFmpeg WMV3/WMV9 (VDPAU) [wmv3_vdpau]
ffvc1vdpau ffmpeg problems FFmpeg WVC1 (VDPAU) [vc1_vdpau]
ffh264vdpau ffmpeg working FFmpeg H.264 (VDPAU) [h264_vdpau]
Что за проблемс с WMV и WVC1 я не понял, но и пес с ними, все равно львиная доля HD video в H.264 и MPEG2.
Ну и собственно все, смотреть можно так: mplayer -vo vdpau -vc ffh264vdpau video.avi. Загрузка проца будет болтаться в районе единиц процентов.