2012-09-14 15:51:26 +00:00
#
2012-10-11 00:04:08 +00:00
# mpv configuration file
2012-09-14 15:51:26 +00:00
#
#########################
# encoding profile file #
#########################
#
2013-12-28 15:32:49 +00:00
# Note: by default, this file is installed to /etc/mpv/encoding-profiles.conf
# (or a different location, depending on --prefix). mpv will load it by
# default on program start. If ~/.mpv/encoding-profiles.conf exists, this file
# will be loaded instead.
2012-09-14 15:51:26 +00:00
#
# Then, list all profiles by
2017-04-05 17:00:34 +00:00
# mpv -profile help -o - | grep enc-
2012-09-14 15:51:26 +00:00
#
# The following kinds of encoding profiles exist:
# enc-a-*: initialize an audio codec including good defaults
# enc-v-*: initialize a video codec including good defaults
# enc-f-*: initialize a file format including good defaults, including
# selecting and initializing a good audio and video codec
# enc-to-*: load known good settings for a target device; this typically
# includes selecting an enc-f-* profile, then adjusting some
# settings like frame rate, resolution and codec parameters
#
# AFTER including a profile of these, you can of course still change
# options, or even switch to another codec.
#
# You can view the exact options a profile sets by
2017-04-05 17:00:34 +00:00
# mpv -show-profile enc-to-hp-slate-7
2012-09-14 15:51:26 +00:00
#
# Examples:
2012-10-11 00:04:08 +00:00
# mpv -profile enc-to-dvdpal -o outfile.mpg infile.mkv
# mpv -profile enc-f-avi -ofps 30 -o outfile.avi infile.mkv
2012-11-15 14:42:06 +00:00
# mpv -profile enc-v-mpeg4 -ovcopts-add qscale=7 -profile enc-a-mp3 -oacopts-add b=320k -o outfile.avi infile.mkv
2012-09-14 15:51:26 +00:00
################
# audio codecs #
################
[enc-a-aac]
2017-04-05 17:00:34 +00:00
profile-desc = "AAC (libfdk-aac or FFmpeg)"
oac = libfdk_aac,aac
2012-12-01 16:16:51 +00:00
oacopts = b=96k
2012-09-14 15:51:26 +00:00
[enc-a-ac3]
profile-desc = "AC3 (FFmpeg)"
oac = ac3
oacopts = b=448k
[enc-a-mp3]
profile-desc = "MP3 (LAME)"
oac = libmp3lame
oacopts = b=128k
[enc-a-vorbis]
2017-04-05 17:00:34 +00:00
profile-desc = "Vorbis (libvorbis or FFmpeg)"
2013-03-31 17:13:06 +00:00
oac = libvorbis,vorbis
2012-11-15 14:42:06 +00:00
oacopts = qscale=3
2012-09-14 15:51:26 +00:00
2017-04-05 17:00:34 +00:00
[enc-a-opus]
profile-desc = "Opus (libopus or FFmpeg)"
oac = libopus,opus
audio-samplerate = 48000
oacopts = b=96k
2012-09-14 15:51:26 +00:00
################
# video codecs #
################
[enc-v-h263]
profile-desc = "H.263 (FFmpeg)"
ovc = h263
2012-11-15 14:42:06 +00:00
ovcopts = qscale=4
2012-09-14 15:51:26 +00:00
[enc-v-h264]
profile-desc = "H.264 (x264)"
ovc = libx264
ovcopts = preset=medium,crf=23,threads=0
2013-10-30 09:30:49 +00:00
vf-add = noformat=444p,noformat=444p9,noformat=444p10,noformat=422p,noformat=422p9,noformat=422p10
2012-09-14 15:51:26 +00:00
[enc-v-mpeg2]
profile-desc = "MPEG-2 Video (FFmpeg)"
ovc = mpeg2video
ovcopts-clr = yes
[enc-v-mpeg4]
profile-desc = "MPEG-4 Part 2 (FFmpeg)"
ovc = mpeg4
2012-11-15 14:42:06 +00:00
ovcopts = qscale=4
2012-09-14 15:51:26 +00:00
[enc-v-vp8]
profile-desc = "VP8 (libvpx)"
2012-12-28 10:21:35 +00:00
ovc = libvpx
2017-04-05 17:00:34 +00:00
ovcopts = speed=0,lag-in-frames=8,slices=2,threads=0,b=2M,crf=10,qmin=0,qmax=36
[enc-v-vp9]
profile-desc = "VP9 (libvpx)"
ovc = libvpx-vp9
ovcopts = speed=6,lag-in-frames=8,slices=2,threads=0,crf=18,qmin=0,qmax=36
2012-09-14 15:51:26 +00:00
###########
# formats #
###########
[enc-f-3gp]
profile-desc = "H.263 + AAC (for 3GP)"
of = 3gp
ocopyts = yes
profile = enc-v-h263
profile = enc-a-aac
ofopts-clr = yes
[enc-f-avi]
profile-desc = "MPEG-4 + MP3 (for AVI)"
of = avi
ocopyts = no
oautofps = yes
profile = enc-v-mpeg4
profile = enc-a-mp3
ofopts-clr = yes
[enc-f-mp4]
profile-desc = "H.264 + AAC (for MP4)"
of = mp4
ocopyts = yes
profile = enc-v-h264
profile = enc-a-aac
ofopts-clr = yes
[enc-f-webm]
2017-04-05 17:00:34 +00:00
profile-desc = "VP9 + Opus (for WebM)"
2012-09-14 15:51:26 +00:00
of = webm
ocopyts = yes
2017-04-05 17:00:34 +00:00
profile = enc-v-vp9
profile = enc-a-opus
2012-09-14 15:51:26 +00:00
ofopts-clr = yes
##################
# target devices #
##################
[enc-to-dvdpal]
2012-09-29 13:04:40 +00:00
profile-desc = "DVD-Video PAL, use dvdauthor -v pal -a ac3+en (MUST be used with 4:3 or 16:9 aspect, and 720x576, 704x576, 352x576 or 352x288 resolution)"
2012-09-14 15:51:26 +00:00
profile = enc-v-mpeg2
profile = enc-a-ac3
of = dvd
ofopts-add = packetsize=2048,muxrate=10080000
ofps = 25
oharddup = yes
2012-09-29 13:04:40 +00:00
ovfirst = yes # dvdauthor needs this
2014-04-24 15:56:26 +00:00
audio-samplerate = 48000
2012-09-14 15:51:26 +00:00
ovcopts-add = g=15,b=6000000,maxrate=9000000,minrate=0,bufsize=1835008
[enc-to-dvdntsc]
2012-09-29 13:04:40 +00:00
profile-desc = "DVD-Video NTSC, use dvdauthor -v ntsc -a ac3+en (MUST be used with 4:3 or 16:9 aspect, and 720x480, 704x480, 352x480 or 352x240 resolution)"
2012-09-14 15:51:26 +00:00
profile = enc-v-mpeg2
profile = enc-a-ac3
of = dvd
ofopts-add = packetsize=2048,muxrate=10080000
ofps = 24000/1001
oharddup = yes
2012-09-29 13:04:40 +00:00
ovfirst = yes # dvdauthor needs this
2014-04-24 15:56:26 +00:00
audio-samplerate = 48000
2012-09-14 15:51:26 +00:00
ovcopts-add = g=18,b=6000000,maxrate=9000000,minrate=0,bufsize=1835008
2013-03-04 11:14:59 +00:00
[enc-to-nok-n900]
profile-desc = "MP4 for Nokia N900"
profile = enc-f-mp4
2013-10-30 09:30:49 +00:00
# DW = 800, DH = 480, SAR = 1
2013-11-07 16:54:16 +00:00
vf-add = lavfi=graph="scale=floor(min(min(800\,dar*480)\,in_w*max(1\,sar))/2+0.5)*2:floor(min(min(800/dar\,480)\,in_h*max(1/sar\,1))/2+0.5)*2,setsar=sar=1"
2013-03-20 15:01:04 +00:00
ovcopts-add = profile=baseline,level=30,maxrate=10000k,bufsize=10000k,rc_init_occupancy=9000k,refs=5
2013-06-09 13:37:28 +00:00
omaxfps = 30
2013-03-04 11:14:59 +00:00
2012-09-14 15:51:26 +00:00
[enc-to-nok-6300]
profile-desc = "3GP for Nokia 6300"
profile = enc-f-3gp
ofps = 25
2017-04-05 17:00:34 +00:00
vf-add = lavfi=graph="scale=176:144"
2014-04-24 15:56:26 +00:00
audio-samplerate = 16000
audio-channels = 1
2012-09-14 15:51:26 +00:00
oacopts-add = b=32k
2013-10-30 09:30:49 +00:00
[enc-to-hp-slate-7]
profile-desc = "MP4 for HP Slate 7 (1024x600, crazy aspect)"
profile = enc-f-mp4
omaxfps = 30
ovcopts-add = profile=high
# DW = 1024, DH = 600, DAR = 97:54 (=> SAR = 2425:2304)
2013-11-07 16:54:16 +00:00
vf-add = lavfi=graph="scale=floor(min(1024*min(1\,dar/(97/54))\,in_w)/2+0.5)*2:floor(min(600*min((97/54)/dar\,1)\,in_h)/2+0.5)*2,setsar=sar=sar/(2425/2304)"
2013-10-30 09:30:49 +00:00
# Advanced scaling for specific output devices - how it works:
# DW = display width (px) (1024)
# DH = display height (px) (600)
# SAR = display sample aspect ratio, i.e. DAR * DH / DW (2425:2304)
# DAR = display aspect ratio, i.e. SAR * DW / DH (97:54)
# Variant: zoomed out
2013-11-07 16:54:16 +00:00
# vf-add = lavfi=graph="scale=floor(min(DW*min(1\,dar/DAR)\,in_w*max(1\,sar/SAR))/2+0.5)*2:floor(min(DH*min(DAR/dar\,1)\,in_h*max(SAR/sar\,1))/2+0.5)*2,setsar=sar=1"
2013-10-30 09:30:49 +00:00
# Variant: zoomed in
2013-11-07 16:54:16 +00:00
# vf-add = lavfi=graph="scale=floor(min(DW*max(1\,dar/DAR)\,in_w*max(1\,sar/SAR))/2+0.5)*2:floor(min(DH*max(DAR/dar\,1)\,in_h*max(SAR/sar\,1))/2+0.5)*2,setsar=sar=1"
2013-10-30 09:30:49 +00:00
# How it works:
# 1a: DW, DH*dar/DAR - fit to display width
# 1b: DH*DAR/dar, DH - fit to display height
# 1: the min of 1a and 1b these (i.e. fit inside both width and height); for zoomed in view, use the max
# 2a: in_w, in_h*SAR/sar - fit to original width
# 2b: in_w*sar/SAR, in_h - fit to original height
# 2: the max of 2a and 2b (i.e. avoid enlarging both dimensions - let HW scaling handle this)
# output: the min of 1 and 2 (i.e. fulfill both constraints)
2013-11-07 16:54:16 +00:00
# setsar=sar=1 to prevent scaling on the device (skip this if the device actually wants the proper SAR to be specified for not performing needless scaling)
2013-10-30 09:30:49 +00:00
#
# Simplified special case for SAR == 1, DAR == DW/DH:
# Variant: zoomed out
2013-11-07 16:54:16 +00:00
# vf-add = lavfi=graph="scale=floor(min(min(DW\,dar*DH)\,in_w*max(1\,sar))/2+0.5)*2:floor(min(min(DW/dar\,DH)\,in_h*max(1/sar\,1))/2+0.5)*2,setsar=sar=1"
2013-10-30 09:30:49 +00:00
# Variant: zoomed in
2013-11-07 16:54:16 +00:00
# vf-add = lavfi=graph="scale=floor(min(max(DW\,dar*DH)\,in_w*max(1\,sar))/2+0.5)*2:floor(min(max(DW/dar\,DH)\,in_h*max(1/sar\,1))/2+0.5)*2,setsar=sar=1"
# setsar=sar=1 to prevent nasty almost-1 SAR to be passed to the codec due to the rounding which can fail
2013-10-31 04:30:17 +00:00
#
# If the device supports file SAR properly, we can make use of it to avoid
2013-11-07 16:54:16 +00:00
# upscaling. The setsar=sar=sar/SAR at the end serves to fake the SAR for devices that don't know their own display's SAR.
2013-10-31 04:30:17 +00:00
# Variant: zoomed out
2013-11-07 16:54:16 +00:00
# vf-add = lavfi=graph="scale=floor(min(DW*min(1\,dar/DAR)\,in_w)/2+0.5)*2:floor(min(DH*min(DAR/dar\,1)\,in_h)/2+0.5)*2,setsar=sar=sar/SAR"
2013-10-31 04:30:17 +00:00
# Variant: zoomed in
2013-11-07 16:54:16 +00:00
# vf-add = lavfi=graph="scale=floor(min(DW*max(1\,dar/DAR)\,in_w)/2+0.5)*2:floor(min(DH*max(DAR/dar\,1)\,in_h)/2+0.5)*2,setsar=sar=sar/SAR"
2013-10-31 04:30:17 +00:00
# Simplified special case for SAR == 1, DAR == DW/DH:
# Variant: zoomed out
# vf-add = lavfi=graph="scale=floor(min(min(DW\,dar*DH)\,in_w)/2+0.5)*2:floor(min(min(DW/dar\,DH)\,in_h)/2+0.5)*2"
# Variant: zoomed in
# vf-add = lavfi=graph="scale=floor(min(max(DW\,dar*DH)\,in_w)/2+0.5)*2:floor(min(max(DW/dar\,DH)\,in_h)/2+0.5)*2"