mirror of https://github.com/mpv-player/mpv
276 lines
9.9 KiB
XML
276 lines
9.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<chapter id="tv">
|
|
<title>TV</title>
|
|
|
|
<sect1 id="tv-input" xreflabel="TV input">
|
|
<title>TV input</title>
|
|
|
|
<para>
|
|
This section is about how to enable <emphasis role="bold">watching/grabbing
|
|
from V4L compatible TV tuner</emphasis>. See the man page for a description
|
|
of TV options and keyboard controls.
|
|
</para>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="tv-compilation">
|
|
<title>Compilation</title>
|
|
|
|
<procedure>
|
|
<step><para>
|
|
First, you have to recompile. <filename>./configure</filename> will
|
|
autodetect kernel headers of v4l stuff and the existence of
|
|
<filename>/dev/video*</filename> entries. If they exist, TV support will
|
|
be built (see the output of <filename>./configure</filename>).
|
|
</para></step>
|
|
<step><para>
|
|
Make sure your tuner works with another TV software in Linux, for
|
|
example <application>XawTV</application>.
|
|
</para></step>
|
|
</procedure>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="tv-tips">
|
|
<title>Usage tips</title>
|
|
|
|
<para>
|
|
The full listing of the options is available on the manual page.
|
|
Here are just a few tips:
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
Use the <option>channels</option> option. An example:
|
|
<screen>-tv channels=26-MTV1,23-TV2</screen>
|
|
Explanation: Using this option, only the 26 and 23 channels will be usable,
|
|
and there will be a nice OSD text upon channel switching, displaying the
|
|
channel's name. Spaces in the channel name must be replaced by the
|
|
"_" character.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Choose some sane image dimensions. The dimensions of the resulting image
|
|
should be divisible by 16.
|
|
</para></listitem>
|
|
<listitem>
|
|
<para>
|
|
If you capture the video with the vertical resolution higher than half
|
|
of the full resolution (i.e. 288 for PAL or 240 for NTSC), then the
|
|
'frames' you get will really be interleaved pairs of fields.
|
|
Depending on what you want to do with the video you may leave it in
|
|
this form, destructively deinterlace, or break the pairs apart into
|
|
individual fields.
|
|
</para>
|
|
<para>
|
|
Otherwise you'll get a movie which is distorted during
|
|
fast-motion scenes and the bitrate controller will be probably even unable
|
|
to retain the specified bitrate as the interlacing artifacts produce high
|
|
amount of detail and thus consume lot of bandwidth. You can enable
|
|
deinterlacing with <option>-vf pp=DEINT_TYPE</option>.
|
|
Usually <option>pp=lb</option> does a good job, but it can be matter of
|
|
personal preference.
|
|
See other deinterlacing algorithms in the manual and give it a try.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>
|
|
Crop out the dead space. When you capture the video, the areas at the edges
|
|
are usually black or contain some noise. These again consume lots of
|
|
unnecessary bandwidth. More precisely it's not the black areas themselves
|
|
but the sharp transitions between the black and the brighter video image
|
|
which do but that's not important for now. Before you start capturing,
|
|
adjust the arguments of the <option>crop</option> option so that all the
|
|
crap at the margins is cropped out. Again, don't forget to keep the resulting
|
|
dimensions sane.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Watch out for CPU load. It shouldn't cross the 90% boundary for most of the
|
|
time. If you have a large capture buffer, <application>MEncoder</application>
|
|
can survive an overload for few seconds but nothing more. It's better to
|
|
turn off the 3D OpenGL screensavers and similar stuff.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Don't mess with the system clock. <application>MEncoder</application> uses the
|
|
system clock for doing A/V sync. If you adjust the system clock (especially
|
|
backwards in time), <application>MEncoder</application> gets confused and you
|
|
will lose frames. This is an important issue if you are hooked to a network
|
|
and run some time synchronization software like NTP. You have to turn NTP
|
|
off during the capture process if you want to capture reliably.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Don't change the <option>outfmt</option> unless you know what you are doing
|
|
or your card/driver really doesn't support the default (YV12 colorspace).
|
|
In the older versions of <application>MPlayer</application>/
|
|
<application>MEncoder</application> it was necessary to specify the output
|
|
format. This issue should be fixed in the current releases and
|
|
<option>outfmt</option> isn't required anymore, and the default suits the
|
|
most purposes. For example, if you are capturing into DivX using
|
|
<systemitem class="library">libavcodec</systemitem> and specify
|
|
<option>outfmt=RGB24</option> in order to increase the quality of the captured
|
|
images, the captured image will be actually later converted back into YV12 so
|
|
the only thing you achieve is a massive waste of CPU power.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
There are several ways of capturing audio. You can grab the sound either using
|
|
your sound card via an external cable connection between video card and
|
|
line-in, or using the built-in ADC in the bt878 chip. In the latter case, you
|
|
have to load the <emphasis role="bold">btaudio</emphasis> driver. Read the
|
|
<filename>linux/Documentation/sound/btaudio</filename> file (in the kernel
|
|
tree, not <application>MPlayer</application>'s) for some instructions on using
|
|
this driver.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
If <application>MEncoder</application> cannot open the audio device, make
|
|
sure that it is really available. There can be some trouble with the sound
|
|
servers like aRts (KDE) or ESD (GNOME). If you have a full duplex sound card
|
|
(almost any decent card supports it today), and you are using KDE, try to
|
|
check the "full duplex" option in the sound server preference menu.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="tv-examples">
|
|
<title>Examples</title>
|
|
|
|
<informalexample><para>
|
|
Dummy output, to AAlib :)
|
|
<screen>mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://</screen>
|
|
</para></informalexample>
|
|
|
|
<informalexample><para>
|
|
Input from standard V4L:
|
|
<screen>
|
|
mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://
|
|
</screen>
|
|
</para></informalexample>
|
|
|
|
<informalexample><para>
|
|
A more sophisticated example. This makes <application>MEncoder</application>
|
|
capture the full PAL image, crop the margins, and deinterlace the picture
|
|
using a linear blend algorithm. Audio is compressed with a constant bitrate
|
|
of 64kbps, using LAME codec. This setup is suitable for capturing movies.
|
|
<screen>
|
|
mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
|
|
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
|
|
-vf crop=720:544:24:16,pp=lb -o <replaceable>output.avi</replaceable> tv://
|
|
</screen>
|
|
</para></informalexample>
|
|
|
|
<informalexample><para>
|
|
This will additionally rescale the image to 384x288 and compresses the
|
|
video with the bitrate of 350kbps in high quality mode. The vqmax option
|
|
looses the quantizer and allows the video compressor to actually reach so
|
|
low bitrate even at the expense of the quality. This can be used for
|
|
capturing long TV series, where the video quality isn't so important.
|
|
<screen>
|
|
mencoder -tv driver=v4l:width=768:height=576 \
|
|
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
|
|
-oac mp3lame -lameopts cbr:br=48 -sws 1 -o <replaceable>output.avi</replaceable>\
|
|
-vf crop=720:540:24:18,pp=lb,scale=384:288 tv://
|
|
</screen>
|
|
It's also possible to specify smaller image dimensions in the
|
|
<option>-tv</option> option and omit the software scaling but this approach
|
|
uses the maximum available information and is a little more resistant to noise.
|
|
The bt8x8 chips can do the pixel averaging only in the horizontal direction due
|
|
to a hardware limitation.
|
|
</para></informalexample>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="tv-teletext">
|
|
<title>Teletext</title>
|
|
|
|
<para>
|
|
Teletext is currently available only in <application>MPlayer</application>
|
|
for v4l and v4l2 drivers.
|
|
</para>
|
|
|
|
<sect2 id="tv-teletext-implementation-notes">
|
|
<title>Implementation notes</title>
|
|
|
|
<para>
|
|
<application>MPlayer</application> supports regular text, graphics and navigation links.
|
|
Unfortunately, colored pages are not fully supported yet - all pages are shown as grayscaled.
|
|
Subtitle pages (also known as Closed Captions) are supported, too.
|
|
</para>
|
|
|
|
<para>
|
|
<application>MPlayer</application> starts caching all teletext pages upon
|
|
starting to receive TV input, so you do not need to wait until the requested page is loaded.
|
|
</para>
|
|
|
|
<para>
|
|
Note: Using teletext with <option>-vo xv</option> causes strange colors.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="tv-teletext-usage">
|
|
<title>Using teletext</title>
|
|
|
|
<para>
|
|
To enable teletext decoding you must specify the VBI device to get teletext data
|
|
from (usually <filename>/dev/vbi0</filename> for Linux). This can be done by specifying
|
|
<option>tdevice</option> in your configuration file, like shown below:
|
|
<screen>tv=tdevice=/dev/vbi0</screen>
|
|
</para>
|
|
|
|
<para>
|
|
You might need to specify the teletext language code for your country.
|
|
To list all available country codes use
|
|
<screen>tv=tdevice=/dev/vbi0:tlang=<replaceable>-1</replaceable></screen>
|
|
Here is an example for Russian:
|
|
<screen>tv=tdevice=/dev/vbi0:tlang=<replaceable>33</replaceable></screen>
|
|
</para>
|
|
|
|
<para>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="tv-teletext-hotkeys">
|
|
<title>Teletext hot keys</title>
|
|
|
|
<informaltable frame="all">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Key</entry>
|
|
<entry>Description</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>X</entry>
|
|
<entry>Switch teletext display on/off</entry>
|
|
</row>
|
|
<row>
|
|
<entry>C</entry>
|
|
<entry>Cycle through teletext rendering modes (opaque, transparent, inverted opaque,
|
|
inverted transparent</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Left/Right</entry>
|
|
<entry>Go to previous/next teletext page</entry>
|
|
</row>
|
|
<row>
|
|
<entry>PageUp/PageDown</entry>
|
|
<entry>Go to next/previous teletext subpage</entry>
|
|
</row>
|
|
<row>
|
|
<entry>digits</entry>
|
|
<entry>Enter teletext page number to jump to</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
</chapter>
|