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 abovevcd:///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 haveautoplay:entrywhich is no longer the default value.vcd:///dev/cdrom2@β Play (navigate) the default item of/dev/cdrom2vcd:///dev/cdrom2β should be same as above but is currently broken?vcd:///dev/cdrom2@T1β Play Track 1 from/dev/cdrom2vcd:///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 intovcd:/@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 ofntsc.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 kHzpolarisationβvorhsat-noβ unsigned long, usually 0sym-rateβ symbol rate in MSyms/secinversionβINVERSION_ON,INVERSION_OFF,INVERSION_AUTOfec,fec-hp,fec-lpβFEC_1_2,FEC_2_3,FEC_3_4...FEC_8_9,FEC_AUTO,FEC_NONEqamβQPSK,QAM_128,QAM_16...bwβBANDWIDTH_6_MHZ,BANDWIDTH_7_MHZ,BANDWIDTH_8_MHZtransmission-modeβTRANSMISSION_MODE_2K,TRANSMISSION_MODE_8Kguardlistβ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_NONEvpidβ video program IDapidβ audio program IDservice-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) β§
π¦ where this page comes from
- arch rolling: xine-lib 1.2.13-23 Β· GPL-2.0-or-later AND LGPL-2.0-or-later
- debian bookworm: libxine2-bin 1.2.13-1 Β· GPL-2.0-or-later
- debian trixie: libxine2-bin 1.2.13+hg20240723-3+b1 Β· GPL-2.0-or-later
- epel 10: xine-lib 1.2.13-17.el10_0 Β· GPL-2.0-or-later
- epel 9: xine-lib 1.2.13-18.el9 Β· GPL-2.0-or-later
- fedora 43: xine-lib 1.2.13-25.fc43 Β· GPL-2.0-or-later
- fedora 43: xine-lib 1.2.13-25.fc43 Β· GPL-2.0-or-later
- fedora 44: xine-lib 1.2.13-29.fc44 Β· GPL-2.0-or-later
- fedora 44: xine-lib 1.2.13-29.fc44 Β· GPL-2.0-or-later
- nixpkgs unstable: xine-lib 1.2.13-unstable-2025-11-03
- ubuntu jammy: libxine2-bin 1.2.11-2 Β· GPL-2.0-or-later
- ubuntu noble: libxine2-bin 1.2.13+hg20230710-2ubuntu6 Β· GPL-2.0-or-later
- ubuntu questing: libxine2-bin 1.2.13+hg20240723-3build1
- ubuntu resolute: libxine2-bin 1.2.13+hg20251029-2 Β· GPL-2.0-or-later
- ubuntu stonking: libxine2-bin 1.2.13+hg20251029-2build1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms