MPlayer

From LinuxTVWiki
Revision as of 13:28, 22 June 2009 by Jon2856 (Talk | contribs)

Jump to: navigation, search

The Linux video "Swiss Army knife", which plays almost every movie format imaginable [1].

The player is rock solid playing damaged MPEG files (useful for some VCDs), and it plays bad AVI files which are unplayable with the famous windows media player. Even AVI files without index chunk are playable, and you can temporarily rebuild their indexes with the -idx option, or permanently with MEncoder, thus enabling seeking! As you see, stability and quality are the most important things, but the speed is also amazing. There is also a powerful filter system for video and audio manipulation. [2]

In addition, MPlayer can serve as a TV viewer application for both analogue TV or DVB.

Useful MPlayer Keyboard Hotkeys When Watching TV

These are global settings applicable for either analogue or DVB.

You can change the channel and control the volume with those keys:

Keys Meaning
/ and * Decrease/increase volume
9 and 0 Decrease/increase volume
m Mute sound
h and k Select previous/next channel

For more info about MPlayer command line parameters and other control keys, please read the MPlayer man page

Watching Analogue TV

A sample MPlayer command line that will play TV for Europe, channel E2, for devices that use analog audio wired from the TV card audio output into the aux or cd audio input on the motherboard or on the audio card:

 mplayer tv:// -tv driver=v4l2:norm=PAL:input=0:amode=1:width=384:height=288:outfmt=yv12:device=/dev/video0:chanlist=europe-west:channel=E2

If your board provides a digital audio input, don't forget to load the alsa module for it. In this case, you'll need to teach mplayer to read the audio stream as well. This is an example of using mplayer for viewing TV on a NTSC video stream, reading also the audio stream:

 mplayer -tv driver=v4l2:device=/dev/video0:norm=NTSC:chanlist=us-bcast:channel=10:alsa=1:adevice=hw.1:audiorate=48000:immediatemode=0:amode=1 tv://

In this case, it is assumed that the -alsa module created as the second audio adapter (hw:1), and supports an audio rate of 48 kHz. There are more useful information about audio setups with alsa modules on Saa7134-alsa.

To avoid having to specify all the above parameters, it is recommended to write them to the ~/.mplayer/config:

 zoom          = yes
 vo            = x11
 tv            = "driver=v4l2:device=/dev/video0:norm=NTSC:chanlist=us-bcast:channel=10:alsa=1:adevice=hw.1:audiorate=48000:immediatemode=0:amode=1"
 monitoraspect = "16:9"

Watching DVB Streams

One method of using MPlayer to watch DVB streams is outlined in the Testing your DVB device article. However, it is a convoluted solution, and is much more suited for testing purposes rather then daily use. A much simpler and convenient method is outlined below.

Note: The following methods require that you configure a channels.conf file and store it in ~/.mplayer (instructions on how to do this are detailed in the Testing your DVB device article) before you can actually use MPlayer to view or record DVB streams.

You can start watching DVB streams with MPlayer simply by typing:

 $ mplayer dvb:// 

That command will result in the first channel listed in your channels.conf being displayed

You can then move forward through your channel list by pressing h (next) on your keyboard. Conversely, pressing k (previous) on your keyboard will move backwards through your channel list.

Of course, for even better results, you may wish to run MPlayer with some options (mplayer dvb:// <options>). For example, to utilise linear blend deinterlacing for display/playback, run:

 $ mplayer dvb:// -vf pp=lb

You may have to force demuxer type for better results. For example, for a DVB-T device (all DVB devices?):

 $ mplayer dvb:// -demuxer mpegts

See the MPlayer man page (i.e. in a console run "man mplayer") for a lengthy list of available options (an online version is found below in the links section).

If you wish to open a specific DVB stream (as listed in the channels.conf file), type:

 $ mplayer dvb://"STREAM NAME" <options>
Note: Around the stream name you can use double parenthesis, single parenthesis, or none at all

If you have more than one DVB device installed in your system you can specify the device to use by passing the device number in the command syntax:

$ mplayer dvb://"Device Number"@"STREAM NAME" <options>

MPlayer uses device numbers of 1-4

Again, to avoid having to specify all the above parameters, it is recommended to write them to the ~/.mplayer/config file.

Limitations with DVB Streams

  • Only free-to-air broadcasts are supported. Decryption through CAM is not implemented in MPlayer.

But you can use virtual interface such as sasc-ng or utilite ca_zap from dvb-apps/util:

cat ~/.mplayer/channels.conf:
#Eutelsat W4 36' 
Sport 1:11727:h:0:27500:101:201:1
Sport 2:11727:h:0:27500:102:202:2
First Automotive:11727:h:0:27500:103:203:3
BIZ TV:11727:h:0:27500:105:205:5
RUTV:11727:h:0:27500:109:209:9
O2TV:11727:h:0:27500:110:210:10
RTVi:11727:h:0:27500:111:211:11
ca_zap -m -c ~/.mplayer/channels.conf -t sat -a 0 -n 'Sport 1'
mplayer dvb://'0@Sport 1'
  • There is (presently) no DVB subtitle support in MPlayer.

Recording DVB Streams

If you want to record a DVB stream with MPlayer, you can use:

 $ mplayer -dumpstream dvb://"STREAM NAME" -dumpfile stream.ts

This will dump the stream in MPEG-TS format to the file stream.ts (Note that this file can be very large - ~1GB for 30 minutes).

You can then use MPlayer or MEncoder, a command-line encoder built on the MPlayer code, to convert that file to a usable video format.

There is even more functionality in MEncoder when it comes to recording streams.

MPlayer and Satellite Dishes

If you are using MPlayer with a satellite dish that has a C-Band lnb LO: 5150 or standard Ku Band lnb LO: 10750 such as are commonly used in North America, MPlayer will tune the channel if you use the L Band frequency in your .mplayer/channels.conf file instead of the C or Ku Band frequency. To calculate the L Band frequency for C Band, 5150 minus frequency in Mhz equals L Band frequency in Mhz. For Ku Band, frequency in Mhz minus 10750 equals L Band frequency in Mhz.

For example to tune C Band 4.060 Ghz

5150 - 4060 = 1090

Use 1090 for the frequency in channels.conf instead of 4060.

For Ku Band 11.799 Ghz

11799 - 10750 = 1049

High Quality Video Playback

MPlayer will play almost anything with the default settings, but with careful selection of the command line parameters (i.e. test samples, trial-and-error and patience) it is possible to achieve very high quality video playback. Type "man mplayer". Pay particular attention to

  • Video Output Driver (-vo option)
    • xv is reliable
    • vdpau may be useful if you have an nvidia card (and not enough CPU)
  • Deinterlacing
  • Upscaling
    • -vf scale with -sws 9 is very good (at the cost of CPU)
  • Buffering
  • Vertical sync (check for tearing artefacts in the video)
    • check video card options, desktop compositing, OpenGL
    • video card frame rate should equal (or be a multiple of) video frame rate
  • Audio sync
    • -delay option
  • Screensaver
    • ensure it is disabled when playing video and reenabled afterwards
  • Resolutions
    • you will probably need different settings for SD and HD
  • Smoothness
    • check news tickers for smooth flow and readability

Also See

  • BBC HD (Patches and Info for Watching BBC HD on Astra 28.8e)

External Links