blob: 7620007c80a242032f98336c64942e5b69b46d8d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
#compdef ffmpeg
local curcontext="$curcontext" state line expl
typeset -A opt_args
(( $+functions[_ffmpeg_presets] )) || _ffmpeg_presets() {
local presets
presets=(~/.ffmpeg/*.ffpreset(:t:r) "$FFMPEG_DATADIR"/*.ffpreset(:t:r))
_wanted ffmpeg-presets expl 'preset' compadd -a presets
}
(( $+functions[_ffmpeg_acodecs] )) || _ffmpeg_acodecs() {
local -a acodecs
acodecs=(copy ${(f)"$(_call_program audio-codecs \
$words[1] -encoders 2>/dev/null | awk 'NR>10 && /^ A/{print $2}')"})
_wanted ffmpeg-audio-codecs expl \
'force audio codec (''copy'' to copy stream)' compadd -a acodecs
}
(( $+functions[_ffmpeg_vcodecs] )) || _ffmpeg_vcodecs() {
local -a vcodecs
vcodecs=(copy ${(f)"$(_call_program video-codecs \
$words[1] -encoders 2>/dev/null | awk 'NR>10 && /^ V/{print $2}')"})
_wanted ffmpeg-video-codecs expl \
'force video codec (''copy'' to copy stream)' compadd -a vcodecs
}
(( $+functions[_ffmpeg_scodecs] )) || _ffmpeg_scodecs() {
local -a scodecs
scodecs=(copy ${(f)"$(_call_program subtitle-codecs \
$words[1] -encoders 2>/dev/null | awk 'NR>10 && /^ S/{print $2}')"})
_wanted ffmpeg-subtitle-codecs expl \
'force subtitle codec (''copy'' to copy stream)' compadd -a scodecs
}
(( $+functions[_ffmpeg_formats] )) || _ffmpeg_formats() {
local _out
_out=$(_call_program formats $words[1] -formats 2>/dev/null | \
awk 'NR>4 {name=($2=="d")?$3:$2; n=split(name,a,","); for(i=1;i<=n;i++) if(a[i]~/^[a-z0-9]/) print a[i]}')
local -a formats
formats=(${(ou)${(f)_out}})
_wanted ffmpeg-formats expl 'force format' compadd -a formats
}
(( $+functions[_ffmpeg_pix_fmts] )) || _ffmpeg_pix_fmts() {
_wanted ffmpeg-pix-fmts expl 'pixel format' compadd "$@" - \
${${${(M)${(f)"$(_call_program formats $words[1] -pix_fmts 2>/dev/null)"}:#[I.][O.][H.][P.][B.] [^=[:space:]]*}#* }%% *}
}
(( $+functions[_ffmpeg_bsfs] )) || _ffmpeg_bsfs() {
local bsfs
bsfs=(${${(f)"$(_call_program bsfs $words[1] -bsfs 2>/dev/null)"}:#*:})
_wanted ffmpeg-bsfs expl 'set bitstream filter' compadd -a bsfs
}
_arguments -C -S \
'(-y -n)-y[overwrite output files without asking]' \
'(-y -n)-n[never overwrite output files]' \
'-v[set logging level]:level:(quiet panic fatal error warning info verbose debug trace)' \
'-loglevel[set logging level]:level:(quiet panic fatal error warning info verbose debug trace)' \
'-report[generate a report]' \
'-hide_banner[suppress printing banner]' \
'-cpuflags[force specific cpu flags]:flags' \
'-stats[print encoding progress and statistics]' \
'-nostats[suppress encoding progress and statistics]' \
'-progress[write program-readable progress information]:URL' \
'-benchmark[add benchmarking information to the report]' \
'-timelimit[exit after specified number of seconds of CPU time]:seconds' \
'-dump[dump each input packet to stderr]' \
'-hex[dump each input packet in hexadecimal]' \
'-re[read input at native frame rate]' \
'-stream_loop[set number of times to loop the input]:count' \
'-i[input file or URL]:input file:_files' \
'*-f[force container format]:format:_ffmpeg_formats' \
'-c[select encoder or decoder]:codec' \
'-codec[select encoder or decoder]:codec' \
'-t[stop transcoding after duration]:duration' \
'-to[stop transcoding at time]:time' \
'-fs[set output file size limit in bytes]:bytes' \
'-ss[start at time offset]:time' \
'-sseof[start at time offset relative to EOF]:time' \
'-seek_timestamp[seek by timestamp with -ss when set to 1]:flag' \
'-itsoffset[set input time offset]:time' \
'-timestamp[set the recording timestamp]:time' \
'-metadata[add metadata to the output file]:key=value' \
'-program[add a program with specified streams]:title=outfile,key=value,...' \
'-target[specify target file type]:type:(vcd svcd dvd dv dv50)' \
'-apad[pad audio output with silence]' \
'-frames[stop writing after specified number of frames]:count' \
'-filter[set filtergraph for a stream]:filtergraph' \
'-filter_script[read filtergraph from file]:file:_files' \
'-reinit_filter[reinit filtergraph on input parameter changes]:flag' \
'-discard[discard matching stream packets]:type' \
'-disposition[set disposition flags for a stream]:flags' \
'-map[set input stream mapping]:stream_specifier' \
'-map_metadata[set metadata information of outfile]:outfile_spec' \
'-map_chapters[read chapters from input file]:input_file_index' \
'-copyts[copy timestamps from input to output]' \
'-start_at_zero[shift timestamps to start at 0 with -copyts]' \
'-copytb[copy input stream time base when stream copying]:mode' \
'-shortest[finish encoding when the shortest input stream ends]' \
'-dts_delta_threshold[timestamp discontinuity delta threshold]:threshold' \
'-muxdelay[set the maximum demux-decode delay in seconds]:seconds' \
'-muxpreload[set the initial demux-decode delay in seconds]:seconds' \
'-streamid[force a stream identifier]:ost_index:newval' \
'-bitexact[enable bitexact mode]' \
'-xerror[exit on error]' \
'-strict[how strictly to follow standards]:level:(very strict normal unofficial experimental)' \
'-max_muxing_queue_size[maximum packets in the muxing queue]:count' \
'-threads[number of threads to use]:count' \
'-vn[disable video]' \
'-vcodec[force video codec]:codec:_ffmpeg_vcodecs' \
'-vf[set video filtergraph]:filtergraph' \
'-b[set video bitrate]:bitrate' \
'-r[set video frame rate]:rate' \
'-s[set video frame size]:WxH' \
'-aspect[set video aspect ratio]:ratio' \
'*-pix_fmt[set pixel format]:format:_ffmpeg_pix_fmts' \
'-vframes[set number of video frames to output]:count' \
'-g[set group of picture size]:size' \
'*-vpre[set video preset options]:preset:_ffmpeg_presets' \
'-an[disable audio]' \
'-acodec[force audio codec]:codec:_ffmpeg_acodecs' \
'-af[set audio filtergraph]:filtergraph' \
'-ab[set audio bitrate]:bitrate' \
'-ar[set audio sampling rate in Hz]:rate' \
'-ac[set number of audio channels]:channels' \
'-aq[set audio quality]:quality' \
'-aframes[set number of audio frames to output]:count' \
'-atag[force audio tag or fourcc]:fourcc' \
'*-apre[set audio preset options]:preset:_ffmpeg_presets' \
'-sn[disable subtitle]' \
'-scodec[force subtitle codec]:codec:_ffmpeg_scodecs' \
'-stag[force subtitle tag or fourcc]:fourcc' \
'-fix_sub_duration[fix subtitle duration]' \
'-canvas_size[set canvas size]:WxH' \
'*-spre[set subtitle preset options]:preset:_ffmpeg_presets' \
'-bsf[set bitstream filter]:bitstream filter:_ffmpeg_bsfs' \
'-dn[disable data streams]' \
'*:output file:_files'
|