Portál AbcLinuxu, 4. května 2025 15:40
Na filmy se dívám v mplayeru, vyhovuje mi jeho ovládání z klávesnice a ještě jsem snad nepotkal nic, s čím by si neporadil. Mám širokoúhlý displej (1680x1050, tedy 16:10), ale většina filmů má poměr stran větší, a tak kolem obrazu zbývají černé pruhy. mplayer obraz dává do středu, já ho chci mít nahoře, aby zbylo více místa na titulky, tak jsem si na to napsal skript.
Pokud vím, moje přání nelze mplayeru říci nijak jednoduše. Protože skoro každý film má trochu jiné rozlišení, nelze ani nastavit statická možnost v konfiguračním souboru - proto skript. V zásadě jde o nastavení parametru H pro volbu vf-add=expand=0:-H:0:0 - o H pixelů se totiž posune obraz nahoru. H zjistíme tak, že si spočteme poměr stran displeje (u mě 1.6), tím vydělíme horizontální rozměr (taky se tomu říká šířka) souboru a od výsledku odečteme vertikální rozměr (výšku) souboru . Když máme soubor třeba 576 x 320, tak je to na mém displeji 576/1,6 - 320 = 40.
A přesně to dělá následující skript v bashi:#!/bin/bash # tohle za 400ms ukonci mplayer, ktery za chvili spustim (sleep 0.4 ; killall mplayer) & # kdybych nekdy menil displej, staci zmenit jeho parametry displ_hor=1680.0 displ_ver=1050.0 # spocitame pomer stran displeje export displ_ratio=`echo "scale=2;$displ_hor / $displ_ver" |bc` # zde z vypisu mplayeru zachytim radku s rozlisenim souboru a vypustim jeji zacatek export resolution=`mplayer -vo null -ao null "$1" |grep VDec | sed -e 's/VDec: vo config request - //'` # ted z toho vytahnu vertikalni a horizontalni rozliseni souboru a pomer stran export film_hor=`echo $resolution |sed -e 's/\([0-9]*\).*/\1/'` export film_ver=`echo $resolution |sed -e 's/[0-9]* x \([0-9]*\).*/\1/'` export film_ratio=`echo "scale=2; $film_hor / $film_ver" |bc` # pridavat pixely pod obraz ma smysl (a lze) pouze, pokud pomer stran souboru je vyssi nez pomer stran monitoru export budeme_pridavat=`echo "$displ_ratio < $film_ratio"|bc` echo $budeme_pridavat if test $budeme_pridavat -eq 1; then # spocitame, kolik pixelu potrebuji pridat export add_height=`echo "$film_hor / $displ_ratio - $film_ver"|bc`; # jinak nepridavame zadne pixely else add_height=0; fi #trada mplayer -vf expand=0:-$add_height:0:0 "$1"Možná to bude někomu užitečné, a pokud ne, tak mi to aspon může někdo zkritizovat - je to teprve můj druhý skript v bashi, tak je tam určitě spousta hloupostí nebo zbytečných složitostí.
Tiskni
Sdílej:
Nebyl na to náhodou nějakej lepší způsob? V SMPlayeru se to dá i nějak naklikat...
V SMPlayeru se to dá i nějak naklikat...Smrt.
Už si to jednou popisoval, ale já zapomněl ty důvody:)
Jako že kus okna kreslí přehrávač, kus WM... oki, ale co je špatného na tom když to jde někde nakliknout? Díky:)
No jo, nač to dělat jednoduše, když to jde i složitě: -vo sdl
pomer stran jde zjistit jednoduseji nez s tim zabijenim mplayeru:
mplayer -vo null -ao null -really-quiet -identify -frames 0 bleble.avi
ještě jsem snad nepotkal nic, s čím by si neporadilDVD menu, evergreen mplayeru.
http://gitorious.org/~astrange/ffmpeg/ffmpeg-mt ?
configure
navíc přepínače --disable-libavutil_a --disable-libavcodec_a --disable-libavformat_a --disable-libpostproc_a --disable-libswscale_a
) a už to valí. Upstream to nedoporučuje.
Mencoder by ffmpeg-MT myslím využil toliko k dekódování. Enkodéry mají (pokud tedy vůbec mají) vlastní podporu více jader. Jak xvid, ale zejména x264 (kterou byste měli používat pokud máte trochu sebeúcty) dokážou živit víc jader.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.