From patchwork Thu Mar 12 18:38:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lou Logan X-Patchwork-Id: 18139 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E08BF44A4ED for ; Thu, 12 Mar 2020 20:38:48 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BFB4168AFA8; Thu, 12 Mar 2020 20:38:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 24A946809BF for ; Thu, 12 Mar 2020 20:38:42 +0200 (EET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 4ED4322295; Thu, 12 Mar 2020 14:38:40 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 12 Mar 2020 14:38:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lrcd.com; h=from :to:subject:date:message-id:mime-version :content-transfer-encoding; s=fm2; bh=6cHztvC/wKX7aVmZ/DixRO52ee YxXe7QDkonnDuXH8g=; b=Q2aDt6v0aIZvh9nSRrbb6g9FSTJ0+rrEaCBamyqsA9 gdFtsY0TKpLyI2aurCxT0N1bqx349lCNQkTwQJpg0hUrQubqHbOaxAexApXK/8YE U0N5R6hrILWbzsyaRAeP1ApyHpe1jslG0jPucekWg/eDQTKyL4gmsdGLUcogqv+5 6M0BdDc6c2V33aEx/ybBV5oW4M9a8/Q4sTNlB71OWm/nfJzdAsK56tbfj8vdbA2b 2qPYwjb+DgcNbZK6UiqpTXfmCNlbN2aw3m2jxxqRvgza3BZE6j1HZ5PZwlAgEiOL cxhJOYzF4ceol11IsVieKbRJWVJu4u94etbHeUo+TsVA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:date:from :message-id:mime-version:subject:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=6cHztvC/wKX7aVmZ/ DixRO52eeYxXe7QDkonnDuXH8g=; b=fZ3FzRhHcLWcJ70RH7TsIHvHsZ8S2xtHS CPavzM2pyJJZHTOOichR42HwYQxkF4uGghU7QLrNOFDfPrXc10n+lDdDRaMj+/9a 9edVibu3EfwqsQcm5N/uNWc23x+dmG59OVSSBFkpTlA3d+RCn1ILb3IWiTGz+KJr uB6B3dgg0TmBhQ4cwQkBnxkIfoXN3HcLLHA/hLIpsRgtJo3sd48Y05Fk2O7UB6WC 0xmG2aVVU4gJzBxOWtEc2MkmLj4guxYMXeZPqvWsN8uHBs5UyNCo7LChyjIs2uFO E2Flo01fV2RhD2u/u7buFkO7a96CUxkgiwkVFq47O88BWsJQf1F1Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedruddvhedguddujecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecuughishgtohhunhhtucglthhiphhsngculdegtd dmnecujfgurhephffvufffkffoggfgsedtkeertdertddtnecuhfhrohhmpefnohhuucfn ohhgrghnuceolhhouheslhhrtggurdgtohhmqeenucfkphepvdegrddvfeejrddvledrud dtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheplhho uheslhhrtggurdgtohhm X-ME-Proxy: Received: from localhost (10-29-237-24.gci.net [24.237.29.10]) by mail.messagingengine.com (Postfix) with ESMTPA id 7735E3280059 for ; Thu, 12 Mar 2020 14:38:39 -0400 (EDT) From: Lou Logan To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Mar 2020 10:38:37 -0800 Message-Id: <20200312183837.32304-1-lou@lrcd.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] doc/muxers: add missing MOV muxer options X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Lou Logan --- The options for this muxer have a separate section about fragmenting. I tried to organize the missing options into the proper sections, but I don't use fragmenting so I may have placed them in the wrong section. --- doc/muxers.texi | 116 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 95 insertions(+), 21 deletions(-) diff --git a/doc/muxers.texi b/doc/muxers.texi index d304181671..750ab88a18 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -1409,19 +1409,43 @@ how to cut the file into fragments: @item -moov_size @var{bytes} Reserves space for the moov atom at the beginning of the file instead of placing the moov atom at the end. If the space reserved is insufficient, muxing will fail. -@item -movflags frag_keyframe -Start a new fragment at each video keyframe. @item -frag_duration @var{duration} Create fragments that are @var{duration} microseconds long. +@item -min_frag_duration @var{duration} +Don't create fragments that are shorter than @var{duration} microseconds long. @item -frag_size @var{size} Create fragments that contain up to @var{size} bytes of payload data. -@item -movflags frag_custom +@item -frag_interleave @var{integer} +Interleave samples within fragments. Max number of consecutive samples, lower is +tighter interleaving, but with more overhead. From 0 to INT_MAX. +@item -movflags +MOV muxer flags. Default is 0. + +Possible values: +@table @samp +@item delay_moov +Delay writing the initial moov until the first fragment is cut, or +until the first fragment is flushed. +@item frag_custom Allow the caller to manually choose when to cut fragments, by calling @code{av_write_frame(ctx, NULL)} to write a fragment with the packets written so far. (This is only useful with other applications integrating libavformat, not from @command{ffmpeg}.) -@item -min_frag_duration @var{duration} -Don't create fragments that are shorter than @var{duration} microseconds long. +@item frag_discont +Signal that the next fragment is discontinuous from earlier ones. +@item frag_every_frame +Fragment at every frame. +@item frag_keyframe +Start a new fragment at each video keyframe. +@item skip_trailer +Skip writing the mfra/tfra/mfro trailer for fragmented files. +@item cmaf +Write CMAF compatible fragmented MP4. +@item dash +Write DASH compatible fragmented MP4. +@item isml +Create a live smooth streaming feed (for pushing to a publishing point). +@end table @end table If more than one condition is specified, fragments are cut when @@ -1433,7 +1457,15 @@ Additionally, the way the output file is written can be adjusted through a few other options: @table @option -@item -movflags empty_moov + +@item -movflags +MOV muxer flags. Default is 0. + +Possible values: +@table @samp + + +@item empty_moov Write an initial moov atom directly at the start of the file, without describing any samples in it. Generally, an mdat/moov pair is written at the start of the file, as a normal MOV/MP4 file, containing only @@ -1442,50 +1474,65 @@ mdat atom, and the moov atom only describes the tracks but has a zero duration. This option is implicitly set when writing ismv (Smooth Streaming) files. -@item -movflags separate_moof +@item separate_moof Write a separate moof (movie fragment) atom for each track. Normally, packets for all tracks are written in a moof atom (which is slightly more efficient), but with this option set, the muxer writes one moof/mdat pair for each track, making it easier to separate tracks. This option is implicitly set when writing ismv (Smooth Streaming) files. -@item -movflags skip_sidx + +@item negative_cts_offsets +Enables utilization of version 1 of the CTTS box, in which the CTS offsets can +be negative. This enables the initial sample to have DTS/CTS of zero, and +reduces the need for edit lists for some cases such as video tracks with +B-frames. Additionally, eases conformance with the DASH-IF interoperability +guidelines. + +This option is implicitly set when writing ismv (Smooth Streaming) files. +@item skip_sidx Skip writing of sidx atom. When bitrate overhead due to sidx atom is high, this option could be used for cases where sidx atom is not mandatory. When global_sidx flag is enabled, this option will be ignored. -@item -movflags faststart +@item faststart Run a second pass moving the index (moov atom) to the beginning of the file. This operation can take a while, and will not work in various situations such as fragmented output, thus it is not enabled by default. -@item -movflags rtphint +@item rtphint Add RTP hinting tracks to the output file. -@item -movflags disable_chpl +@item disable_chpl Disable Nero chapter markers (chpl atom). Normally, both Nero chapters and a QuickTime chapter track are written to the file. With this option set, only the QuickTime chapter track will be written. Nero chapters can cause failures when the file is reprocessed with certain tagging programs, like mp3Tag 2.61a and iTunes 11.3, most likely other versions are affected as well. -@item -movflags omit_tfhd_offset +@item omit_tfhd_offset Do not write any absolute base_data_offset in tfhd atoms. This avoids tying fragments to absolute byte positions in the file/streams. -@item -movflags default_base_moof +@item default_base_moof Similarly to the omit_tfhd_offset, this flag avoids writing the absolute base_data_offset field in tfhd atoms, but does so by using the new default-base-is-moof flag instead. This flag is new from 14496-12:2012. This may make the fragments easier to parse in certain circumstances (avoiding basing track fragment location calculations on the implicit end of the previous track fragment). +@item global_sidx +Write a global sidx index at the start of the file. +@item write_colr +Write colr atom. Experimental, may be renamed or changed, do not use from +scripts. +@item prefer_icc +If writing colr atom (with @samp{write_colr}) prioritise usage of ICC profile +if it exists in stream packet side data. +@item write_gama +Write deprecated gama atom. +@item use_metadata_tags +Use mdta atom for metadata. +@end table + @item -write_tmcd Specify @code{on} to force writing a timecode track, @code{off} to disable it and @code{auto} to write a timecode track only for mov and mp4 output (default). -@item -movflags negative_cts_offsets -Enables utilization of version 1 of the CTTS box, in which the CTS offsets can -be negative. This enables the initial sample to have DTS/CTS of zero, and -reduces the need for edit lists for some cases such as video tracks with -B-frames. Additionally, eases conformance with the DASH-IF interoperability -guidelines. - -This option is implicitly set when writing ismv (Smooth Streaming) files. @item -write_prft Write producer time reference box (PRFT) with a specified time source for the NTP field in the PRFT box. Set value as @samp{wallclock} to specify timesource @@ -1496,6 +1543,33 @@ Setting value to @samp{pts} is applicable only for a live encoding use case, where PTS values are set as as wallclock time at the source. For example, an encoding use case with decklink capture source where @option{video_pts} and @option{audio_pts} are set to @samp{abs_wallclock}. +@item -skip_iods @var{boolean} +Skip writing iods atom. Default true. +@item -iods_audio_profile @var{integer} +iods audio profile atom. From -1 to 255. Default -1. +@item -iods_video_profile @var{integer} +iods video profile atom. From -1 to 255. Default -1. +@item -ism_lookahead @var{integer} +Number of lookahead entries for ISM files. From 0 to INT_MAX. Default 0. +@item -video_track_timescale @var{integer} +Set timescale of all video tracks. From 0 to INT_MAX. Default 0. +@item -brand @var{string} +Override major brand. +@item -use_editlist @var{boolean} +Use edit list. Default auto. +@item -fragment_index @var{integer} +Fragment number of the next fragment. From 0 to INT_MAX. Default 0. +@item -mov_gamma @var{float} +Gamma value for gama atom. From 0 to 10. Default 0. +@item -encryption_scheme @var{string} +Configures the encryption scheme. Allowed values are @code{none} or +@code{cenc-aes-ctr}. +@item -encryption_key @var{binary} +The media encryption key (hex). +@item -encryption_kid @var{binary} +The media encryption key identifier (hex). +@item -use_stream_ids_as_track_ids @var{boolean} +Use stream IDs as track IDs. Default false. @end table @subsection Example