[HOWTO] Odtwarzanie filmów na TV (tvout - nvidia)

groadin
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 12 mar 2007, 18:15
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86

[HOWTO] Odtwarzanie filmów na TV (tvout - nvidia)

Post autor: groadin » 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

Kod: Zaznacz cały

direct rendering: Yes
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ą:

Kod: Zaznacz cały

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
2. Otwórz plik swoim ulubionym edytorem, np

Kod: Zaznacz cały

sudo nano /etc/X11/xorg.conf
lub jeśli wolisz interfejs graficzny (dla KDE)

Kod: Zaznacz cały

kdesu kate /etc/X11/xorg.conf
lub (dla Gnome)

Kod: Zaznacz cały

sudo gedit /etc/X11/xorg.conf
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.

Kod: Zaznacz cały

Section "Device"
	Identifier	"Device[0]"
	Driver		"nvidia"
	BusID		"PCI:1:0:0"
	Screen          0
	Option		"NoLogo" "1"
EndSection
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.

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
5. Znajdź sekcję Monitor i dokonaj następujących zmian:
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
6. Zrób linijkę odstępu po powyższej sekcji i wklej:
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
7. Znajdź sekcję Screen. Na początku tej sekcji znajdziesz trzy linijki, które należy zmienić tak:

Kod: Zaznacz cały

Identifier	"Screen[0]"
Device		"Device[0]"
Monitor		"Monitor[0]"
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.

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
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).

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
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)

Kod: Zaznacz cały

export DISPLAY=:0.1
Wszystkie następne polecenia wpisane do tej konsoli będą realizowane na ekranie drugim. Tak więc możemy teraz wpisać

Kod: Zaznacz cały

mplayer /sciezka/do/filmu
i film zostanie wyświetlony na telewizorze.

2. Drugi sposób polega na uruchomieniu mplayera z odpowiednim parametrem:

Kod: Zaznacz cały

mplayer -display :0.1 /sciezka/do/filmu
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

Kod: Zaznacz cały

nano ~/.bashrc
i na końcu dodajemy linijkę:

Kod: Zaznacz cały

alias mptv="/usr/bin/mplayer -fs -fixed-vo -display :0.1 -vf expand=0:-100:0:0 "
(nie pomiń spacji na końcu przed cudzysłowem).
2. Zapisujemy zmiany i wydajemy polecenie:

Kod: Zaznacz cały

 source ~/.bashrc
3. Od teraz do otwierania filmów na telewizorze możemy używać komendy:

Kod: Zaznacz cały

mptv /sciezka/do/filmu
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ść:

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
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 ;-)
ODPOWIEDZ

Wróć do „Software-Multimedia”