XINE(5)

✨ NAME ✨

xine β€” a free video player πŸ’–

(also hi, this is XINE(5) from the File Formats Manual β€” the deep-lore file-formats page, not the regular command one, iykyk)


🌈 MRL (media resource locator) 🌈

okay so bestie, an MRL is literally a URL but for your media player. Same vibe as your browser's address bar, except instead of websites it's telling xine what to read from. A valid MRL can be a plain boring file name, or one of these iconic ones (and pls also read the notes at the bottom, they're important):

  • Filesystem:
file:<path>
fifo:<path>
stdin:/
  • CD and DVD:
dvd:/[device_name][/title[.part]]
dvd:/DVD_image_file[/title[.part]]
dvd:/DVD_directory[/title[.part]]
     (use the path of the directory which contains VIDEO_TS)
vcd://[CD_image_or_device_name][@[letter]number]
vcdo://track_number
cdda:/[device][/track_number]
  • Video devices:
v4l://[tuner_device/frequency]
v4l2://tuner_device
dvb://channel_number
     (nth channel in your channels.conf)
dvb://channel_name
dvbc://channel_name:tuning_parameters
dvbs://channel_name:tuning_parameters
dvbt://channel_name:tuning_parameters
dvba://channel_name:tuning_parameters
pvr:/tmp_files_path!saved_files_path!max_page_age
     (for WinTV PVR 250 and 350)
  • Network:
http://host...
tcp://host[:port]
udp://host[:port[?iface=interface]]
rtp://host[:port[?iface=interface]]
     (default port for tcp, udp and rtp is 7658)
smb://...
mms://host...
pnm://host...
rtsp://host...  (requires Real codecs)

More input plugins will hand you more MRL types β€” the ones above are what you get with stock libxine. πŸ’…

⚠️ NOTE: when a file name is needed, you have to give the full path, no shortcuts. From a shell you can normally use "$PWD/file" or "$(pwd)/file" or "pwd/file" if the file lives in the current directory. (Which one works depends on your shell; all three work in bash. Also, normal URL encoding rules apply; the % character in particular must be encoded as %25.)

As of xine-lib 1.1.3, the DVD title number can be 0 (that selects navigation) and the chapter number can be 0 (that's the full title). πŸŽ€


πŸ¦‹ VCD MRL Syntax πŸ¦‹

A plain vcd:/ runs the default item (like, maybe track 1 or entry 0) using the default VCD device (maybe /dev/cdrom). Both the default item and the default device are user-configurable, so it's giving your setup, not a fixed rule.

But you can also spell out both the Video CD device/filename and the item explicitly in the MRL. Slay.

For example, vcd:/dev/dvd picks the default entry using device /dev/dvd β€” which is handy if that's your DVD drive and it's a different thing from your CD-ROM device, and your DVD drive can play CDs. And vcd://test_svcd_ntsc.cue names the cue file for a CD image on disk. (test_svcd_ntsc.bin is the matching bin file, but using that one won't work β€” noted. 😭)

After the optional device name or file name, you can name the kind of unit, preceded by a colon. An MRL that ends in a colon is exactly like not adding it at all: the default entry type and number get used. Items come in 4 flavours: "Track", "Entry", "Playback" and "Segment". These units are indicated with the capital first letter of each type: T, E, P, S, s. An uppercase S in the MRL display means a NTSC segment while a lowercase s means a PAL segment. But when you type an MRL, the case of these letters is insignificant. ✨

Depending on the Video CD, you might not have any playable segments (S,s) or playback control (P). If you give a MRL that refers to a playback control entry but there's no playback control, your playback number gets silently converted into the corresponding entry number. The way that it just quietly does that… πŸ’€

You can configure various things that affect which MRLs get selected when there's some ambiguity in the MRL name. media.vcd.autoplay sets what kind of unit to use in a MRL if none is given. Another configuration setting, vcd.device, determines what device to use if that part isn't given. When you hit the VCD button, that's equivalent to entering vcd:/, and thus these two configuration settings get used to expand the MRL. 🫢

Some examples of MRLs are below. In the examples, we assume the following configuration settings:

  • vcd:// β€” Play (navigate) default item (in this case Entry ID 0) from the default device (in this case set to /dev/cdrom)
  • vcd://@ β€” Same as above
  • vcd:///dev/cdrom@ β€” Same effect as above since the default device is set to /dev/cdrom.
  • vcd:///dev/cdrom@E0 β€” Same as above. But note that this is because we have autoplay:entry which is no longer the default value.
  • vcd:///dev/cdrom2@ β€” Play (navigate) the default item of /dev/cdrom2
  • vcd:///dev/cdrom2 β€” should be same as above but is currently broken?
  • vcd:///dev/cdrom2@T1 β€” Play Track 1 from /dev/cdrom2
  • vcd:///dev/cdrom@S1 β€” Play segment 1 from /dev/cdrom. This assumes that there is a segment 1. Check the MRL list to see if that is the case.
  • vcd://@P1 β€” Play playlist item 1 from default device. If there is no playback control, the MRL will be converted into vcd:/@E0. Again check the MRL list to see if there is a P1.
  • vcd://@P1* β€” Probably same as above.
  • vcd:///dev/cdrom@E1 β€” Play Entry id 1 from default device.
  • vcd://@S0 β€” Play segment 0 from default device.
  • vcd://@3 β€” Play track 3 from default device.
  • vcd:///dev/cdrom2:1 β€” Play track 1 from /dev/cdrom2.
  • vcd:///tmp/ntsc.cue@ β€” Play default item (E0) of /tmp/ntsc.bin. Note trailing @.
  • vcd://ntsc.cue/@E0 β€” Play entry 0 of ntsc.bin.
  • vcd:///tmp/ntsc.nrg/@E0 β€” Play entry 0 of /tmp/ntsc.nrg (Nero file). Works for some simple Nero images.

πŸ“‘ DVB πŸ“‘

DVB MRLs require that xine-lib/channels.conf exists in $XDG_CONFIG_HOME/ or ~/.config/ and contains valid data. You can get that by generating a tuning file with the LinuxTV DVB apps utility scan (or dvbscan if you're on a version newer than 1.1.0):

scan -o zap /usr/share/doc/dvb-utils/examples/scan/dvb-t/uk-PontopPike
>~/.config/xine-lib/channels.conf

(This example is for the writer's local transmitter, using a file from the Debian dvb-utils package. cute of them πŸŽ€)

For the dvbc, dvbs and dvbt MRLs, tuning parameters are expected, in one of these forms:

DVB-S  <frequency>:<polarisation>:<sat-no>:<sym-rate>:<vpid>:<apid>:<service-id>

DVB-C  <frequency>:<inversion>:<sym-rate>:<fec>:<qam>:<vpid>:<apid>:<service-id>

DVB-T  <frequency>:<inversion>:<bw>:<fec-hp>:<fec-lp>:<qam>:<transmission-mode>:<guardlist>:<hierarchy-info>:<vpid>:<apid>:<service-id>

DVB-A  <frequency>:<qam>:<vpid>:<apid>:<service-id>

The individual parameters are:

  • frequency β€” number, usually in kHz
  • polarisation β€” v or h
  • sat-no β€” unsigned long, usually 0
  • sym-rate β€” symbol rate in MSyms/sec
  • inversion β€” INVERSION_ON, INVERSION_OFF, INVERSION_AUTO
  • fec, fec-hp, fec-lp β€” FEC_1_2, FEC_2_3, FEC_3_4 ... FEC_8_9, FEC_AUTO, FEC_NONE
  • qam β€” QPSK, QAM_128, QAM_16 ...
  • bw β€” BANDWIDTH_6_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_8_MHZ
  • transmission-mode β€” TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K
  • guardlist β€” GUARD_INTERVAL_1_4, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_32,
  • hierarchy-info β€” HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_NONE
  • vpid β€” video program ID
  • apid β€” audio program ID
  • service-id β€” service ID (needed for now/next information etc.)

The following keyboard & mouse inputs may be accepted:

  • Menu 2 β€” Start/stop recording
  • Menu 3 β€” Toggle zoom
  • Menu 7 β€” Toggle now/next display
  • Previous/Next Chapter β€” Previous/next channel
  • Mouse wheel & button 1 β€” Scroll through channel list & select the highlighted channel

πŸ’œ SUBTITLE πŸ’œ

external subtitle files (any mrl)

Text subtitle files may be appended to the MRL:.

  • <mrl>#subtitle:<subtitlefile> β€” This is the normal way to define the subtitle file to use. The frontend will not take any notice of the subtitle file. For example:
file://home/user/wibble.mpg#subtitle:/home/user/wibble.sub

(Note that some front ends can detect subtitles files where the name differs as shown in the example. ✨)


πŸ”₯ STREAM OPTIONS πŸ”₯

After a delimiting # you can add several stream parameters:

  • novideo β€” Video will be ignored.
  • noaudio β€” Audio will be ignored.
  • nospu β€” Subpictures will be ignored.
  • demux:<demux name> β€” Specify the demux plugin to use.
  • volume:<level> β€” Set audio volume.
  • compression:<level> β€” Set audio dynamic range compression.
  • <config entry>:<config value> β€” Assign a new value to any config entry.
  • save:<file> β€” Save the stream (if allowed) to the named file, relative to the directory given by the option "media.capture.save_dir".
  • change configuration option 'on the fly': β€” You can change a configuration option at any time, using the special cfg:/ MRL style. The syntax is:
cfg:/<config entry> : <config value>

Unlike stream config option, you can change anything before playing the stream.


🌟 SEE ALSO 🌟

xine(1), aaxine(1), gxine(1), toxine(1), totem(1), kaffeine(1) ...

The programs are documented fully on the xine home page: http://www.xine-project.org/


πŸ‘‘ AUTHOR πŸ‘‘

This text was extracted from the xine man page by Darren Salt <dsalt@users.sourceforge.net>. The xine man page was written by Siggi Langauf <siggi@debian.org> for the xine project. Lots of additions by Guenter Bartsch <guenter@users.sourceforge.net>, Daniel Caujolle-Bert <f1rmb@users.sourceforge.net>, Rocky Bernstein <rocky@panix.com>, and Philipp Hahn <pmhahn@users.sourceforge.net>.


and that's the whole thing bestie, ily, go play some video files πŸ’–

✧ The xine project ✧ 2005-06-15 ✧ XINE(5) ✧