mirror of
https://github.com/mpv-player/mpv
synced 2024-12-21 06:14:32 +00:00
47d35ca6be
vorbis is the builtin bad vorbis encoder; whenever possible, one should rather use the "libvorbis" codec name.
145 lines
5.0 KiB
ReStructuredText
145 lines
5.0 KiB
ReStructuredText
General usage
|
|
=============
|
|
|
|
::
|
|
|
|
mpv infile -o outfile [-of outfileformat] [-ofopts formatoptions] \
|
|
[-ofps outfps | -oautofps] [-oharddup] [-ocopyts | -orawts] [-oneverdrop] \
|
|
[(any other mpv options)] \
|
|
-ovc outvideocodec [-ovcopts outvideocodecoptions] \
|
|
-oac outaudiocodec [-oacopts outaudiocodecoptions]
|
|
|
|
Help for these options is provided if giving help as parameter, as in::
|
|
|
|
mpv -ovc help
|
|
|
|
The suboptions of these generally are identical to ffmpeg's (as option parsing
|
|
is simply delegated to ffmpeg). The option -ocopyts enables copying timestamps
|
|
from the source as-is, instead of fixing them to match audio playback time
|
|
(note: this doesn't work with all output container formats); -orawts even turns
|
|
off discontinuity fixing.
|
|
|
|
Note that if neither -ofps nor -oautofps is specified, VFR encoding is assumed
|
|
and the time base is 24000fps. -oautofps sets -ofps to a guessed fps number
|
|
from the input video. Note that not all codecs and not all formats support VFR
|
|
encoding, and some which do have bugs when a target bitrate is specified - use
|
|
-ofps or -oautofps to force CFR encoding in these cases.
|
|
|
|
Of course, the options can be stored in a profile, like this .mpv/config
|
|
section::
|
|
|
|
[myencprofile]
|
|
vf-add = scale=480:-2
|
|
ovc = libx264
|
|
ovcopts-add = preset=medium,tune=fastdecode
|
|
ovcopts-add = crf=23
|
|
ovcopts-add = maxrate=1500k,bufsize=1000k,rc_init_occupancy=900k,refs=2
|
|
ovcopts-add = profile=baseline
|
|
oac = aac
|
|
oacopts-add = b=96k
|
|
|
|
One can then encode using this profile using the command::
|
|
|
|
mpv infile -o outfile.mp4 -profile myencprofile
|
|
|
|
Some example profiles are provided in a file
|
|
etc/encoding-example-profiles.conf; as for this, see below.
|
|
|
|
|
|
Encoding examples
|
|
=================
|
|
|
|
These are some examples of encoding targets this code has been used and tested
|
|
for.
|
|
|
|
Typical MPEG-4 Part 2 ("ASP", "DivX") encoding, AVI container::
|
|
|
|
mpv infile -o outfile.avi \
|
|
-ofps 25 \
|
|
-ovc mpeg4 -ovcopts qscale=4 \
|
|
-oac libmp3lame -oacopts ab=128k
|
|
|
|
Note: AVI does not support variable frame rate, so -ofps must be used. The
|
|
frame rate should ideally match the input (25 for PAL, 24000/1001 or 30000/1001
|
|
for NTSC)
|
|
|
|
Typical MPEG-4 Part 10 ("AVC", "H.264") encoding, Matroska (MKV) container::
|
|
|
|
mpv infile -o outfile.mkv \
|
|
-ovc libx264 -ovcopts preset=medium,crf=23,profile=baseline \
|
|
-oac libvorbis -oacopts qscale=3
|
|
|
|
Typical MPEG-4 Part 10 ("AVC", "H.264") encoding, MPEG-4 (MP4) container::
|
|
|
|
mpv infile -o outfile.mp4 \
|
|
-ovc libx264 -ovcopts preset=medium,crf=23,profile=baseline \
|
|
-oac aac -oacopts ab=128k
|
|
|
|
Typical VP8 encoding, WebM (restricted Matroska) container::
|
|
|
|
mpv infile -o outfile.mkv \
|
|
-of webm \
|
|
-ovc libvpx -ovcopts qmin=6,b=1000000k \
|
|
-oac libvorbis -oacopts qscale=3
|
|
|
|
|
|
Device targets
|
|
==============
|
|
|
|
As the options for various devices can get complex, profiles can be used.
|
|
|
|
An example profile file for encoding is provided in
|
|
etc/encoding-example-profiles.conf in the source tree. You can include it into
|
|
your configuration by doing::
|
|
|
|
mkdir -p ~/.mpv
|
|
curl https://raw.github.com/mpv-player/mpv/master/etc/encoding-example-profiles.conf \
|
|
> ~/.mpv/encoding-profiles.conf
|
|
echo "include = $HOME/.mpv/encoding-profiles.conf" >> ~/.mpv/config
|
|
|
|
Refer to the top of that file for more comments - in a nutshell, the following
|
|
options are added by it::
|
|
|
|
-profile enc-to-dvdpal DVD-Video PAL, use dvdauthor -v pal+4:3 -a ac3+en
|
|
-profile enc-to-dvdntsc DVD-Video NTSC, use dvdauthor -v ntsc+4:3 -a ac3+en
|
|
-profile enc-to-bb-9000 MP4 for Blackberry Bold 9000
|
|
-profile enc-to-nok-6300 3GP for Nokia 6300
|
|
-profile enc-to-psp MP4 for PlayStation Portable
|
|
-profile enc-to-iphone MP4 for iPhone
|
|
-profile enc-to-iphone-4 MP4 for iPhone 4 (double res)
|
|
-profile enc-to-iphone-5 MP4 for iPhone 5 (even larger res)
|
|
|
|
You can encode using these with a command line like::
|
|
|
|
mpv infile -o outfile.mp4 -profile enc-to-bb-9000
|
|
|
|
Of course, you are free to override options set by these profiles by specifying
|
|
them after the -profile option.
|
|
|
|
|
|
What works
|
|
==========
|
|
|
|
* Encoding at variable frame rate (default)
|
|
* Encoding at constant frame rate using -ofps framerate -oharddup
|
|
* 2-pass encoding (specify flags=+pass1 in the first pass's -ovcopts, specify
|
|
flags=+pass2 in the second pass)
|
|
* Hardcoding subtitles using vobsub, ass or srt subtitle rendering (just
|
|
configure mpv for the subtitles as usual)
|
|
* Hardcoding any other mpv OSD (e.g. time codes, using -osdlevel 3 and -vf
|
|
expand=::::1)
|
|
* Encoding directly from a DVD, network stream, webcam, or any other source
|
|
mpv supports
|
|
* Using x264 presets/tunings/profiles (by using profile=, tune=, preset= in the
|
|
-ovcopts)
|
|
* Deinterlacing/Inverse Telecine with any of mpv's filters for that
|
|
* Audio file converting: mpv -o outfile.mp3 infile.flac -no-video -oac
|
|
libmp3lame -oacopts ab=320k
|
|
* inverse telecine filters (confirmed working: detc, pullup, filmdint)
|
|
|
|
What does not work yet
|
|
|
|
* 3-pass encoding (ensuring constant total size and bitrate constraints while
|
|
having VBR audio; mencoder calls this "frameno")
|
|
* Direct stream copy
|