From patchwork Wed Mar 20 16:29:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Sabatini X-Patchwork-Id: 47269 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a4a:b0:1a3:31a3:7958 with SMTP id zu10csp5059pzb; Wed, 20 Mar 2024 09:29:47 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXhwVV5M0dOGo26WFXV0Y9LiTAU5xNpWCzScoY/N1MAfVG/IHV93yeMiDzJtlNC4/yR76z6wSiG0Cu7N8kXnfNiuZ0pGIP2BVB8IA== X-Google-Smtp-Source: AGHT+IEdyvIaAn7Gh2bo9hHduvc6AQprt1bq+c/RamQZiBkIb4oSP7xqsVsyk1RkOoYWLtEjtgWF X-Received: by 2002:a05:6402:401a:b0:56b:b8c8:53e4 with SMTP id d26-20020a056402401a00b0056bb8c853e4mr935673eda.4.1710952186998; Wed, 20 Mar 2024 09:29:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1710952186; cv=none; d=google.com; s=arc-20160816; b=JW14PuLD4rvGVzRimfT0hC2xXN8XGH6z1IO/S6M/Ev6bEiOWumNPLQj9A1RKFkYqcd Bot+mu+gtfDvrfdTrMvDiO9DYG4MSwzulzSC2FebWCtGnSZFJYcPhlr3hYce8eoRtkwG ooJmTaY7bVEJF/E3hhmZEO3tBqMWP2RguNtU5/bKYpBbvE+QsQYnpkMOLwibk91ftCrh jh2aR9Ql9/Z4nmpw4lnlPLb92rEtgbukA9kW5XPHvmGpCYGV0WxUK8zw9KCShukijFGn Jt6KXe6tOiEEoLbNIcFwlcc4GCrRvJN7BZFo8f/WZVlDbl3bj7Abm+ZibcbG6Id+Z5d3 L0Pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=fd6/M0lGDCFzMh1aXgBfZHLiaisgyOW0Fj+8vD9HVro=; fh=QdWxt2OToL83TTnLQn0lGhLakV7i1QyAJdC8te7qN0E=; b=fBBVqXUJC7MzFzZrSeOq2plndHTzr31bxAeZK/JAWXyBn/bdFwDBcv+nYSK70qDRhT kiUyke7zEuG/6FkHwGLTHescBekvmwUt3ed3rO1fVi9IEE2Z5/ZzgxzrB9kq1QDTtxQ9 nxe70rY0dBOjeOfoBtJksozxISPijSgPj0QCgq9S9C5Brm4I1sgtU/Bt+NpMpBSm3ahH jawwUC8kJM4ydjtql0VdT5YXaa38n0rH+vQWGYVB52EXYploe71U0qIrchzUO+xB53lF Lx6jAJw9MWMdsbW7eU1Nrjt3p5K568Jg7YA/g1k8H8bp/GmbJQSeiI5+4K2YCHrT6Ao+ rDAA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=XzA0g1mk; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y22-20020a056402359600b00568c5c7a3e3si4372609edc.555.2024.03.20.09.29.46; Wed, 20 Mar 2024 09:29:46 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=XzA0g1mk; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8125268D4BB; Wed, 20 Mar 2024 18:29:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F335C68D4A6 for ; Wed, 20 Mar 2024 18:29:22 +0200 (EET) Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4146af3ebc8so6958125e9.2 for ; Wed, 20 Mar 2024 09:29:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710952161; x=1711556961; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=A8XrLkORdRBMRPpoSJVHeEb2mL5eK6UzYEkb52EOyq4=; b=XzA0g1mkgu8qTpk7TUX6xJV2NAcHh4IaTZtvg4os+sMLATNZSLPWwe27dP9XBygk3I Eht9s2GiteNKva9f2KBv+UYNe0AJLfGVz8GexmfBHksgZWp8B4GPeifpEUI/3fbqE4/2 P1N9RFey1ukUkn88ALpXwefQB8ca/qHwNblcnS7hPUfRJokcY67N8gZMuEC4brPdBmzX vHH2w6ozcpgfTbggMa0lg/Jl3QdYkh2NX3Zi8B1IY+1RXkNKnYVi82yDQH1K1KGAvjlg LSrH+/LJrXzC94MZdTYua9YR3JYnNYX8YnI+ZfnqAm/gmG4Y+TKc6qMkZxGEQS44qegy jDxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710952161; x=1711556961; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=A8XrLkORdRBMRPpoSJVHeEb2mL5eK6UzYEkb52EOyq4=; b=Nhw0bwD3hesu1LNi6uPkeOO8ib0CCEik3Iu5/oNbdbMoEfT2CDMvIdrkDpWBmPQwG5 dc1MljblSEQMGS4htGbWxGzVNbM/vztaT5devS1H1IfdB8JxNanShHBSOQ5P0lJquMsd yH2056GUI9LOnjCBKj7eJUTGvopt5z38evf5ycSGQTd5IbItWkmddSTBZf7L29UhceFP ppO2cv2y2ZyMNNHpQraSE7LUGmIztaQBs8WF8UyoKO9zn9M6QMuIoyGkHoWOcvxz3lvP 6Cw9SkGdKdeatm0M40NTw+H+Sh3rQm1swXgwL+r+Xg0nTZSvRnFOR9aQyI+9jD/ZkBtk rvVg== X-Gm-Message-State: AOJu0Yxr+BqvW8afaIeDSN8W9SbnDC42wRQrWT/7D/wQ7BAsppJUpXb7 WRH6BnuLjfnK4VPgcXcNobwRUEKIuSexz2h01PoBhsQj6dXlt/t7rRNFs3xg X-Received: by 2002:a05:600c:19d1:b0:414:6d31:1e0f with SMTP id u17-20020a05600c19d100b004146d311e0fmr1608775wmq.4.1710952161296; Wed, 20 Mar 2024 09:29:21 -0700 (PDT) Received: from mariano ([188.210.239.0]) by smtp.gmail.com with ESMTPSA id e13-20020a05600c218d00b00412cfdc41f7sm1361574wme.0.2024.03.20.09.29.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Mar 2024 09:29:20 -0700 (PDT) Received: by mariano (Postfix, from userid 1000) id DDAA2BFCDC; Wed, 20 Mar 2024 17:29:19 +0100 (CET) From: Stefano Sabatini To: FFmpeg development discussions and patches Date: Wed, 20 Mar 2024 17:29:19 +0100 Message-Id: <20240320162919.70930-1-stefasab@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] doc/muxers: add hds X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: Stefano Sabatini Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: OC0Ig7RKSjS+ --- doc/muxers.texi | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/doc/muxers.texi b/doc/muxers.texi index 25d1a5907e..e7f2a93058 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -1831,6 +1831,45 @@ ffmpeg -i INPUT -f hash -hash md5 - See also the @ref{framehash} muxer. +@anchor{hds} +@section hds +HTTP Dynamic Streaming (HDS) muxer. + +HTTP dynamic streaming, or HDS, is an adaptive bitrate streaming method +developed by Adobe. HDS delivers MP4 video content over HTTP connections. HDS +can be used for on-demand streaming or live streaming. + +This muxer creates an .f4m (Adobe Flash Media Manifest File) manifest, an .abst +(Adobe Bootstrap File) for each stream, and segment files in a directory +specified as the output. + +These needs to be accessed by an HDS player throuhg HTTPS for it to be able to +perform playback on the generated stream. + +@subsection Options +@table @option +@item extra_window_size @var{int} +number of fragments kept outside of the manifest before removing from disk + +@item min_frag_duration @var{microseconds} +minimum fragment duration (in microseconds), default value is 1 second +(@code{10000000}) + +@item remove_at_exit @var{bool} +remove all fragments when finished when set to @code{true} + +@item window_size @var{int} +number of fragments kept in the manifest, if set to a value different from +@code{0}. By default all segments are kept in the output directory. +@end table + +@subsection Example +Use @command{ffmpeg} to generate HDS files to the @file{output.hds} directory in +real-time rate: +@example +ffmpeg -re -i INPUT -f hds -b:v 200k output.hds +@end example + @anchor{hls} @section hls