123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- #
- # mpv configuration file
- #
- #########################
- # encoding profile file #
- #########################
- #
- # 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.
- #
- # Then, list all profiles by
- # mpv -profile help | grep enc-
- #
- # 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
- # mpv -show-profile enc-to-bb-9000
- #
- # Examples:
- # mpv -profile enc-to-dvdpal -o outfile.mpg infile.mkv
- # mpv -profile enc-f-avi -ofps 30 -o outfile.avi infile.mkv
- # mpv -profile enc-v-mpeg4 -ovcopts-add qscale=7 -profile enc-a-mp3 -oacopts-add b=320k -o outfile.avi infile.mkv
- ################
- # audio codecs #
- ################
- [enc-a-aac]
- profile-desc = "AAC (libfaac or FFmpeg)"
- oac = libfdk_aac,libfaac,libvo_aacenc,aac
- oacopts = b=96k
- [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]
- profile-desc = "Vorbis (libvorbis)"
- oac = libvorbis,vorbis
- oacopts = qscale=3
- ################
- # video codecs #
- ################
- [enc-v-h263]
- profile-desc = "H.263 (FFmpeg)"
- ovc = h263
- ovcopts = qscale=4
- [enc-v-h264]
- profile-desc = "H.264 (x264)"
- ovc = libx264
- ovcopts = preset=medium,crf=23,threads=0
- vf-add = noformat=444p,noformat=444p9,noformat=444p10,noformat=422p,noformat=422p9,noformat=422p10
- [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
- ovcopts = qscale=4
- [enc-v-vp8]
- profile-desc = "VP8 (libvpx)"
- ovc = libvpx
- ovcopts = qmin=4,b=10000000k # ought to be enough for anyone; for CBR use, set b=; for VBR use, set qmin= to quality
- ###########
- # 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]
- profile-desc = "VP8 + Vorbis (for WebM)"
- of = webm
- ocopyts = yes
- profile = enc-v-vp8
- profile = enc-a-vorbis
- ofopts-clr = yes
- ##################
- # target devices #
- ##################
- [enc-to-dvdpal]
- 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)"
- profile = enc-v-mpeg2
- profile = enc-a-ac3
- of = dvd
- ofopts-add = packetsize=2048,muxrate=10080000
- ofps = 25
- oharddup = yes
- ovfirst = yes # dvdauthor needs this
- audio-samplerate = 48000
- ovcopts-add = g=15,b=6000000,maxrate=9000000,minrate=0,bufsize=1835008
- [enc-to-dvdntsc]
- 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)"
- profile = enc-v-mpeg2
- profile = enc-a-ac3
- of = dvd
- ofopts-add = packetsize=2048,muxrate=10080000
- ofps = 24000/1001
- oharddup = yes
- ovfirst = yes # dvdauthor needs this
- audio-samplerate = 48000
- ovcopts-add = g=18,b=6000000,maxrate=9000000,minrate=0,bufsize=1835008
- [enc-to-bb-9000]
- profile-desc = "MP4 for Blackberry Bold 9000"
- profile = enc-f-mp4
- vf-add = dsize=480:360:0:2,scale=w=0:h=0,dsize=-1:-1 # native screen res, letterbox
- ovcopts-add = maxrate=1500k,bufsize=1000k,rc_init_occupancy=900k,refs=1,profile=baseline
- omaxfps = 30
- [enc-to-nok-n900]
- profile-desc = "MP4 for Nokia N900"
- profile = enc-f-mp4
- # DW = 800, DH = 480, SAR = 1
- 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"
- ovcopts-add = profile=baseline,level=30,maxrate=10000k,bufsize=10000k,rc_init_occupancy=9000k,refs=5
- omaxfps = 30
- [enc-to-nok-6300]
- profile-desc = "3GP for Nokia 6300"
- profile = enc-f-3gp
- ofps = 25
- vf-add = scale=w=176:h=144
- audio-samplerate = 16000
- audio-channels = 1
- oacopts-add = b=32k
- [enc-to-psp]
- profile-desc = "MP4 for PlayStation Portable"
- profile = enc-f-mp4
- ofps = 30000/1001
- vf-add = scale=w=480:h=272,dsize=480:270
- audio-samplerate = 48000
- audio-channels = 2
- ovcopts-add = b=512k,profile=baseline
- [enc-to-iphone-noscale]
- profile-desc = "MP4 for iPhone (no scaling)"
- profile = enc-f-mp4
- oautofps = yes # iphone supports 30fps max
- ovcopts-add = maxrate=2500k,bufsize=1000k,rc_init_occupancy=900k,level=30,profile=baseline
- omaxfps = 30
- [enc-to-iphone]
- profile-desc = "MP4 for iPhone (480x320)"
- profile = enc-to-iphone-noscale
- vf-add = dsize=480:320:1:2,scale=w=0:h=0,dsize=-1:-1 # panscan
- omaxfps = 30
- [enc-to-iphone-4]
- profile-desc = "MP4 for iPhone 4 (960x640)"
- profile = enc-to-iphone-noscale
- vf-add = dsize=960:480:1:2,scale=w=0:h=0,dsize=-1:-1 # panscan
- omaxfps = 30
- [enc-to-iphone-5]
- profile-desc = "MP4 for iPhone 5 (1136x640)"
- profile = enc-to-iphone-noscale
- vf-add = dsize=1136:480:1:2,scale=w=0:h=0,dsize=-1:-1 # panscan
- omaxfps = 30
- [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)
- vf-add = lavfi=graph="scale=floor(min(1024*min(1\,dar/(97/54))\,in_w*max(1\,sar/(2425/2304)))/2+0.5)*2:floor(min(600*min((97/54)/dar\,1)\,in_h*max((2425/2304)/sar\,1))/2+0.5)*2,setsar=sar=1"
- [enc-to-hp-slate-7-git]
- profile-desc = "MP4 for HP Slate 7 (1024x600, crazy aspect), FFmpeg-git"
- profile = enc-f-mp4
- omaxfps = 30
- ovcopts-add = profile=high
- # DW = 1024, DH = 600, DAR = 97:54 (=> SAR = 2425:2304)
- 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)"
- # 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
- # 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"
- # Variant: zoomed in
- # 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"
- # 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)
- # 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)
- #
- # 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*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"
- # Variant: zoomed in
- # 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
- #
- # If the device supports file SAR properly, we can make use of it to avoid
- # 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.
- # Variant: zoomed out
- # 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"
- # Variant: zoomed in
- # 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"
- # 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"
|