[HOWTO] Odtwarzanie filmów na TV (tvout - nvidia)
: 28 mar 2007, 21:26
Niniejszy How-To pokazuje krok po kroku jak umożliwić odtwarzanie filmów na telewizorze (bez wykorzystania twinview, a więc można jednocześnie oglądać film na TV i używać komputera). Do tego celu wykorzystamy mplayer (stworzymy również pewną optymalną do tego celu konfigurację mplayera). How-To dotyczy kart Nvidia posiadających wyjście tv-out (composite lub s-video).
Proszę osoby posiadające karty firmy Nvidia o podawanie informacji na PM o rezultatach (wraz z informacją o posiadanej karcie graficznej, i ewentualnych problemach).
I. Wymagania, czyli co już powinno być zainstalowane zanim przystąpimy do konfiguracji
a) masz zainstalowane i działające sterowniki do kart nvidia
- rezultat komendy glxinfo | grep direct to
b) zaintalowałeś najważniejsze kodeki
c) zainstalowałeś mplayer
d) zainstalowałeś pakiet czcionek windowsowych msttcorefonts (potrzebne do polskich znaków diakrytycznych w napisach)
II. Konfiguracja xorg.conf
Musimy stworzyć dwa ekrany - jednym jest oczywiście nasz aktualny monitor (LCD lub CRT), a drugim będzie telewizor. Musisz przeedytować swój plik xorg.conf zgodnie z poniższymi instrukcjami (zakładam, że aktualnie masz skonfigurowany tylko jeden ekran - w przeciwnym wypadku musisz odpowiednio dostosować poniższe rady):
1. Zrób kopię zapasową:
2. Otwórz plik swoim ulubionym edytorem, np
lub jeśli wolisz interfejs graficzny (dla KDE)
lub (dla Gnome)
3. Znajdź sekcję Device. Zmień ją tak, aby przypominała tą:
Instrukcje: Nie zmieniaj linijki BusID! Musisz zmienić natomiast linijkę Identifier, oraz prawdopodobnie musisz dodać linijki Screen i Option (jeśli już istnieją w identycznej formie, po prostu je zostaw). Jeśli masz poprawnie skonfigurowane sterowniki nvidia linijka Driver powinna być taka sama jak poniżej.
4. Zrób linijkę odstępu po sekcji Device i wklej / wpisz następujący kod:
Instrukcje: W poniższym przykładzie możesz zmienić opcję TVOutFormat (do wyboru masz Composite i SVideo, zależnie jakie wyjście tv-out posiadasz) oraz TVStandard (PAL-G powinna być jednak odpowiednia). Linijka BusID musi być identyczna jak ta w poprzedniej sekcji Device.
5. Znajdź sekcję Monitor i dokonaj następujących zmian:
Instrukcje: HorizSync i VertRefresh zostaw takie jakie są. Resztę zmień jak poniżej.
6. Zrób linijkę odstępu po powyższej sekcji i wklej:
Instrukcje: Poniższy kod wklej bez zmian.
7. Znajdź sekcję Screen. Na początku tej sekcji znajdziesz trzy linijki, które należy zmienić tak:
8. Poniżej sekcji Screen (może być dość długa - daną sekcję kończy słowo EndSection) wklej:
Instrukcje: Tutaj zmienić możesz rozdzielczość zależnie od swojego telewizora, ale w większości przypadków poniższa będzie OK.
9. Znajdź sekcję ServerLayout. Przeedytuj ją tak, aby była identyczna z tą:
Instrukcje: Jeśli Twoja sekcja zawiera więcej opcji niż poniższa, możesz je zostawić dodając na koniec sekcji (przed EndSection).
Uwaga: Powyżej zastosowałem kod Screen 1 "Screen[1]" 1400 1200. Wartości 1400 i 1200 to odpowiednio odległość w poziomie i pionie (x i y) od lewego górnego rogu ekranu 1 (czyli naszego monitora). Dzięki temu ekran TV jest umieszczony "z dala" od naszego podstawowego ekranu. Jest to alternatywa dla kodu Screen 1 "Screen[1]" RightOf "Screen[0]", który "przyczepia" ekran drugi po prawej stronie ekranu pierwszego, przez co myszka może "wyjechać" poza prawy bok ekranu monitora, co jest dosyć niewygodne. Możesz oczywiście wypróbować obie wersje (nie jednocześnie ).
Wracając do wartości 1400 i 1200: jeśli Twój monitor ma większą rozdzielczość niż te wartości, to zmień je tak, aby były odpowiednio większe (rozdzielczość mojego monitora to 1280x1024, dlatego powyższe wartości mi wystarczają).
10. Zapisz zmiany i zamknij plik. Zrestartuj Serwer X (Ctrl+Alt+Backspace, a w konsoli wpisz startx) lub zrestartuj komputer.
III. Wyświetlanie filmu na TV
a) Przedstawię dwa sposoby na wyświetlenie filmu (i nie tylko) na ekranie drugim, czyli w naszym przypadku na telewizorze.
1. Pierwszy sposób polega na wpisaniu (w konsoli)
Wszystkie następne polecenia wpisane do tej konsoli będą realizowane na ekranie drugim. Tak więc możemy teraz wpisać
i film zostanie wyświetlony na telewizorze.
2. Drugi sposób polega na uruchomieniu mplayera z odpowiednim parametrem:
Rezultat jest taki sam, jednak dotyczy pojedyńczego filmu, a nie wszystkiego co zostanie wpisane w daną konsolę.
b) A oto sposób, którego sam używam. Wykorzystuje on metodę drugą, i jest bardzo wygodny w użyciu. Umożliwia uruchamianie filmów na telewizorze za pomocą jednej prostej komendy.
1. Otwieramy plik ~/.bashrc
i na końcu dodajemy linijkę:
(nie pomiń spacji na końcu przed cudzysłowem).
2. Zapisujemy zmiany i wydajemy polecenie:
3. Od teraz do otwierania filmów na telewizorze możemy używać komendy:
nazwa komendy - mptv - może być dowolna. Wystarczy odpowiednio zmienić linijkę dodaną do ~/.bashrc
Fragment -vf expand=0:-100:0:0 sprawia, że film zostanie przesunięty do góry ekranu, a napisy zostaną wyświetlone pod nim (mogą również zachodzić na film w przypadku wielu linijek). Jeśli usuniesz ten fragment, ewentualne napisy zostaną wyświetlone na dole filmu (nie ekranu), a film będzie pionowo wyśrodkowany (na górze i na dole powstaną czarne pasy o szerokości zależnej od aspektu ratio danego filmu). Możesz wypróbować obie wersje.
Uwaga: Pamiętaj aby nie wyłączać konsoli po wydaniu powyższej komendy. W przeciwnym wypadku odtwarzanie filmu zostanie przerwane.
IV. Optymalizacja konfiguracji mplayer i polskie napisy
Być może do tego momentu nie działało Ci poprawnie wyświetlanie filmów, jednak jeśli masz spełnione wymagania podane na początku How-To, oraz na ekranie telewizora (po uruchomieniu komputera i zalogowaniu się ) masz wyświetlony pulpit, to znaczy że problem prawdopodobnie tkwi w konfiguracji mplayer. Poniżej przedstawię taką, której sam używam.
1. Otwieramy plik ~/.mplayer/config (jedną z metod przedstawionych w punkcie II.2)
2. Wklejamy taką zawartość:
Powyższe nazwy są dosyć intuicyjne (no OK, nie wszystkie ), dodatkowo zostawiłem oryginalne komentarze (konfiguracja to zlepek konfigów z forum ubuntuforums.org + własne poprawki), więc raczej nie powinno być problemów z edycją. Konfiguracja w takiej formie powinna wyświetlać poprawnie polskie znaki diakrytyczne (jeśli nie, zwróc uwagę na opcje font, subfont-encoding oraz subcp).
V. Dodatkowe informacje
Jeśli po wykonaniu powyższych instrukcji masz jakieś problemy, upewnij się, że nigdzie nie popełniłeś literówki ani innego błędu. Jeśli wszystko zrobiłeś dobrze a mimo to coś nie działa, spróbuj uruchomić film stosując metodę opisaną w punkcie III. a) 1., jednak zamiast mplayera skorzystaj z kaffeine (dotyczy KDE) czy innego odtwarzacza. Ostatecznie napisz do mnie PM z dokładnym opisem problemu, informacją o używanej wersji Ubuntu i plikiem xorg.conf, a postaram się pomóć.
Gdzie znajdziesz dodatkowe informacje (aka credits):
- Mplayer - konfiguracja od podstaw
- 100% polskich znaków w napisach - dotyczy GUI mplayera, więc musisz instrukcje inteligentnie dostosować do pliku konfiguracyjnego
- Nvidia TV-Out - znajdziesz dodatkowo listę formatów TV (PAL, SECAM itd)
- Nvidia TV-Out for newbies
- The Ultimate mplayer Configuration File - porady dotyczące pliku konfiguracyjnego mplayer
... i oczywiście google
Proszę osoby posiadające karty firmy Nvidia o podawanie informacji na PM o rezultatach (wraz z informacją o posiadanej karcie graficznej, i ewentualnych problemach).
I. Wymagania, czyli co już powinno być zainstalowane zanim przystąpimy do konfiguracji
a) masz zainstalowane i działające sterowniki do kart nvidia
- rezultat komendy glxinfo | grep direct to
Kod: Zaznacz cały
direct rendering: Yes
c) zainstalowałeś mplayer
d) zainstalowałeś pakiet czcionek windowsowych msttcorefonts (potrzebne do polskich znaków diakrytycznych w napisach)
II. Konfiguracja xorg.conf
Musimy stworzyć dwa ekrany - jednym jest oczywiście nasz aktualny monitor (LCD lub CRT), a drugim będzie telewizor. Musisz przeedytować swój plik xorg.conf zgodnie z poniższymi instrukcjami (zakładam, że aktualnie masz skonfigurowany tylko jeden ekran - w przeciwnym wypadku musisz odpowiednio dostosować poniższe rady):
1. Zrób kopię zapasową:
Kod: Zaznacz cały
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
Kod: Zaznacz cały
sudo nano /etc/X11/xorg.conf
Kod: Zaznacz cały
kdesu kate /etc/X11/xorg.conf
Kod: Zaznacz cały
sudo gedit /etc/X11/xorg.conf
Instrukcje: Nie zmieniaj linijki BusID! Musisz zmienić natomiast linijkę Identifier, oraz prawdopodobnie musisz dodać linijki Screen i Option (jeśli już istnieją w identycznej formie, po prostu je zostaw). Jeśli masz poprawnie skonfigurowane sterowniki nvidia linijka Driver powinna być taka sama jak poniżej.
Kod: Zaznacz cały
Section "Device"
Identifier "Device[0]"
Driver "nvidia"
BusID "PCI:1:0:0"
Screen 0
Option "NoLogo" "1"
EndSection
Instrukcje: W poniższym przykładzie możesz zmienić opcję TVOutFormat (do wyboru masz Composite i SVideo, zależnie jakie wyjście tv-out posiadasz) oraz TVStandard (PAL-G powinna być jednak odpowiednia). Linijka BusID musi być identyczna jak ta w poprzedniej sekcji Device.
Kod: Zaznacz cały
Section "Device"
Driver "nvidia"
Identifier "Device[1]"
Screen 1
Option "TVOutFormat" "Composite"
Option "TVStandard" "PAL-G"
Option "ConnectedMonitor" "Monitor[1]"
BusID "PCI:1:0:0"
Option "NoLogo" "1"
EndSection
Instrukcje: HorizSync i VertRefresh zostaw takie jakie są. Resztę zmień jak poniżej.
Kod: Zaznacz cały
Section "Monitor"
Identifier "Monitor[0]" #LCD/CRT
Option "DPMS"
HorizSync 28-51
VertRefresh 43-60
EndSection
Instrukcje: Poniższy kod wklej bez zmian.
Kod: Zaznacz cały
Section "Monitor"
Identifier "Monitor[1]" #TV
HorizSync 30-50
VertRefresh 60
Option "DPMS"
EndSection
Kod: Zaznacz cały
Identifier "Screen[0]"
Device "Device[0]"
Monitor "Monitor[0]"
Instrukcje: Tutaj zmienić możesz rozdzielczość zależnie od swojego telewizora, ale w większości przypadków poniższa będzie OK.
Kod: Zaznacz cały
Section "Screen"
Device "Device[1]"
Identifier "Screen[1]"
Monitor "Monitor[1]"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "800x600"
EndSubSection
EndSection
Instrukcje: Jeśli Twoja sekcja zawiera więcej opcji niż poniższa, możesz je zostawić dodając na koniec sekcji (przed EndSection).
Kod: Zaznacz cały
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen[0]" 0 0
Screen 1 "Screen[1]" 1400 1200
InputDevice "Generic Keyboard" "CoreKeyboard"
InputDevice "Configured Mouse" "CorePointer"
EndSection
Wracając do wartości 1400 i 1200: jeśli Twój monitor ma większą rozdzielczość niż te wartości, to zmień je tak, aby były odpowiednio większe (rozdzielczość mojego monitora to 1280x1024, dlatego powyższe wartości mi wystarczają).
10. Zapisz zmiany i zamknij plik. Zrestartuj Serwer X (Ctrl+Alt+Backspace, a w konsoli wpisz startx) lub zrestartuj komputer.
III. Wyświetlanie filmu na TV
a) Przedstawię dwa sposoby na wyświetlenie filmu (i nie tylko) na ekranie drugim, czyli w naszym przypadku na telewizorze.
1. Pierwszy sposób polega na wpisaniu (w konsoli)
Kod: Zaznacz cały
export DISPLAY=:0.1
Kod: Zaznacz cały
mplayer /sciezka/do/filmu
2. Drugi sposób polega na uruchomieniu mplayera z odpowiednim parametrem:
Kod: Zaznacz cały
mplayer -display :0.1 /sciezka/do/filmu
b) A oto sposób, którego sam używam. Wykorzystuje on metodę drugą, i jest bardzo wygodny w użyciu. Umożliwia uruchamianie filmów na telewizorze za pomocą jednej prostej komendy.
1. Otwieramy plik ~/.bashrc
Kod: Zaznacz cały
nano ~/.bashrc
Kod: Zaznacz cały
alias mptv="/usr/bin/mplayer -fs -fixed-vo -display :0.1 -vf expand=0:-100:0:0 "
2. Zapisujemy zmiany i wydajemy polecenie:
Kod: Zaznacz cały
source ~/.bashrc
Kod: Zaznacz cały
mptv /sciezka/do/filmu
Fragment -vf expand=0:-100:0:0 sprawia, że film zostanie przesunięty do góry ekranu, a napisy zostaną wyświetlone pod nim (mogą również zachodzić na film w przypadku wielu linijek). Jeśli usuniesz ten fragment, ewentualne napisy zostaną wyświetlone na dole filmu (nie ekranu), a film będzie pionowo wyśrodkowany (na górze i na dole powstaną czarne pasy o szerokości zależnej od aspektu ratio danego filmu). Możesz wypróbować obie wersje.
Uwaga: Pamiętaj aby nie wyłączać konsoli po wydaniu powyższej komendy. W przeciwnym wypadku odtwarzanie filmu zostanie przerwane.
IV. Optymalizacja konfiguracji mplayer i polskie napisy
Być może do tego momentu nie działało Ci poprawnie wyświetlanie filmów, jednak jeśli masz spełnione wymagania podane na początku How-To, oraz na ekranie telewizora (po uruchomieniu komputera i zalogowaniu się ) masz wyświetlony pulpit, to znaczy że problem prawdopodobnie tkwi w konfiguracji mplayer. Poniżej przedstawię taką, której sam używam.
1. Otwieramy plik ~/.mplayer/config (jedną z metod przedstawionych w punkcie II.2)
2. Wklejamy taką zawartość:
Kod: Zaznacz cały
#General setup
ao="alsa" #audio out
mixer-channel="Master"
srate=48000
really-quiet="1" #Very very little console output
vo="xv" #video out
zoom="1" #Allow sofware scaling if I use x11 for vo
aid="1" #audio channel
sid="0" #subtitle set
monitoraspect="4:3"
stop-xscreensaver=yes
#Display
double="yes" #double buffering(recommended for subtitles)
framedrop="1" # For slow machines
hardframedrop="0" #Make sure hard frame drop is off but can turn on easily now
#This sets the postprocessing into overdrive using all possible spare cpu cycles to make the movie look better
autoq=100
vf=pp=de,hqdn3d
#always keep mplayer on top
ontop="1"
# VobSubs
# Align subs. (-1: as they want to align themselves)
spualign=-1
# Anti-alias subs. (4: best and slowest)
spuaa=4
# Set language.
slang=pl,en,eng
# Text-based subtitles
# Find subtitle files. (1: load all subs containing movie name)
sub-fuzziness=1
# Set font.
font=/usr/share/fonts/truetype/msttcorefonts/Verdana.ttf
# Set font encoding.
subfont-encoding=unicode
subcp=cp1250
# Set subtitle file encoding.
unicode=yes
utf8=yes
# Resample the font alphamap. (1: narrow black outline)
ffactor=1
# Set subtitle position. (100: as low as possible)
subpos=100
# Set subtitle alignment at its position. (2: bottom)
subalign=2
# Set font size. (2: proportional to movie width)
subfont-autoscale=2
# Set font blur radius. (default: 2)
subfont-blur=2.0
# Set font outline thickness. (default: 2)
subfont-outline=2.0
# Set autoscale coefficient. (default: 5)
subfont-text-scale=4.4
V. Dodatkowe informacje
Jeśli po wykonaniu powyższych instrukcji masz jakieś problemy, upewnij się, że nigdzie nie popełniłeś literówki ani innego błędu. Jeśli wszystko zrobiłeś dobrze a mimo to coś nie działa, spróbuj uruchomić film stosując metodę opisaną w punkcie III. a) 1., jednak zamiast mplayera skorzystaj z kaffeine (dotyczy KDE) czy innego odtwarzacza. Ostatecznie napisz do mnie PM z dokładnym opisem problemu, informacją o używanej wersji Ubuntu i plikiem xorg.conf, a postaram się pomóć.
Gdzie znajdziesz dodatkowe informacje (aka credits):
- Mplayer - konfiguracja od podstaw
- 100% polskich znaków w napisach - dotyczy GUI mplayera, więc musisz instrukcje inteligentnie dostosować do pliku konfiguracyjnego
- Nvidia TV-Out - znajdziesz dodatkowo listę formatów TV (PAL, SECAM itd)
- Nvidia TV-Out for newbies
- The Ultimate mplayer Configuration File - porady dotyczące pliku konfiguracyjnego mplayer
... i oczywiście google