47 #define DEFAULT_PASS_LOGFILENAME_PREFIX "ffmpeg2pass"
49 #define SPECIFIER_OPT_FMT_str "%s"
50 #define SPECIFIER_OPT_FMT_i "%i"
51 #define SPECIFIER_OPT_FMT_i64 "%"PRId64
52 #define SPECIFIER_OPT_FMT_ui64 "%"PRIu64
53 #define SPECIFIER_OPT_FMT_f "%f"
54 #define SPECIFIER_OPT_FMT_dbl "%lf"
102 #define WARN_MULTIPLE_OPT_USAGE(name, type, so, st)\
104 char namestr[128] = "";\
105 const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
106 for (i = 0; opt_name_##name[i]; i++)\
107 av_strlcatf(namestr, sizeof(namestr), "-%s%s", opt_name_##name[i], opt_name_##name[i+1] ? (opt_name_##name[i+2] ? ", " : " or ") : "");\
108 av_log(NULL, AV_LOG_WARNING, "Multiple %s options specified for stream %d, only the last option '-%s%s%s "SPECIFIER_OPT_FMT_##type"' will be used.\n",\
109 namestr, st->index, opt_name_##name[0], spec[0] ? ":" : "", spec, so->u.type);\
112 #define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
114 int i, ret, matches = 0;\
116 for (i = 0; i < o->nb_ ## name; i++) {\
117 char *spec = o->name[i].specifier;\
118 if ((ret = check_stream_specifier(fmtctx, st, spec)) > 0) {\
119 outvar = o->name[i].u.type;\
126 WARN_MULTIPLE_OPT_USAGE(name, type, so, st);\
129 #define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)\
132 for (i = 0; i < o->nb_ ## name; i++) {\
133 char *spec = o->name[i].specifier;\
134 if (!strcmp(spec, mediatype))\
135 outvar = o->name[i].u.type;\
189 void *dst = (uint8_t*)o + po->
u.
off;
193 int i, *count = (
int*)(so + 1);
194 for (
i = 0;
i < *count;
i++) {
216 memset(o, 0,
sizeof(*o));
233 printf(
"Hardware acceleration methods:\n");
248 char *p = strchr(e->
key,
':');
280 const AVClass *pclass = &
class;
289 if (user_stats_period <= 0) {
324 static int opt_map(
void *optctx,
const char *opt,
const char *
arg)
328 int i, negative = 0, file_idx, disabled = 0;
329 int sync_file_idx = -1, sync_stream_idx = 0;
343 if (sync = strchr(
map,
',')) {
345 sync_file_idx = strtol(sync + 1, &sync, 0);
360 "match any streams.\n",
arg);
373 const char *
c =
map + 1;
382 if (allow_unused = strchr(
map,
'?'))
384 file_idx = strtol(
map, &p, 0);
396 *p ==
':' ? p + 1 : p) > 0)
402 *p ==
':' ? p + 1 : p) <= 0)
414 if (sync_file_idx >= 0) {
427 }
else if (disabled) {
429 "To ignore this, add a trailing '?' to the map.\n",
arg);
433 "To ignore this, add a trailing '?' to the map.\n",
arg);
476 n = sscanf(
arg,
"%d.%d.%d:%d.%d",
480 if (n != 3 && n != 5) {
482 "[file.stream.channel|-1][:syncfile:syncstream]\n");
508 if (allow_unused = strchr(mapchan,
'?'))
517 "To ignore this, add a trailing '?' to the map_channel.\n",
535 static int opt_vaapi_device(
void *optctx,
const char *opt,
const char *
arg)
537 const char *prefix =
"vaapi:";
550 static int opt_qsv_device(
void *optctx,
const char *opt,
const char *
arg)
552 const char *prefix =
"qsv=__qsv_device:hw_any,child_device=";
568 if (!strcmp(
arg,
"list")) {
570 printf(
"Supported hardware device types:\n");
610 if (*(++
arg) && *
arg !=
':') {
614 *stream_spec = *
arg ==
':' ?
arg + 1 :
"";
634 char type_in, type_out;
635 const char *istream_spec =
NULL, *ostream_spec =
NULL;
636 int idx_in = 0, idx_out = 0;
642 if (type_out ==
'g' || !*outspec)
644 if (type_out ==
's' || !*outspec)
646 if (type_out ==
'c' || !*outspec)
651 if (type_in ==
'g' || type_out ==
'g')
653 if (type_in ==
's' || type_out ==
's')
655 if (type_in ==
'c' || type_out ==
'c')
662 #define METADATA_CHECK_INDEX(index, nb_elems, desc)\
663 if ((index) < 0 || (index) >= (nb_elems)) {\
664 av_log(NULL, AV_LOG_FATAL, "Invalid %s index %d while processing metadata maps.\n",\
669 #define SET_DICT(type, meta, context, index)\
672 meta = &context->metadata;\
675 METADATA_CHECK_INDEX(index, context->nb_chapters, "chapter")\
676 meta = &context->chapters[index]->metadata;\
679 METADATA_CHECK_INDEX(index, context->nb_programs, "program")\
680 meta = &context->programs[index]->metadata;\
684 default: av_assert0(0);\
687 SET_DICT(type_in, meta_in, ic, idx_in);
688 SET_DICT(type_out, meta_out, oc, idx_out);
691 if (type_in ==
's') {
705 if (type_out ==
's') {
724 struct tm time = *gmtime((time_t*)&recording_timestamp);
725 if (!strftime(buf,
sizeof(buf),
"creation_time=%Y-%m-%dT%H:%M:%S%z", &time))
730 "tag instead.\n", opt);
737 const char *
codec_string = encoder ?
"encoder" :
"decoder";
765 char *codec_name =
NULL;
789 const char *hwaccel =
NULL;
790 char *hwaccel_output_format =
NULL;
791 char *codec_tag =
NULL;
793 char *discard_str =
NULL;
810 ist->min_pts = INT64_MAX;
811 ist->max_pts = INT64_MIN;
821 uint32_t
tag = strtol(codec_tag, &next, 0);
830 ist->reinit_filters = -1;
842 if (discard_str &&
av_opt_eval_int(&cc, discard_opt, discard_str, &
ist->user_set_discard) < 0) {
864 if (!
ist->decoded_frame)
890 ist->top_field_first = -1;
895 hwaccel_output_format, ic, st);
897 if (!hwaccel_output_format && hwaccel && !strcmp(hwaccel,
"cuvid")) {
899 "WARNING: defaulting hwaccel_output_format to cuda for compatibility "
900 "with old commandlines. This behaviour is DEPRECATED and will be removed "
901 "in the future. Please explicitly set \"-hwaccel_output_format cuda\".\n");
903 }
else if (!hwaccel_output_format && hwaccel && !strcmp(hwaccel,
"qsv")) {
905 "WARNING: defaulting hwaccel_output_format to qsv for compatibility "
906 "with old commandlines. This behaviour is DEPRECATED and will be removed "
907 "in the future. Please explicitly set \"-hwaccel_output_format qsv\".\n");
909 }
else if (hwaccel_output_format) {
913 "format: %s", hwaccel_output_format);
921 if (!strcmp(hwaccel,
"nvdec") || !strcmp(hwaccel,
"cuvid"))
924 if (!strcmp(hwaccel,
"none"))
926 else if (!strcmp(hwaccel,
"auto"))
932 ist->hwaccel_device_type =
type;
935 if (!
ist->hwaccel_id) {
951 if (hwaccel_device) {
953 if (!
ist->hwaccel_device)
961 ist->guess_layout_max = INT_MAX;
967 char *canvas_size =
NULL;
999 fprintf(stderr,
"Error, both -y and -n supplied. Exiting.\n");
1004 if (proto_name && !strcmp(proto_name,
"file") &&
avio_check(filename, 0) == 0) {
1006 fprintf(stderr,
"File '%s' already exists. Overwrite? [y/N] ", filename);
1009 signal(SIGINT, SIG_DFL);
1023 if (proto_name && !strcmp(proto_name,
"file")) {
1028 if (!strcmp(filename, file->
ctx->
url)) {
1049 filename = e->
value;
1081 char * data_codec_name =
NULL;
1082 int scan_all_pmts_set = 0;
1106 if (!strcmp(filename,
"-"))
1110 strcmp(filename,
"/dev/stdin");
1160 if (data_codec_name)
1175 scan_all_pmts_set = 1;
1185 if (scan_all_pmts_set)
1202 for (
i = 0;
i < orig_nb_streams;
i++)
1241 int64_t seek_timestamp = timestamp;
1244 int dts_heuristic = 0;
1252 if (dts_heuristic) {
1285 if (
f->readrate < 0.0f) {
1289 if (
f->readrate &&
f->rate_emu) {
1324 "input file #%d (%s) is not a decoding option.\n", e->
key,
1331 "input file #%d (%s) has not been used for any stream. The most "
1332 "likely reason is either wrong type (e.g. a video option with "
1333 "no video streams) or that it is a private option of some decoder "
1334 "which was not actually used for any stream.\n", e->
key,
1372 char filename[1000];
1373 const char *
base[3] = { getenv(
"AVCONV_DATADIR"),
1382 snprintf(filename,
sizeof(filename),
"%s%s/%s-%s.avpreset",
base[
i],
1383 i != 1 ?
"" :
"/.avconv", codec_name, preset_name);
1387 snprintf(filename,
sizeof(filename),
"%s%s/%s.avpreset",
base[
i],
1388 i != 1 ?
"" :
"/.avconv", preset_name);
1398 char *codec_name =
NULL;
1408 "output stream #%d:%d. Default encoder for format %s (codec %s) is "
1409 "probably disabled. Please choose an encoder manually.\n",
1414 }
else if (!strcmp(codec_name,
"copy"))
1435 const char *bsfs =
NULL, *time_base =
NULL;
1436 char *next, *codec_tag =
NULL;
1502 if (!buf[0] || buf[0] ==
'#')
1504 if (!(
arg = strchr(buf,
'='))) {
1510 }
while (!
s->eof_reached);
1516 "Preset %s specified for stream %d:%d, but could not be opened.\n",
1532 q.
num <= 0 || q.
den <= 0) {
1564 if (bsfs && *bsfs) {
1574 uint32_t
tag = strtol(codec_tag, &next, 0);
1613 if (source_index >= 0) {
1630 const char *p =
str;
1695 "%s '%s' was defined for %s output stream %d:%d but codec copy was selected.\n"
1696 "Filtering and streamcopy cannot be used together.\n",
1697 ost->
filters ?
"Filtergraph" :
"Filtergraph script",
1709 char *frame_rate =
NULL, *max_frame_rate =
NULL, *frame_aspect_ratio =
NULL;
1727 if (frame_rate && max_frame_rate) {
1732 if ((frame_rate || max_frame_rate) &&
1734 av_log(
NULL,
AV_LOG_ERROR,
"Using -vsync passthrough and -r/-fpsmax can produce invalid output files\n");
1737 if (frame_aspect_ratio) {
1740 q.
num <= 0 || q.
den <= 0) {
1751 const char *p =
NULL;
1753 char *frame_pix_fmt =
NULL;
1754 char *intra_matrix =
NULL, *inter_matrix =
NULL;
1755 char *chroma_intra_matrix =
NULL;
1766 if (frame_pix_fmt && *frame_pix_fmt ==
'+') {
1768 if (!*++frame_pix_fmt)
1769 frame_pix_fmt =
NULL;
1786 if (chroma_intra_matrix) {
1805 for (
i = 0; p;
i++) {
1807 int e = sscanf(p,
"%d,%d,%d", &start, &end, &q);
1856 char logfilename[1024];
1859 snprintf(logfilename,
sizeof(logfilename),
"%s-%d.log",
1863 if (!strcmp(
ost->
enc->name,
"libx264")) {
1867 char *logbuffer =
read_file(logfilename);
1880 "Cannot write log file '%s' for pass-1 encoding: %s\n",
1881 logfilename, strerror(errno));
1913 if (
ifile->nb_streams == 1 &&
ifile->input_ts_offset == 0)
1957 char *sample_fmt =
NULL;
1984 if (
map->channel_idx == -1) {
1994 if (!
ist || (
ist->file_index ==
map->file_idx &&
ist->st->index ==
map->stream_idx)) {
2083 p = strchr(idx_str,
':');
2086 "Invalid value '%s' for option '%s', required syntax is 'index:value'\n",
2109 for (
i = 0;
i <
is->nb_chapters;
i++) {
2114 int64_t rt = (
ofile->recording_time == INT64_MAX) ? INT64_MAX :
2118 if (in_ch->
end < ts_off)
2120 if (rt != INT64_MAX && in_ch->
start > rt + ts_off)
2127 out_ch->id = in_ch->
id;
2129 out_ch->start =
FFMAX(0, in_ch->
start - ts_off);
2130 out_ch->end =
FFMIN(rt, in_ch->
end - ts_off);
2144 int have_manual = 0;
2171 #if LIBAVFORMAT_VERSION_MAJOR >= 60
2199 have_default[
type] = 1;
2227 "which is fed from a complex filtergraph. Filtering and streamcopy "
2233 const char *opt =
ost->
filters ?
"-vf/-af/-filter" :
"-filter_script";
2235 "%s '%s' was specified through the %s option "
2236 "for output stream %d:%d, which is fed from a complex filtergraph.\n"
2237 "%s and -filter_complex cannot be used together for the same stream.\n",
2238 ost->
filters ?
"Filtergraph" :
"Filtergraph script",
2293 if (!strcmp(filename,
"-"))
2336 int best_score = 0, idx = -1;
2340 int file_best_score = 0, file_best_idx = -1;
2341 for (
i = 0;
i <
ifile->nb_streams;
i++) {
2344 score =
ist->st->codecpar->width *
ist->st->codecpar->height
2352 score > file_best_score) {
2355 file_best_score = score;
2356 file_best_idx =
ifile->ist_index +
i;
2359 if (file_best_idx >= 0) {
2362 if (file_best_score > best_score) {
2363 best_score = file_best_score;
2364 idx = file_best_idx;
2374 int best_score = 0, idx = -1;
2377 int file_best_score = 0, file_best_idx = -1;
2378 for (
i = 0;
i <
ifile->nb_streams;
i++) {
2381 score =
ist->st->codecpar->channels
2387 score > file_best_score) {
2388 file_best_score = score;
2389 file_best_idx =
ifile->ist_index +
i;
2392 if (file_best_idx >= 0) {
2394 if (file_best_score > best_score) {
2395 best_score = file_best_score;
2396 idx = file_best_idx;
2414 int input_props = 0, output_props = 0;
2419 if (input_descriptor)
2421 if (output_descriptor)
2424 input_props & output_props ||
2426 input_descriptor && output_descriptor &&
2427 (!input_descriptor->
props ||
2428 !output_descriptor->
props)) {
2452 if (
map->linklabel) {
2461 if (
out && !strcmp(
out->name,
map->linklabel)) {
2470 "in any defined filter graph, or was already used elsewhere.\n",
map->linklabel);
2480 map->file_index,
map->stream_index);
2493 switch (
ist->st->codecpar->codec_type) {
2506 "Cannot map stream #%d:%d - unsupported type.\n",
2507 map->file_index,
map->stream_index);
2510 "If you want unsupported types ignored instead "
2511 "of failing, please use the -ignore_unknown option\n"
2512 "If you want them copied, please use -copy_unknown\n");
2518 +
map->sync_stream_index];
2526 uint8_t *attachment;
2589 "output file #%d (%s) is not an encoding option.\n", e->
key,
2596 if (!strcmp(e->
key,
"gop_timecode"))
2600 "output file #%d (%s) has not been used for any stream. The most "
2601 "likely reason is either wrong type (e.g. a video option with "
2602 "no video streams) or that it is a private option of some encoder "
2603 "which was not actually used for any stream.\n", e->
key,
2621 "Error initializing a simple filtergraph between streams "
2640 f->formats =
ost->
enc->pix_fmts;
2647 f->formats =
ost->
enc->sample_fmts;
2652 f->sample_rates =
ost->
enc->supported_samplerates;
2657 f->channel_layouts =
ost->
enc->channel_layouts;
2674 "No input streams but output needs an input stream\n");
2703 av_log(
NULL,
AV_LOG_FATAL,
"Invalid input file index %d while processing metadata maps\n", in_file_index);
2707 in_file_index >= 0 ?
2762 const char *to_dealloc = p2;
2777 if (!strcmp(
key,
"program_num"))
2778 progid = strtol(p2,
NULL, 0);
2788 const char *to_dealloc = p2;
2797 "No '=' character in program string %s.\n",
2805 if (!strcmp(
key,
"title")) {
2807 }
else if (!strcmp(
key,
"program_num")) {
2808 }
else if (!strcmp(
key,
"st")) {
2809 int st_num = strtol(p2,
NULL, 0);
2824 const char *stream_spec;
2894 static const char *
const frame_rates[] = {
"25",
"30000/1001",
"24000/1001" };
2896 if (!strncmp(
arg,
"pal-", 4)) {
2899 }
else if (!strncmp(
arg,
"ntsc-", 5)) {
2902 }
else if (!strncmp(
arg,
"film-", 5)) {
2919 }
else if ((fr == 29970) || (fr == 23976)) {
2939 if (!strcmp(
arg,
"vcd")) {
2966 }
else if (!strcmp(
arg,
"svcd")) {
2988 }
else if (!strcmp(
arg,
"dvd")) {
3010 }
else if (!strncmp(
arg,
"dv", 2)) {
3016 norm ==
PAL ?
"yuv420p" :
"yuv411p",
options);
3043 time_t today2 = time(
NULL);
3044 struct tm *today = localtime(&today2);
3051 snprintf(filename,
sizeof(filename),
"vstats_%02d%02d%02d.log", today->tm_hour, today->tm_min,
3098 char filename[1000],
line[1000], tmp_line[1000];
3099 const char *codec_name =
NULL;
3106 if(!strncmp(
arg,
"libx264-lossless", strlen(
"libx264-lossless"))){
3114 char *
key = tmp_line, *
value, *endptr;
3116 if (strcspn(
line,
"#\n\r") == 0)
3158 if(!strcmp(opt,
"ab")){
3161 }
else if(!strcmp(opt,
"b")){
3175 if(!strcmp(opt,
"qscale")){
3190 if(!strcmp(opt,
"profile")){
3221 " use a string argument as described in the manual.\n");
3243 char layout_str[32];
3262 stream_str = strchr(opt,
':');
3263 ac_str_size = 3 + (stream_str ? strlen(stream_str) : 0);
3317 int show_advanced = 0, show_avoptions = 0;
3320 if (!strcmp(opt,
"long"))
3322 else if (!strcmp(opt,
"full"))
3323 show_advanced = show_avoptions = 1;
3331 " -h -- print basic options\n"
3332 " -h long -- print more options\n"
3333 " -h full -- print all options (including all format and codec specific options, very long)\n"
3334 " -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol\n"
3335 " See man %s for detailed description of the options.\n"
3342 "instead of just one file):",
3370 if (show_avoptions) {
3377 #if CONFIG_SWRESAMPLE
3399 [GROUP_INFILE] = {
"input url",
"i",
OPT_INPUT },
3417 "%s.\n", inout,
g->arg);
3442 memset(&octx, 0,
sizeof(octx));
3494 static int opt_progress(
void *optctx,
const char *opt,
const char *
arg)
3499 if (!strcmp(
arg,
"-"))
3511 #define OFFSET(x) offsetof(OptionsContext, x)
3517 "force format",
"fmt" },
3519 "overwrite output files" },
3521 "never overwrite output files" },
3523 "Ignore unknown stream types" },
3525 "Copy unknown stream types" },
3527 "allow recasting stream type in order to force a decoder of different media type" },
3530 "codec name",
"codec" },
3533 "codec name",
"codec" },
3536 "preset name",
"preset" },
3539 "set input stream mapping",
3540 "[-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]]" },
3542 "map an audio channel from one stream to another",
"file.stream.channel[:syncfile.syncstream]" },
3545 "set metadata information of outfile from infile",
3546 "outfile[,metadata]:infile[,metadata]" },
3549 "set chapters mapping",
"input_file_index" },
3552 "record or transcode \"duration\" seconds of audio/video",
3555 "record or transcode stop time",
"time_stop" },
3557 "set the limit file size in bytes",
"limit_size" },
3560 "set the start time offset",
"time_off" },
3563 "set the start time offset relative to EOF",
"time_off" },
3566 "enable/disable seeking by timestamp with -ss" },
3569 "enable/disable accurate seeking with -ss" },
3572 "set the input ts offset",
"time_off" },
3575 "set the input ts scale",
"scale" },
3577 "set the recording timestamp ('now' to set the current time)",
"time" },
3579 "add metadata",
"string=string" },
3581 "add program with specified streams",
"title=string:st=number..." },
3584 "set the number of data frames to output",
"number" },
3586 "add timings for benchmarking" },
3588 "add timings for each task" },
3590 "write program-readable progress information",
"url" },
3592 "enable or disable interaction on standard input" },
3594 "set max runtime in seconds in CPU user time",
"limit" },
3596 "dump each input packet" },
3598 "when dumping packets, also dump the payload" },
3601 "read input at native frame rate; equivalent to -readrate 1",
"" },
3604 "read input at specified rate",
"speed" },
3606 "specify target file type (\"vcd\", \"svcd\", \"dvd\", \"dv\" or \"dv50\" "
3607 "with optional prefixes \"pal-\", \"ntsc-\" or \"film-\")",
"type" },
3609 "video sync method",
"" },
3611 "frame drop threshold",
"" },
3613 "audio sync method",
"" },
3615 "audio drift threshold",
"threshold" },
3617 "copy timestamps" },
3619 "shift input timestamps to start at 0 when using copyts" },
3621 "copy input stream time base when stream copying",
"mode" },
3624 "finish encoding within shortest input" },
3632 "timestamp discontinuity delta threshold",
"threshold" },
3634 "timestamp error delta threshold",
"threshold" },
3636 "exit on error",
"error" },
3638 "abort on the specified condition flags",
"flags" },
3641 "copy initial non-keyframes" },
3643 "copy or discard frames before start time" },
3645 "set the number of frames to output",
"number" },
3648 "force codec tag/fourcc",
"fourcc/tag" },
3651 "use fixed quality scale (VBR)",
"q" },
3654 "use fixed quality scale (VBR)",
"q" },
3656 "set profile",
"profile" },
3658 "set stream filtergraph",
"filter_graph" },
3660 "number of non-complex filter threads" },
3662 "read stream filtergraph description from a file",
"filename" },
3664 "reinit filtergraph on input parameter changes",
"" },
3666 "create a complex filtergraph",
"graph_description" },
3668 "number of threads for -filter_complex" },
3670 "create a complex filtergraph",
"graph_description" },
3672 "read complex filtergraph description from a file",
"filename" },
3674 "enable automatic conversion filters globally" },
3676 "print progress report during encoding", },
3678 "set the period at which ffmpeg updates stats and -progress output",
"time" },
3681 "add an attachment to the output file",
"filename" },
3684 "extract an attachment into a file",
"filename" },
3686 OPT_OFFSET, { .off =
OFFSET(
loop) },
"set number of times input stream shall be looped",
"loop count" },
3688 "print timestamp debugging info" },
3690 "ratio of decoding errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.",
"maximum error rate" },
3696 "disposition",
"" },
3698 { .off =
OFFSET(thread_queue_size) },
3699 "set the maximum number of queued packets from the demuxer" },
3701 "read and decode the streams to fill missing information with heuristics" },
3703 { .off =
OFFSET(bits_per_raw_sample) },
3704 "set the number of bits per raw sample",
"number" },
3708 "set the number of video frames to output",
"number" },
3711 "set frame rate (Hz value, fraction or abbreviation)",
"rate" },
3714 "set max frame rate (Hz value, fraction or abbreviation)",
"rate" },
3717 "set frame size (WxH or abbreviation)",
"size" },
3720 "set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)",
"aspect" },
3723 "set pixel format",
"format" },
3728 "rate control override for specific intervals",
"override" },
3731 "force video codec ('copy' to copy stream)",
"codec" },
3733 "set initial TimeCode value.",
"hh:mm:ss[:;.]ff" },
3735 "select the pass number (1 to 3)",
"n" },
3738 "select two pass log file name prefix",
"prefix" },
3740 "calculate PSNR of compressed frames" },
3742 "dump video coding statistics to file" },
3744 "dump video coding statistics to file",
"file" },
3746 "Version of the vstats format to use."},
3748 "set video filters",
"filter_graph" },
3751 "specify intra matrix coeffs",
"matrix" },
3754 "specify inter matrix coeffs",
"matrix" },
3757 "specify intra matrix coeffs",
"matrix" },
3760 "top=1/bottom=0/auto=-1 field first",
"" },
3763 "force video tag/fourcc",
"fourcc/tag" },
3765 "show QP histogram" },
3768 "force the selected framerate, disable the best supported framerate selection" },
3771 "set the value of an outfile streamid",
"streamIndex:value" },
3774 "force key frames at specified timestamps",
"timestamps" },
3776 "audio bitrate (please use -b:a)",
"bitrate" },
3778 "video bitrate (please use -b:v)",
"bitrate" },
3781 "use HW accelerated decoding",
"hwaccel name" },
3784 "select a device for HW acceleration",
"devicename" },
3787 "select output format used with HW accelerated decoding",
"format" },
3789 "show available HW acceleration methods" },
3792 "automatically insert correct rotate filters" },
3795 "automatically insert a scale filter at the end of the filter graph" },
3799 "set the number of audio frames to output",
"number" },
3801 "set audio quality (codec-specific)",
"quality", },
3804 "set audio sampling rate (in Hz)",
"rate" },
3807 "set number of audio channels",
"channels" },
3812 "force audio codec ('copy' to copy stream)",
"codec" },
3815 "force audio tag/fourcc",
"fourcc/tag" },
3817 "change audio volume (256=normal)" ,
"volume" },
3820 "set sample format",
"format" },
3823 "set channel layout",
"layout" },
3825 "set audio filters",
"filter_graph" },
3827 "set the maximum number of channels to try to guess the channel layout" },
3831 "disable subtitle" },
3833 "force subtitle codec ('copy' to copy stream)",
"codec" },
3835 ,
"force subtitle tag/fourcc",
"fourcc/tag" },
3837 "fix subtitles duration" },
3839 "set canvas size (WxH or abbreviation)",
"size" },
3843 "set the maximum demux-decode delay",
"seconds" },
3845 "set the initial demux-decode delay",
"seconds" },
3847 "specify a file in which to print sdp information",
"file" },
3850 "set the desired time base hint for output stream (1:24, 1:48000 or 0.04166, 2.0833e-5)",
"ratio" },
3852 "set the desired time base for the encoder (1:24, 1:48000 or 0.04166, 2.0833e-5). "
3853 "two special values are defined - "
3854 "0 = use frame rate (video) or sample rate (audio),"
3855 "-1 = match source time base",
"ratio" },
3858 "A comma-separated list of bitstream filters",
"bitstream_filters" },
3860 "deprecated",
"audio bitstream_filters" },
3862 "deprecated",
"video bitstream_filters" },
3865 "set the audio options to the indicated preset",
"preset" },
3867 "set the video options to the indicated preset",
"preset" },
3869 "set the subtitle options to the indicated preset",
"preset" },
3871 "set options from indicated preset file",
"filename" },
3874 "maximum number of packets that can be buffered while waiting for all streams to initialize",
"packets" },
3876 "set the threshold after which max_muxing_queue_size is taken into account",
"bytes" },
3880 "force data codec ('copy' to copy stream)",
"codec" },
3886 "set VAAPI hardware device (DRM path or X11 display name)",
"device" },
3891 "set QSV hardware device (DirectX adapter index,