urikxx commited on
Commit
b89060c
·
verified ·
1 Parent(s): 43dab7b

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +2 -0
  2. .gitignore +0 -2
  3. .ipynb_checkpoints/Untitled-checkpoint.ipynb +6 -0
  4. Untitled.ipynb +315 -0
  5. assets/.ipynb_checkpoints/echomimic-checkpoint.png +0 -0
  6. assets/test_imgs/.ipynb_checkpoints/b-checkpoint.png +0 -0
  7. ffmpeg-4.4-amd64-static/GPLv3.txt +674 -0
  8. ffmpeg-4.4-amd64-static/ffmpeg +3 -0
  9. ffmpeg-4.4-amd64-static/ffprobe +3 -0
  10. ffmpeg-4.4-amd64-static/manpages/ffmpeg-all.txt +0 -0
  11. ffmpeg-4.4-amd64-static/manpages/ffmpeg-bitstream-filters.txt +705 -0
  12. ffmpeg-4.4-amd64-static/manpages/ffmpeg-codecs.txt +0 -0
  13. ffmpeg-4.4-amd64-static/manpages/ffmpeg-devices.txt +1854 -0
  14. ffmpeg-4.4-amd64-static/manpages/ffmpeg-filters.txt +0 -0
  15. ffmpeg-4.4-amd64-static/manpages/ffmpeg-formats.txt +0 -0
  16. ffmpeg-4.4-amd64-static/manpages/ffmpeg-protocols.txt +1768 -0
  17. ffmpeg-4.4-amd64-static/manpages/ffmpeg-resampler.txt +269 -0
  18. ffmpeg-4.4-amd64-static/manpages/ffmpeg-scaler.txt +156 -0
  19. ffmpeg-4.4-amd64-static/manpages/ffmpeg-utils.txt +1229 -0
  20. ffmpeg-4.4-amd64-static/manpages/ffmpeg.txt +0 -0
  21. ffmpeg-4.4-amd64-static/manpages/ffprobe.txt +954 -0
  22. ffmpeg-4.4-amd64-static/model/000-PLEASE-README.TXT +4 -0
  23. ffmpeg-4.4-amd64-static/model/other_models/model_V8a.model +3 -0
  24. ffmpeg-4.4-amd64-static/model/other_models/nflx_v1.pkl +3 -0
  25. ffmpeg-4.4-amd64-static/model/other_models/nflx_v1.pkl.model +3 -0
  26. ffmpeg-4.4-amd64-static/model/other_models/nflx_vmaff_rf_v1.pkl +3 -0
  27. ffmpeg-4.4-amd64-static/model/other_models/nflx_vmaff_rf_v2.pkl +3 -0
  28. ffmpeg-4.4-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl +3 -0
  29. ffmpeg-4.4-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl.model +3 -0
  30. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv1.pkl +3 -0
  31. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv1.pkl.model +3 -0
  32. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv2.pkl +3 -0
  33. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv2.pkl.model +3 -0
  34. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3.pkl +3 -0
  35. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3.pkl.model +3 -0
  36. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3a.pkl +3 -0
  37. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3a.pkl.model +3 -0
  38. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv4.pkl +3 -0
  39. ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv4.pkl.model +3 -0
  40. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_libsvmnusvr_currentbest.pkl +3 -0
  41. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_libsvmnusvr_currentbest.pkl.model +3 -0
  42. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_norm_type_none.pkl +3 -0
  43. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_norm_type_none.pkl.model +3 -0
  44. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv1.pkl +3 -0
  45. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv1.pkl.model +3 -0
  46. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv2.pkl +3 -0
  47. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv2.pkl.model +3 -0
  48. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv3.pkl +3 -0
  49. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv3.pkl.model +3 -0
  50. ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv3a.pkl +3 -0
.gitattributes CHANGED
@@ -49,3 +49,5 @@ EchoMimic/assets/test_imgs/d.png filter=lfs diff=lfs merge=lfs -text
49
  EchoMimic/assets/test_imgs/e.png filter=lfs diff=lfs merge=lfs -text
50
  EchoMimic/assets/test_pose_demo_audios/movie_0_clip_0.wav filter=lfs diff=lfs merge=lfs -text
51
  EchoMimic/src/utils/mp_models/face_landmarker_v2_with_blendshapes.task filter=lfs diff=lfs merge=lfs -text
 
 
 
49
  EchoMimic/assets/test_imgs/e.png filter=lfs diff=lfs merge=lfs -text
50
  EchoMimic/assets/test_pose_demo_audios/movie_0_clip_0.wav filter=lfs diff=lfs merge=lfs -text
51
  EchoMimic/src/utils/mp_models/face_landmarker_v2_with_blendshapes.task filter=lfs diff=lfs merge=lfs -text
52
+ ffmpeg-4.4-amd64-static/ffmpeg filter=lfs diff=lfs merge=lfs -text
53
+ ffmpeg-4.4-amd64-static/ffprobe filter=lfs diff=lfs merge=lfs -text
.gitignore CHANGED
@@ -1,4 +1,2 @@
1
- ffmpeg-4.4-amd64-static
2
- pretrained_weights
3
  output
4
  __pycache__
 
 
 
1
  output
2
  __pycache__
.ipynb_checkpoints/Untitled-checkpoint.ipynb ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [],
3
+ "metadata": {},
4
+ "nbformat": 4,
5
+ "nbformat_minor": 5
6
+ }
Untitled.ipynb ADDED
@@ -0,0 +1,315 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "4a8767df-feea-4bda-8bfb-ab07f667cd11",
7
+ "metadata": {},
8
+ "outputs": [
9
+ {
10
+ "ename": "ModuleNotFoundError",
11
+ "evalue": "No module named 'cv2'",
12
+ "output_type": "error",
13
+ "traceback": [
14
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
15
+ "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
16
+ "Cell \u001b[0;32mIn[1], line 12\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatetime\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m datetime\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpathlib\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[0;32m---> 12\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mcv2\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtorch\u001b[39;00m\n",
17
+ "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'cv2'"
18
+ ]
19
+ }
20
+ ],
21
+ "source": [
22
+ "#!/usr/bin/env python\n",
23
+ "# -*- coding: UTF-8 -*-\n",
24
+ "'''\n",
25
+ "webui\n",
26
+ "'''\n",
27
+ "\n",
28
+ "import os\n",
29
+ "import random\n",
30
+ "from datetime import datetime\n",
31
+ "from pathlib import Path\n",
32
+ "\n",
33
+ "import cv2\n",
34
+ "import numpy as np\n",
35
+ "import torch\n",
36
+ "from diffusers import AutoencoderKL, DDIMScheduler\n",
37
+ "from omegaconf import OmegaConf\n",
38
+ "from PIL import Image\n",
39
+ "from src.models.unet_2d_condition import UNet2DConditionModel\n",
40
+ "from src.models.unet_3d_echo import EchoUNet3DConditionModel\n",
41
+ "from src.models.whisper.audio2feature import load_audio_model\n",
42
+ "from src.pipelines.pipeline_echo_mimic import Audio2VideoPipeline\n",
43
+ "from src.utils.util import save_videos_grid, crop_and_pad\n",
44
+ "from src.models.face_locator import FaceLocator\n",
45
+ "from moviepy.editor import VideoFileClip, AudioFileClip\n",
46
+ "from facenet_pytorch import MTCNN\n",
47
+ "import argparse\n",
48
+ "\n",
49
+ "import gradio as gr\n",
50
+ "\n",
51
+ "default_values = {\n",
52
+ " \"width\": 512,\n",
53
+ " \"height\": 512,\n",
54
+ " \"length\": 1200,\n",
55
+ " \"seed\": 420,\n",
56
+ " \"facemask_dilation_ratio\": 0.1,\n",
57
+ " \"facecrop_dilation_ratio\": 0.5,\n",
58
+ " \"context_frames\": 12,\n",
59
+ " \"context_overlap\": 3,\n",
60
+ " \"cfg\": 2.5,\n",
61
+ " \"steps\": 30,\n",
62
+ " \"sample_rate\": 16000,\n",
63
+ " \"fps\": 24,\n",
64
+ " \"device\": \"cuda\"\n",
65
+ "}\n",
66
+ "\n",
67
+ "ffmpeg_path = os.getenv('FFMPEG_PATH')\n",
68
+ "if ffmpeg_path is None:\n",
69
+ " print(\"please download ffmpeg-static and export to FFMPEG_PATH. \\nFor example: export FFMPEG_PATH=/musetalk/ffmpeg-4.4-amd64-static\")\n",
70
+ "elif ffmpeg_path not in os.getenv('PATH'):\n",
71
+ " print(\"add ffmpeg to path\")\n",
72
+ " os.environ[\"PATH\"] = f\"{ffmpeg_path}:{os.environ['PATH']}\"\n",
73
+ "\n",
74
+ "\n",
75
+ "config_path = \"./configs/prompts/animation.yaml\"\n",
76
+ "config = OmegaConf.load(config_path)\n",
77
+ "if config.weight_dtype == \"fp16\":\n",
78
+ " weight_dtype = torch.float16\n",
79
+ "else:\n",
80
+ " weight_dtype = torch.float32\n",
81
+ "\n",
82
+ "device = \"cuda\"\n",
83
+ "if not torch.cuda.is_available():\n",
84
+ " device = \"cpu\"\n",
85
+ "\n",
86
+ "inference_config_path = config.inference_config\n",
87
+ "infer_config = OmegaConf.load(inference_config_path)\n",
88
+ "\n",
89
+ "############# model_init started #############\n",
90
+ "## vae init\n",
91
+ "vae = AutoencoderKL.from_pretrained(config.pretrained_vae_path).to(\"cuda\", dtype=weight_dtype)\n",
92
+ "\n",
93
+ "## reference net init\n",
94
+ "reference_unet = UNet2DConditionModel.from_pretrained(\n",
95
+ " config.pretrained_base_model_path,\n",
96
+ " subfolder=\"unet\",\n",
97
+ ").to(dtype=weight_dtype, device=device)\n",
98
+ "reference_unet.load_state_dict(torch.load(config.reference_unet_path, map_location=\"cpu\"))\n",
99
+ "\n",
100
+ "## denoising net init\n",
101
+ "if os.path.exists(config.motion_module_path):\n",
102
+ " ### stage1 + stage2\n",
103
+ " denoising_unet = EchoUNet3DConditionModel.from_pretrained_2d(\n",
104
+ " config.pretrained_base_model_path,\n",
105
+ " config.motion_module_path,\n",
106
+ " subfolder=\"unet\",\n",
107
+ " unet_additional_kwargs=infer_config.unet_additional_kwargs,\n",
108
+ " ).to(dtype=weight_dtype, device=device)\n",
109
+ "else:\n",
110
+ " ### only stage1\n",
111
+ " denoising_unet = EchoUNet3DConditionModel.from_pretrained_2d(\n",
112
+ " config.pretrained_base_model_path,\n",
113
+ " \"\",\n",
114
+ " subfolder=\"unet\",\n",
115
+ " unet_additional_kwargs={\n",
116
+ " \"use_motion_module\": False,\n",
117
+ " \"unet_use_temporal_attention\": False,\n",
118
+ " \"cross_attention_dim\": infer_config.unet_additional_kwargs.cross_attention_dim\n",
119
+ " }\n",
120
+ " ).to(dtype=weight_dtype, device=device)\n",
121
+ "\n",
122
+ "denoising_unet.load_state_dict(torch.load(config.denoising_unet_path, map_location=\"cpu\"), strict=False)\n",
123
+ "\n",
124
+ "## face locator init\n",
125
+ "face_locator = FaceLocator(320, conditioning_channels=1, block_out_channels=(16, 32, 96, 256)).to(dtype=weight_dtype, device=\"cuda\")\n",
126
+ "face_locator.load_state_dict(torch.load(config.face_locator_path))\n",
127
+ "\n",
128
+ "## load audio processor params\n",
129
+ "audio_processor = load_audio_model(model_path=config.audio_model_path, device=device)\n",
130
+ "\n",
131
+ "## load face detector params\n",
132
+ "face_detector = MTCNN(image_size=320, margin=0, min_face_size=20, thresholds=[0.6, 0.7, 0.7], factor=0.709, post_process=True, device=device)\n",
133
+ "\n",
134
+ "############# model_init finished #############\n",
135
+ "\n",
136
+ "sched_kwargs = OmegaConf.to_container(infer_config.noise_scheduler_kwargs)\n",
137
+ "scheduler = DDIMScheduler(**sched_kwargs)\n",
138
+ "\n",
139
+ "pipe = Audio2VideoPipeline(\n",
140
+ " vae=vae,\n",
141
+ " reference_unet=reference_unet,\n",
142
+ " denoising_unet=denoising_unet,\n",
143
+ " audio_guider=audio_processor,\n",
144
+ " face_locator=face_locator,\n",
145
+ " scheduler=scheduler,\n",
146
+ ").to(\"cuda\", dtype=weight_dtype)\n",
147
+ "\n",
148
+ "def select_face(det_bboxes, probs):\n",
149
+ " ## max face from faces that the prob is above 0.8\n",
150
+ " ## box: xyxy\n",
151
+ " if det_bboxes is None or probs is None:\n",
152
+ " return None\n",
153
+ " filtered_bboxes = []\n",
154
+ " for bbox_i in range(len(det_bboxes)):\n",
155
+ " if probs[bbox_i] > 0.8:\n",
156
+ " filtered_bboxes.append(det_bboxes[bbox_i])\n",
157
+ " if len(filtered_bboxes) == 0:\n",
158
+ " return None\n",
159
+ " sorted_bboxes = sorted(filtered_bboxes, key=lambda x:(x[3]-x[1]) * (x[2] - x[0]), reverse=True)\n",
160
+ " return sorted_bboxes[0]\n",
161
+ "\n",
162
+ "def process_video(uploaded_img, uploaded_audio, width, height, length, seed, facemask_dilation_ratio, facecrop_dilation_ratio, context_frames, context_overlap, cfg, steps, sample_rate, fps, device):\n",
163
+ "\n",
164
+ " if seed is not None and seed > -1:\n",
165
+ " generator = torch.manual_seed(seed)\n",
166
+ " else:\n",
167
+ " generator = torch.manual_seed(random.randint(100, 1000000))\n",
168
+ "\n",
169
+ " #### face musk prepare\n",
170
+ " face_img = cv2.imread(uploaded_img)\n",
171
+ " face_mask = np.zeros((face_img.shape[0], face_img.shape[1])).astype('uint8')\n",
172
+ " det_bboxes, probs = face_detector.detect(face_img)\n",
173
+ " select_bbox = select_face(det_bboxes, probs)\n",
174
+ " if select_bbox is None:\n",
175
+ " face_mask[:, :] = 255\n",
176
+ " else:\n",
177
+ " xyxy = select_bbox[:4]\n",
178
+ " xyxy = np.round(xyxy).astype('int')\n",
179
+ " rb, re, cb, ce = xyxy[1], xyxy[3], xyxy[0], xyxy[2]\n",
180
+ " r_pad = int((re - rb) * facemask_dilation_ratio)\n",
181
+ " c_pad = int((ce - cb) * facemask_dilation_ratio)\n",
182
+ " face_mask[rb - r_pad : re + r_pad, cb - c_pad : ce + c_pad] = 255\n",
183
+ " \n",
184
+ " #### face crop\n",
185
+ " r_pad_crop = int((re - rb) * facecrop_dilation_ratio)\n",
186
+ " c_pad_crop = int((ce - cb) * facecrop_dilation_ratio)\n",
187
+ " crop_rect = [max(0, cb - c_pad_crop), max(0, rb - r_pad_crop), min(ce + c_pad_crop, face_img.shape[1]), min(re + r_pad_crop, face_img.shape[0])]\n",
188
+ " face_img = crop_and_pad(face_img, crop_rect)\n",
189
+ " face_mask = crop_and_pad(face_mask, crop_rect)\n",
190
+ " face_img = cv2.resize(face_img, (width, height))\n",
191
+ " face_mask = cv2.resize(face_mask, (width, height))\n",
192
+ "\n",
193
+ " ref_image_pil = Image.fromarray(face_img[:, :, [2, 1, 0]])\n",
194
+ " face_mask_tensor = torch.Tensor(face_mask).to(dtype=weight_dtype, device=\"cuda\").unsqueeze(0).unsqueeze(0).unsqueeze(0) / 255.0\n",
195
+ " \n",
196
+ " video = pipe(\n",
197
+ " ref_image_pil,\n",
198
+ " uploaded_audio,\n",
199
+ " face_mask_tensor,\n",
200
+ " width,\n",
201
+ " height,\n",
202
+ " length,\n",
203
+ " steps,\n",
204
+ " cfg,\n",
205
+ " generator=generator,\n",
206
+ " audio_sample_rate=sample_rate,\n",
207
+ " context_frames=context_frames,\n",
208
+ " fps=fps,\n",
209
+ " context_overlap=context_overlap\n",
210
+ " ).videos\n",
211
+ "\n",
212
+ " save_dir = Path(\"output/tmp\")\n",
213
+ " save_dir.mkdir(exist_ok=True, parents=True)\n",
214
+ " output_video_path = save_dir / \"output_video.mp4\"\n",
215
+ " save_videos_grid(video, str(output_video_path), n_rows=1, fps=fps)\n",
216
+ "\n",
217
+ " video_clip = VideoFileClip(str(output_video_path))\n",
218
+ " audio_clip = AudioFileClip(uploaded_audio)\n",
219
+ " final_output_path = save_dir / \"output_video_with_audio.mp4\"\n",
220
+ " video_clip = video_clip.set_audio(audio_clip)\n",
221
+ " video_clip.write_videofile(str(final_output_path), codec=\"libx264\", audio_codec=\"aac\")\n",
222
+ "\n",
223
+ " return final_output_path\n",
224
+ " \n",
225
+ "with gr.Blocks() as demo:\n",
226
+ " gr.Markdown('# EchoMimic')\n",
227
+ " gr.Markdown('![]()')\n",
228
+ " with gr.Row():\n",
229
+ " with gr.Column():\n",
230
+ " uploaded_img = gr.Image(type=\"filepath\", label=\"Reference Image\")\n",
231
+ " uploaded_audio = gr.Audio(type=\"filepath\", label=\"Input Audio\")\n",
232
+ " with gr.Column():\n",
233
+ " output_video = gr.Video()\n",
234
+ "\n",
235
+ " with gr.Accordion(\"Configuration\", open=False):\n",
236
+ " width = gr.Slider(label=\"Width\", minimum=128, maximum=1024, value=default_values[\"width\"])\n",
237
+ " height = gr.Slider(label=\"Height\", minimum=128, maximum=1024, value=default_values[\"height\"])\n",
238
+ " length = gr.Slider(label=\"Length\", minimum=100, maximum=5000, value=default_values[\"length\"])\n",
239
+ " seed = gr.Slider(label=\"Seed\", minimum=0, maximum=10000, value=default_values[\"seed\"])\n",
240
+ " facemask_dilation_ratio = gr.Slider(label=\"Facemask Dilation Ratio\", minimum=0.0, maximum=1.0, step=0.01, value=default_values[\"facemask_dilation_ratio\"])\n",
241
+ " facecrop_dilation_ratio = gr.Slider(label=\"Facecrop Dilation Ratio\", minimum=0.0, maximum=1.0, step=0.01, value=default_values[\"facecrop_dilation_ratio\"])\n",
242
+ " context_frames = gr.Slider(label=\"Context Frames\", minimum=0, maximum=50, step=1, value=default_values[\"context_frames\"])\n",
243
+ " context_overlap = gr.Slider(label=\"Context Overlap\", minimum=0, maximum=10, step=1, value=default_values[\"context_overlap\"])\n",
244
+ " cfg = gr.Slider(label=\"CFG\", minimum=0.0, maximum=10.0, step=0.1, value=default_values[\"cfg\"])\n",
245
+ " steps = gr.Slider(label=\"Steps\", minimum=1, maximum=100, step=1, value=default_values[\"steps\"])\n",
246
+ " sample_rate = gr.Slider(label=\"Sample Rate\", minimum=8000, maximum=48000, step=1000, value=default_values[\"sample_rate\"])\n",
247
+ " fps = gr.Slider(label=\"FPS\", minimum=1, maximum=60, step=1, value=default_values[\"fps\"])\n",
248
+ " device = gr.Radio(label=\"Device\", choices=[\"cuda\", \"cpu\"], value=default_values[\"device\"])\n",
249
+ "\n",
250
+ " generate_button = gr.Button(\"Generate Video\")\n",
251
+ "\n",
252
+ " def generate_video(uploaded_img, uploaded_audio, width, height, length, seed, facemask_dilation_ratio, facecrop_dilation_ratio, context_frames, context_overlap, cfg, steps, sample_rate, fps, device):\n",
253
+ "\n",
254
+ " final_output_path = process_video(\n",
255
+ " uploaded_img, uploaded_audio, width, height, length, seed, facemask_dilation_ratio, facecrop_dilation_ratio, context_frames, context_overlap, cfg, steps, sample_rate, fps, device\n",
256
+ " ) \n",
257
+ " output_video= final_output_path\n",
258
+ " return final_output_path\n",
259
+ "\n",
260
+ " generate_button.click(\n",
261
+ " generate_video,\n",
262
+ " inputs=[\n",
263
+ " uploaded_img,\n",
264
+ " uploaded_audio,\n",
265
+ " width,\n",
266
+ " height,\n",
267
+ " length,\n",
268
+ " seed,\n",
269
+ " facemask_dilation_ratio,\n",
270
+ " facecrop_dilation_ratio,\n",
271
+ " context_frames,\n",
272
+ " context_overlap,\n",
273
+ " cfg,\n",
274
+ " steps,\n",
275
+ " sample_rate,\n",
276
+ " fps,\n",
277
+ " device\n",
278
+ " ],\n",
279
+ " outputs=output_video\n",
280
+ " )\n",
281
+ "parser = argparse.ArgumentParser(description='EchoMimic')\n",
282
+ "parser.add_argument('--server_name', type=str, default='0.0.0.0', help='Server name')\n",
283
+ "parser.add_argument('--server_port', type=int, default=7680, help='Server port')\n",
284
+ "args = parser.parse_args()\n",
285
+ "\n",
286
+ "# demo.launch(server_name=args.server_name, server_port=args.server_port, inbrowser=True)\n",
287
+ "\n",
288
+ "if __name__ == '__main__':\n",
289
+ " #demo.launch(server_name='0.0.0.0')\n",
290
+ " demo.launch(server_name=args.server_name, server_port=args.server_port, inbrowser=True, share=True)"
291
+ ]
292
+ }
293
+ ],
294
+ "metadata": {
295
+ "kernelspec": {
296
+ "display_name": "Python 3 (ipykernel)",
297
+ "language": "python",
298
+ "name": "python3"
299
+ },
300
+ "language_info": {
301
+ "codemirror_mode": {
302
+ "name": "ipython",
303
+ "version": 3
304
+ },
305
+ "file_extension": ".py",
306
+ "mimetype": "text/x-python",
307
+ "name": "python",
308
+ "nbconvert_exporter": "python",
309
+ "pygments_lexer": "ipython3",
310
+ "version": "3.10.13"
311
+ }
312
+ },
313
+ "nbformat": 4,
314
+ "nbformat_minor": 5
315
+ }
assets/.ipynb_checkpoints/echomimic-checkpoint.png ADDED
assets/test_imgs/.ipynb_checkpoints/b-checkpoint.png ADDED
ffmpeg-4.4-amd64-static/GPLv3.txt ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+ Preamble
9
+
10
+ The GNU General Public License is a free, copyleft license for
11
+ software and other kinds of works.
12
+
13
+ The licenses for most software and other practical works are designed
14
+ to take away your freedom to share and change the works. By contrast,
15
+ the GNU General Public License is intended to guarantee your freedom to
16
+ share and change all versions of a program--to make sure it remains free
17
+ software for all its users. We, the Free Software Foundation, use the
18
+ GNU General Public License for most of our software; it applies also to
19
+ any other work released this way by its authors. You can apply it to
20
+ your programs, too.
21
+
22
+ When we speak of free software, we are referring to freedom, not
23
+ price. Our General Public Licenses are designed to make sure that you
24
+ have the freedom to distribute copies of free software (and charge for
25
+ them if you wish), that you receive source code or can get it if you
26
+ want it, that you can change the software or use pieces of it in new
27
+ free programs, and that you know you can do these things.
28
+
29
+ To protect your rights, we need to prevent others from denying you
30
+ these rights or asking you to surrender the rights. Therefore, you have
31
+ certain responsibilities if you distribute copies of the software, or if
32
+ you modify it: responsibilities to respect the freedom of others.
33
+
34
+ For example, if you distribute copies of such a program, whether
35
+ gratis or for a fee, you must pass on to the recipients the same
36
+ freedoms that you received. You must make sure that they, too, receive
37
+ or can get the source code. And you must show them these terms so they
38
+ know their rights.
39
+
40
+ Developers that use the GNU GPL protect your rights with two steps:
41
+ (1) assert copyright on the software, and (2) offer you this License
42
+ giving you legal permission to copy, distribute and/or modify it.
43
+
44
+ For the developers' and authors' protection, the GPL clearly explains
45
+ that there is no warranty for this free software. For both users' and
46
+ authors' sake, the GPL requires that modified versions be marked as
47
+ changed, so that their problems will not be attributed erroneously to
48
+ authors of previous versions.
49
+
50
+ Some devices are designed to deny users access to install or run
51
+ modified versions of the software inside them, although the manufacturer
52
+ can do so. This is fundamentally incompatible with the aim of
53
+ protecting users' freedom to change the software. The systematic
54
+ pattern of such abuse occurs in the area of products for individuals to
55
+ use, which is precisely where it is most unacceptable. Therefore, we
56
+ have designed this version of the GPL to prohibit the practice for those
57
+ products. If such problems arise substantially in other domains, we
58
+ stand ready to extend this provision to those domains in future versions
59
+ of the GPL, as needed to protect the freedom of users.
60
+
61
+ Finally, every program is threatened constantly by software patents.
62
+ States should not allow patents to restrict development and use of
63
+ software on general-purpose computers, but in those that do, we wish to
64
+ avoid the special danger that patents applied to a free program could
65
+ make it effectively proprietary. To prevent this, the GPL assures that
66
+ patents cannot be used to render the program non-free.
67
+
68
+ The precise terms and conditions for copying, distribution and
69
+ modification follow.
70
+
71
+ TERMS AND CONDITIONS
72
+
73
+ 0. Definitions.
74
+
75
+ "This License" refers to version 3 of the GNU General Public License.
76
+
77
+ "Copyright" also means copyright-like laws that apply to other kinds of
78
+ works, such as semiconductor masks.
79
+
80
+ "The Program" refers to any copyrightable work licensed under this
81
+ License. Each licensee is addressed as "you". "Licensees" and
82
+ "recipients" may be individuals or organizations.
83
+
84
+ To "modify" a work means to copy from or adapt all or part of the work
85
+ in a fashion requiring copyright permission, other than the making of an
86
+ exact copy. The resulting work is called a "modified version" of the
87
+ earlier work or a work "based on" the earlier work.
88
+
89
+ A "covered work" means either the unmodified Program or a work based
90
+ on the Program.
91
+
92
+ To "propagate" a work means to do anything with it that, without
93
+ permission, would make you directly or secondarily liable for
94
+ infringement under applicable copyright law, except executing it on a
95
+ computer or modifying a private copy. Propagation includes copying,
96
+ distribution (with or without modification), making available to the
97
+ public, and in some countries other activities as well.
98
+
99
+ To "convey" a work means any kind of propagation that enables other
100
+ parties to make or receive copies. Mere interaction with a user through
101
+ a computer network, with no transfer of a copy, is not conveying.
102
+
103
+ An interactive user interface displays "Appropriate Legal Notices"
104
+ to the extent that it includes a convenient and prominently visible
105
+ feature that (1) displays an appropriate copyright notice, and (2)
106
+ tells the user that there is no warranty for the work (except to the
107
+ extent that warranties are provided), that licensees may convey the
108
+ work under this License, and how to view a copy of this License. If
109
+ the interface presents a list of user commands or options, such as a
110
+ menu, a prominent item in the list meets this criterion.
111
+
112
+ 1. Source Code.
113
+
114
+ The "source code" for a work means the preferred form of the work
115
+ for making modifications to it. "Object code" means any non-source
116
+ form of a work.
117
+
118
+ A "Standard Interface" means an interface that either is an official
119
+ standard defined by a recognized standards body, or, in the case of
120
+ interfaces specified for a particular programming language, one that
121
+ is widely used among developers working in that language.
122
+
123
+ The "System Libraries" of an executable work include anything, other
124
+ than the work as a whole, that (a) is included in the normal form of
125
+ packaging a Major Component, but which is not part of that Major
126
+ Component, and (b) serves only to enable use of the work with that
127
+ Major Component, or to implement a Standard Interface for which an
128
+ implementation is available to the public in source code form. A
129
+ "Major Component", in this context, means a major essential component
130
+ (kernel, window system, and so on) of the specific operating system
131
+ (if any) on which the executable work runs, or a compiler used to
132
+ produce the work, or an object code interpreter used to run it.
133
+
134
+ The "Corresponding Source" for a work in object code form means all
135
+ the source code needed to generate, install, and (for an executable
136
+ work) run the object code and to modify the work, including scripts to
137
+ control those activities. However, it does not include the work's
138
+ System Libraries, or general-purpose tools or generally available free
139
+ programs which are used unmodified in performing those activities but
140
+ which are not part of the work. For example, Corresponding Source
141
+ includes interface definition files associated with source files for
142
+ the work, and the source code for shared libraries and dynamically
143
+ linked subprograms that the work is specifically designed to require,
144
+ such as by intimate data communication or control flow between those
145
+ subprograms and other parts of the work.
146
+
147
+ The Corresponding Source need not include anything that users
148
+ can regenerate automatically from other parts of the Corresponding
149
+ Source.
150
+
151
+ The Corresponding Source for a work in source code form is that
152
+ same work.
153
+
154
+ 2. Basic Permissions.
155
+
156
+ All rights granted under this License are granted for the term of
157
+ copyright on the Program, and are irrevocable provided the stated
158
+ conditions are met. This License explicitly affirms your unlimited
159
+ permission to run the unmodified Program. The output from running a
160
+ covered work is covered by this License only if the output, given its
161
+ content, constitutes a covered work. This License acknowledges your
162
+ rights of fair use or other equivalent, as provided by copyright law.
163
+
164
+ You may make, run and propagate covered works that you do not
165
+ convey, without conditions so long as your license otherwise remains
166
+ in force. You may convey covered works to others for the sole purpose
167
+ of having them make modifications exclusively for you, or provide you
168
+ with facilities for running those works, provided that you comply with
169
+ the terms of this License in conveying all material for which you do
170
+ not control copyright. Those thus making or running the covered works
171
+ for you must do so exclusively on your behalf, under your direction
172
+ and control, on terms that prohibit them from making any copies of
173
+ your copyrighted material outside their relationship with you.
174
+
175
+ Conveying under any other circumstances is permitted solely under
176
+ the conditions stated below. Sublicensing is not allowed; section 10
177
+ makes it unnecessary.
178
+
179
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180
+
181
+ No covered work shall be deemed part of an effective technological
182
+ measure under any applicable law fulfilling obligations under article
183
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184
+ similar laws prohibiting or restricting circumvention of such
185
+ measures.
186
+
187
+ When you convey a covered work, you waive any legal power to forbid
188
+ circumvention of technological measures to the extent such circumvention
189
+ is effected by exercising rights under this License with respect to
190
+ the covered work, and you disclaim any intention to limit operation or
191
+ modification of the work as a means of enforcing, against the work's
192
+ users, your or third parties' legal rights to forbid circumvention of
193
+ technological measures.
194
+
195
+ 4. Conveying Verbatim Copies.
196
+
197
+ You may convey verbatim copies of the Program's source code as you
198
+ receive it, in any medium, provided that you conspicuously and
199
+ appropriately publish on each copy an appropriate copyright notice;
200
+ keep intact all notices stating that this License and any
201
+ non-permissive terms added in accord with section 7 apply to the code;
202
+ keep intact all notices of the absence of any warranty; and give all
203
+ recipients a copy of this License along with the Program.
204
+
205
+ You may charge any price or no price for each copy that you convey,
206
+ and you may offer support or warranty protection for a fee.
207
+
208
+ 5. Conveying Modified Source Versions.
209
+
210
+ You may convey a work based on the Program, or the modifications to
211
+ produce it from the Program, in the form of source code under the
212
+ terms of section 4, provided that you also meet all of these conditions:
213
+
214
+ a) The work must carry prominent notices stating that you modified
215
+ it, and giving a relevant date.
216
+
217
+ b) The work must carry prominent notices stating that it is
218
+ released under this License and any conditions added under section
219
+ 7. This requirement modifies the requirement in section 4 to
220
+ "keep intact all notices".
221
+
222
+ c) You must license the entire work, as a whole, under this
223
+ License to anyone who comes into possession of a copy. This
224
+ License will therefore apply, along with any applicable section 7
225
+ additional terms, to the whole of the work, and all its parts,
226
+ regardless of how they are packaged. This License gives no
227
+ permission to license the work in any other way, but it does not
228
+ invalidate such permission if you have separately received it.
229
+
230
+ d) If the work has interactive user interfaces, each must display
231
+ Appropriate Legal Notices; however, if the Program has interactive
232
+ interfaces that do not display Appropriate Legal Notices, your
233
+ work need not make them do so.
234
+
235
+ A compilation of a covered work with other separate and independent
236
+ works, which are not by their nature extensions of the covered work,
237
+ and which are not combined with it such as to form a larger program,
238
+ in or on a volume of a storage or distribution medium, is called an
239
+ "aggregate" if the compilation and its resulting copyright are not
240
+ used to limit the access or legal rights of the compilation's users
241
+ beyond what the individual works permit. Inclusion of a covered work
242
+ in an aggregate does not cause this License to apply to the other
243
+ parts of the aggregate.
244
+
245
+ 6. Conveying Non-Source Forms.
246
+
247
+ You may convey a covered work in object code form under the terms
248
+ of sections 4 and 5, provided that you also convey the
249
+ machine-readable Corresponding Source under the terms of this License,
250
+ in one of these ways:
251
+
252
+ a) Convey the object code in, or embodied in, a physical product
253
+ (including a physical distribution medium), accompanied by the
254
+ Corresponding Source fixed on a durable physical medium
255
+ customarily used for software interchange.
256
+
257
+ b) Convey the object code in, or embodied in, a physical product
258
+ (including a physical distribution medium), accompanied by a
259
+ written offer, valid for at least three years and valid for as
260
+ long as you offer spare parts or customer support for that product
261
+ model, to give anyone who possesses the object code either (1) a
262
+ copy of the Corresponding Source for all the software in the
263
+ product that is covered by this License, on a durable physical
264
+ medium customarily used for software interchange, for a price no
265
+ more than your reasonable cost of physically performing this
266
+ conveying of source, or (2) access to copy the
267
+ Corresponding Source from a network server at no charge.
268
+
269
+ c) Convey individual copies of the object code with a copy of the
270
+ written offer to provide the Corresponding Source. This
271
+ alternative is allowed only occasionally and noncommercially, and
272
+ only if you received the object code with such an offer, in accord
273
+ with subsection 6b.
274
+
275
+ d) Convey the object code by offering access from a designated
276
+ place (gratis or for a charge), and offer equivalent access to the
277
+ Corresponding Source in the same way through the same place at no
278
+ further charge. You need not require recipients to copy the
279
+ Corresponding Source along with the object code. If the place to
280
+ copy the object code is a network server, the Corresponding Source
281
+ may be on a different server (operated by you or a third party)
282
+ that supports equivalent copying facilities, provided you maintain
283
+ clear directions next to the object code saying where to find the
284
+ Corresponding Source. Regardless of what server hosts the
285
+ Corresponding Source, you remain obligated to ensure that it is
286
+ available for as long as needed to satisfy these requirements.
287
+
288
+ e) Convey the object code using peer-to-peer transmission, provided
289
+ you inform other peers where the object code and Corresponding
290
+ Source of the work are being offered to the general public at no
291
+ charge under subsection 6d.
292
+
293
+ A separable portion of the object code, whose source code is excluded
294
+ from the Corresponding Source as a System Library, need not be
295
+ included in conveying the object code work.
296
+
297
+ A "User Product" is either (1) a "consumer product", which means any
298
+ tangible personal property which is normally used for personal, family,
299
+ or household purposes, or (2) anything designed or sold for incorporation
300
+ into a dwelling. In determining whether a product is a consumer product,
301
+ doubtful cases shall be resolved in favor of coverage. For a particular
302
+ product received by a particular user, "normally used" refers to a
303
+ typical or common use of that class of product, regardless of the status
304
+ of the particular user or of the way in which the particular user
305
+ actually uses, or expects or is expected to use, the product. A product
306
+ is a consumer product regardless of whether the product has substantial
307
+ commercial, industrial or non-consumer uses, unless such uses represent
308
+ the only significant mode of use of the product.
309
+
310
+ "Installation Information" for a User Product means any methods,
311
+ procedures, authorization keys, or other information required to install
312
+ and execute modified versions of a covered work in that User Product from
313
+ a modified version of its Corresponding Source. The information must
314
+ suffice to ensure that the continued functioning of the modified object
315
+ code is in no case prevented or interfered with solely because
316
+ modification has been made.
317
+
318
+ If you convey an object code work under this section in, or with, or
319
+ specifically for use in, a User Product, and the conveying occurs as
320
+ part of a transaction in which the right of possession and use of the
321
+ User Product is transferred to the recipient in perpetuity or for a
322
+ fixed term (regardless of how the transaction is characterized), the
323
+ Corresponding Source conveyed under this section must be accompanied
324
+ by the Installation Information. But this requirement does not apply
325
+ if neither you nor any third party retains the ability to install
326
+ modified object code on the User Product (for example, the work has
327
+ been installed in ROM).
328
+
329
+ The requirement to provide Installation Information does not include a
330
+ requirement to continue to provide support service, warranty, or updates
331
+ for a work that has been modified or installed by the recipient, or for
332
+ the User Product in which it has been modified or installed. Access to a
333
+ network may be denied when the modification itself materially and
334
+ adversely affects the operation of the network or violates the rules and
335
+ protocols for communication across the network.
336
+
337
+ Corresponding Source conveyed, and Installation Information provided,
338
+ in accord with this section must be in a format that is publicly
339
+ documented (and with an implementation available to the public in
340
+ source code form), and must require no special password or key for
341
+ unpacking, reading or copying.
342
+
343
+ 7. Additional Terms.
344
+
345
+ "Additional permissions" are terms that supplement the terms of this
346
+ License by making exceptions from one or more of its conditions.
347
+ Additional permissions that are applicable to the entire Program shall
348
+ be treated as though they were included in this License, to the extent
349
+ that they are valid under applicable law. If additional permissions
350
+ apply only to part of the Program, that part may be used separately
351
+ under those permissions, but the entire Program remains governed by
352
+ this License without regard to the additional permissions.
353
+
354
+ When you convey a copy of a covered work, you may at your option
355
+ remove any additional permissions from that copy, or from any part of
356
+ it. (Additional permissions may be written to require their own
357
+ removal in certain cases when you modify the work.) You may place
358
+ additional permissions on material, added by you to a covered work,
359
+ for which you have or can give appropriate copyright permission.
360
+
361
+ Notwithstanding any other provision of this License, for material you
362
+ add to a covered work, you may (if authorized by the copyright holders of
363
+ that material) supplement the terms of this License with terms:
364
+
365
+ a) Disclaiming warranty or limiting liability differently from the
366
+ terms of sections 15 and 16 of this License; or
367
+
368
+ b) Requiring preservation of specified reasonable legal notices or
369
+ author attributions in that material or in the Appropriate Legal
370
+ Notices displayed by works containing it; or
371
+
372
+ c) Prohibiting misrepresentation of the origin of that material, or
373
+ requiring that modified versions of such material be marked in
374
+ reasonable ways as different from the original version; or
375
+
376
+ d) Limiting the use for publicity purposes of names of licensors or
377
+ authors of the material; or
378
+
379
+ e) Declining to grant rights under trademark law for use of some
380
+ trade names, trademarks, or service marks; or
381
+
382
+ f) Requiring indemnification of licensors and authors of that
383
+ material by anyone who conveys the material (or modified versions of
384
+ it) with contractual assumptions of liability to the recipient, for
385
+ any liability that these contractual assumptions directly impose on
386
+ those licensors and authors.
387
+
388
+ All other non-permissive additional terms are considered "further
389
+ restrictions" within the meaning of section 10. If the Program as you
390
+ received it, or any part of it, contains a notice stating that it is
391
+ governed by this License along with a term that is a further
392
+ restriction, you may remove that term. If a license document contains
393
+ a further restriction but permits relicensing or conveying under this
394
+ License, you may add to a covered work material governed by the terms
395
+ of that license document, provided that the further restriction does
396
+ not survive such relicensing or conveying.
397
+
398
+ If you add terms to a covered work in accord with this section, you
399
+ must place, in the relevant source files, a statement of the
400
+ additional terms that apply to those files, or a notice indicating
401
+ where to find the applicable terms.
402
+
403
+ Additional terms, permissive or non-permissive, may be stated in the
404
+ form of a separately written license, or stated as exceptions;
405
+ the above requirements apply either way.
406
+
407
+ 8. Termination.
408
+
409
+ You may not propagate or modify a covered work except as expressly
410
+ provided under this License. Any attempt otherwise to propagate or
411
+ modify it is void, and will automatically terminate your rights under
412
+ this License (including any patent licenses granted under the third
413
+ paragraph of section 11).
414
+
415
+ However, if you cease all violation of this License, then your
416
+ license from a particular copyright holder is reinstated (a)
417
+ provisionally, unless and until the copyright holder explicitly and
418
+ finally terminates your license, and (b) permanently, if the copyright
419
+ holder fails to notify you of the violation by some reasonable means
420
+ prior to 60 days after the cessation.
421
+
422
+ Moreover, your license from a particular copyright holder is
423
+ reinstated permanently if the copyright holder notifies you of the
424
+ violation by some reasonable means, this is the first time you have
425
+ received notice of violation of this License (for any work) from that
426
+ copyright holder, and you cure the violation prior to 30 days after
427
+ your receipt of the notice.
428
+
429
+ Termination of your rights under this section does not terminate the
430
+ licenses of parties who have received copies or rights from you under
431
+ this License. If your rights have been terminated and not permanently
432
+ reinstated, you do not qualify to receive new licenses for the same
433
+ material under section 10.
434
+
435
+ 9. Acceptance Not Required for Having Copies.
436
+
437
+ You are not required to accept this License in order to receive or
438
+ run a copy of the Program. Ancillary propagation of a covered work
439
+ occurring solely as a consequence of using peer-to-peer transmission
440
+ to receive a copy likewise does not require acceptance. However,
441
+ nothing other than this License grants you permission to propagate or
442
+ modify any covered work. These actions infringe copyright if you do
443
+ not accept this License. Therefore, by modifying or propagating a
444
+ covered work, you indicate your acceptance of this License to do so.
445
+
446
+ 10. Automatic Licensing of Downstream Recipients.
447
+
448
+ Each time you convey a covered work, the recipient automatically
449
+ receives a license from the original licensors, to run, modify and
450
+ propagate that work, subject to this License. You are not responsible
451
+ for enforcing compliance by third parties with this License.
452
+
453
+ An "entity transaction" is a transaction transferring control of an
454
+ organization, or substantially all assets of one, or subdividing an
455
+ organization, or merging organizations. If propagation of a covered
456
+ work results from an entity transaction, each party to that
457
+ transaction who receives a copy of the work also receives whatever
458
+ licenses to the work the party's predecessor in interest had or could
459
+ give under the previous paragraph, plus a right to possession of the
460
+ Corresponding Source of the work from the predecessor in interest, if
461
+ the predecessor has it or can get it with reasonable efforts.
462
+
463
+ You may not impose any further restrictions on the exercise of the
464
+ rights granted or affirmed under this License. For example, you may
465
+ not impose a license fee, royalty, or other charge for exercise of
466
+ rights granted under this License, and you may not initiate litigation
467
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
468
+ any patent claim is infringed by making, using, selling, offering for
469
+ sale, or importing the Program or any portion of it.
470
+
471
+ 11. Patents.
472
+
473
+ A "contributor" is a copyright holder who authorizes use under this
474
+ License of the Program or a work on which the Program is based. The
475
+ work thus licensed is called the contributor's "contributor version".
476
+
477
+ A contributor's "essential patent claims" are all patent claims
478
+ owned or controlled by the contributor, whether already acquired or
479
+ hereafter acquired, that would be infringed by some manner, permitted
480
+ by this License, of making, using, or selling its contributor version,
481
+ but do not include claims that would be infringed only as a
482
+ consequence of further modification of the contributor version. For
483
+ purposes of this definition, "control" includes the right to grant
484
+ patent sublicenses in a manner consistent with the requirements of
485
+ this License.
486
+
487
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
488
+ patent license under the contributor's essential patent claims, to
489
+ make, use, sell, offer for sale, import and otherwise run, modify and
490
+ propagate the contents of its contributor version.
491
+
492
+ In the following three paragraphs, a "patent license" is any express
493
+ agreement or commitment, however denominated, not to enforce a patent
494
+ (such as an express permission to practice a patent or covenant not to
495
+ sue for patent infringement). To "grant" such a patent license to a
496
+ party means to make such an agreement or commitment not to enforce a
497
+ patent against the party.
498
+
499
+ If you convey a covered work, knowingly relying on a patent license,
500
+ and the Corresponding Source of the work is not available for anyone
501
+ to copy, free of charge and under the terms of this License, through a
502
+ publicly available network server or other readily accessible means,
503
+ then you must either (1) cause the Corresponding Source to be so
504
+ available, or (2) arrange to deprive yourself of the benefit of the
505
+ patent license for this particular work, or (3) arrange, in a manner
506
+ consistent with the requirements of this License, to extend the patent
507
+ license to downstream recipients. "Knowingly relying" means you have
508
+ actual knowledge that, but for the patent license, your conveying the
509
+ covered work in a country, or your recipient's use of the covered work
510
+ in a country, would infringe one or more identifiable patents in that
511
+ country that you have reason to believe are valid.
512
+
513
+ If, pursuant to or in connection with a single transaction or
514
+ arrangement, you convey, or propagate by procuring conveyance of, a
515
+ covered work, and grant a patent license to some of the parties
516
+ receiving the covered work authorizing them to use, propagate, modify
517
+ or convey a specific copy of the covered work, then the patent license
518
+ you grant is automatically extended to all recipients of the covered
519
+ work and works based on it.
520
+
521
+ A patent license is "discriminatory" if it does not include within
522
+ the scope of its coverage, prohibits the exercise of, or is
523
+ conditioned on the non-exercise of one or more of the rights that are
524
+ specifically granted under this License. You may not convey a covered
525
+ work if you are a party to an arrangement with a third party that is
526
+ in the business of distributing software, under which you make payment
527
+ to the third party based on the extent of your activity of conveying
528
+ the work, and under which the third party grants, to any of the
529
+ parties who would receive the covered work from you, a discriminatory
530
+ patent license (a) in connection with copies of the covered work
531
+ conveyed by you (or copies made from those copies), or (b) primarily
532
+ for and in connection with specific products or compilations that
533
+ contain the covered work, unless you entered into that arrangement,
534
+ or that patent license was granted, prior to 28 March 2007.
535
+
536
+ Nothing in this License shall be construed as excluding or limiting
537
+ any implied license or other defenses to infringement that may
538
+ otherwise be available to you under applicable patent law.
539
+
540
+ 12. No Surrender of Others' Freedom.
541
+
542
+ If conditions are imposed on you (whether by court order, agreement or
543
+ otherwise) that contradict the conditions of this License, they do not
544
+ excuse you from the conditions of this License. If you cannot convey a
545
+ covered work so as to satisfy simultaneously your obligations under this
546
+ License and any other pertinent obligations, then as a consequence you may
547
+ not convey it at all. For example, if you agree to terms that obligate you
548
+ to collect a royalty for further conveying from those to whom you convey
549
+ the Program, the only way you could satisfy both those terms and this
550
+ License would be to refrain entirely from conveying the Program.
551
+
552
+ 13. Use with the GNU Affero General Public License.
553
+
554
+ Notwithstanding any other provision of this License, you have
555
+ permission to link or combine any covered work with a work licensed
556
+ under version 3 of the GNU Affero General Public License into a single
557
+ combined work, and to convey the resulting work. The terms of this
558
+ License will continue to apply to the part which is the covered work,
559
+ but the special requirements of the GNU Affero General Public License,
560
+ section 13, concerning interaction through a network will apply to the
561
+ combination as such.
562
+
563
+ 14. Revised Versions of this License.
564
+
565
+ The Free Software Foundation may publish revised and/or new versions of
566
+ the GNU General Public License from time to time. Such new versions will
567
+ be similar in spirit to the present version, but may differ in detail to
568
+ address new problems or concerns.
569
+
570
+ Each version is given a distinguishing version number. If the
571
+ Program specifies that a certain numbered version of the GNU General
572
+ Public License "or any later version" applies to it, you have the
573
+ option of following the terms and conditions either of that numbered
574
+ version or of any later version published by the Free Software
575
+ Foundation. If the Program does not specify a version number of the
576
+ GNU General Public License, you may choose any version ever published
577
+ by the Free Software Foundation.
578
+
579
+ If the Program specifies that a proxy can decide which future
580
+ versions of the GNU General Public License can be used, that proxy's
581
+ public statement of acceptance of a version permanently authorizes you
582
+ to choose that version for the Program.
583
+
584
+ Later license versions may give you additional or different
585
+ permissions. However, no additional obligations are imposed on any
586
+ author or copyright holder as a result of your choosing to follow a
587
+ later version.
588
+
589
+ 15. Disclaimer of Warranty.
590
+
591
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597
+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599
+
600
+ 16. Limitation of Liability.
601
+
602
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610
+ SUCH DAMAGES.
611
+
612
+ 17. Interpretation of Sections 15 and 16.
613
+
614
+ If the disclaimer of warranty and limitation of liability provided
615
+ above cannot be given local legal effect according to their terms,
616
+ reviewing courts shall apply local law that most closely approximates
617
+ an absolute waiver of all civil liability in connection with the
618
+ Program, unless a warranty or assumption of liability accompanies a
619
+ copy of the Program in return for a fee.
620
+
621
+ END OF TERMS AND CONDITIONS
622
+
623
+ How to Apply These Terms to Your New Programs
624
+
625
+ If you develop a new program, and you want it to be of the greatest
626
+ possible use to the public, the best way to achieve this is to make it
627
+ free software which everyone can redistribute and change under these terms.
628
+
629
+ To do so, attach the following notices to the program. It is safest
630
+ to attach them to the start of each source file to most effectively
631
+ state the exclusion of warranty; and each file should have at least
632
+ the "copyright" line and a pointer to where the full notice is found.
633
+
634
+ <one line to give the program's name and a brief idea of what it does.>
635
+ Copyright (C) <year> <name of author>
636
+
637
+ This program is free software: you can redistribute it and/or modify
638
+ it under the terms of the GNU General Public License as published by
639
+ the Free Software Foundation, either version 3 of the License, or
640
+ (at your option) any later version.
641
+
642
+ This program is distributed in the hope that it will be useful,
643
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
644
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645
+ GNU General Public License for more details.
646
+
647
+ You should have received a copy of the GNU General Public License
648
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
649
+
650
+ Also add information on how to contact you by electronic and paper mail.
651
+
652
+ If the program does terminal interaction, make it output a short
653
+ notice like this when it starts in an interactive mode:
654
+
655
+ <program> Copyright (C) <year> <name of author>
656
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657
+ This is free software, and you are welcome to redistribute it
658
+ under certain conditions; type `show c' for details.
659
+
660
+ The hypothetical commands `show w' and `show c' should show the appropriate
661
+ parts of the General Public License. Of course, your program's commands
662
+ might be different; for a GUI interface, you would use an "about box".
663
+
664
+ You should also get your employer (if you work as a programmer) or school,
665
+ if any, to sign a "copyright disclaimer" for the program, if necessary.
666
+ For more information on this, and how to apply and follow the GNU GPL, see
667
+ <http://www.gnu.org/licenses/>.
668
+
669
+ The GNU General Public License does not permit incorporating your program
670
+ into proprietary programs. If your program is a subroutine library, you
671
+ may consider it more useful to permit linking proprietary applications with
672
+ the library. If this is what you want to do, use the GNU Lesser General
673
+ Public License instead of this License. But first, please read
674
+ <http://www.gnu.org/philosophy/why-not-lgpl.html>.
ffmpeg-4.4-amd64-static/ffmpeg ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f406a5eb9cd03ed776fb215096dc52a1a401798b75ab72627ae82f367c9e714e
3
+ size 76645312
ffmpeg-4.4-amd64-static/ffprobe ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:76bfad353c4bcc3d3b5b694bea32f6dc478fcdd328fc0b247b39142fef6d68c7
3
+ size 76538976
ffmpeg-4.4-amd64-static/manpages/ffmpeg-all.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-4.4-amd64-static/manpages/ffmpeg-bitstream-filters.txt ADDED
@@ -0,0 +1,705 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FFMPEG-BITSTREAM-FILTERS(1) FFMPEG-BITSTREAM-FILTERS(1)
2
+
3
+ NAME
4
+ ffmpeg-bitstream-filters - FFmpeg bitstream filters
5
+
6
+ DESCRIPTION
7
+ This document describes the bitstream filters provided by the
8
+ libavcodec library.
9
+
10
+ A bitstream filter operates on the encoded stream data, and performs
11
+ bitstream level modifications without performing decoding.
12
+
13
+ BITSTREAM FILTERS
14
+ When you configure your FFmpeg build, all the supported bitstream
15
+ filters are enabled by default. You can list all available ones using
16
+ the configure option "--list-bsfs".
17
+
18
+ You can disable all the bitstream filters using the configure option
19
+ "--disable-bsfs", and selectively enable any bitstream filter using the
20
+ option "--enable-bsf=BSF", or you can disable a particular bitstream
21
+ filter using the option "--disable-bsf=BSF".
22
+
23
+ The option "-bsfs" of the ff* tools will display the list of all the
24
+ supported bitstream filters included in your build.
25
+
26
+ The ff* tools have a -bsf option applied per stream, taking a comma-
27
+ separated list of filters, whose parameters follow the filter name
28
+ after a '='.
29
+
30
+ ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
31
+
32
+ Below is a description of the currently available bitstream filters,
33
+ with their parameters, if any.
34
+
35
+ aac_adtstoasc
36
+ Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration
37
+ bitstream.
38
+
39
+ This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4 ADTS
40
+ header and removes the ADTS header.
41
+
42
+ This filter is required for example when copying an AAC stream from a
43
+ raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or
44
+ to MOV/MP4 files and related formats such as 3GP or M4A. Please note
45
+ that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats.
46
+
47
+ av1_metadata
48
+ Modify metadata embedded in an AV1 stream.
49
+
50
+ td Insert or remove temporal delimiter OBUs in all temporal units of
51
+ the stream.
52
+
53
+ insert
54
+ Insert a TD at the beginning of every TU which does not already
55
+ have one.
56
+
57
+ remove
58
+ Remove the TD from the beginning of every TU which has one.
59
+
60
+ color_primaries
61
+ transfer_characteristics
62
+ matrix_coefficients
63
+ Set the color description fields in the stream (see AV1 section
64
+ 6.4.2).
65
+
66
+ color_range
67
+ Set the color range in the stream (see AV1 section 6.4.2; note that
68
+ this cannot be set for streams using BT.709 primaries, sRGB
69
+ transfer characteristic and identity (RGB) matrix coefficients).
70
+
71
+ tv Limited range.
72
+
73
+ pc Full range.
74
+
75
+ chroma_sample_position
76
+ Set the chroma sample location in the stream (see AV1 section
77
+ 6.4.2). This can only be set for 4:2:0 streams.
78
+
79
+ vertical
80
+ Left position (matching the default in MPEG-2 and H.264).
81
+
82
+ colocated
83
+ Top-left position.
84
+
85
+ tick_rate
86
+ Set the tick rate (num_units_in_display_tick / time_scale) in the
87
+ timing info in the sequence header.
88
+
89
+ num_ticks_per_picture
90
+ Set the number of ticks in each picture, to indicate that the
91
+ stream has a fixed framerate. Ignored if tick_rate is not also
92
+ set.
93
+
94
+ delete_padding
95
+ Deletes Padding OBUs.
96
+
97
+ chomp
98
+ Remove zero padding at the end of a packet.
99
+
100
+ dca_core
101
+ Extract the core from a DCA/DTS stream, dropping extensions such as
102
+ DTS-HD.
103
+
104
+ dump_extra
105
+ Add extradata to the beginning of the filtered packets except when said
106
+ packets already exactly begin with the extradata that is intended to be
107
+ added.
108
+
109
+ freq
110
+ The additional argument specifies which packets should be filtered.
111
+ It accepts the values:
112
+
113
+ k
114
+ keyframe
115
+ add extradata to all key packets
116
+
117
+ e
118
+ all add extradata to all packets
119
+
120
+ If not specified it is assumed k.
121
+
122
+ For example the following ffmpeg command forces a global header (thus
123
+ disabling individual packet headers) in the H.264 packets generated by
124
+ the "libx264" encoder, but corrects them by adding the header stored in
125
+ extradata to the key packets:
126
+
127
+ ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
128
+
129
+ eac3_core
130
+ Extract the core from a E-AC-3 stream, dropping extra channels.
131
+
132
+ extract_extradata
133
+ Extract the in-band extradata.
134
+
135
+ Certain codecs allow the long-term headers (e.g. MPEG-2 sequence
136
+ headers, or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-
137
+ band" (i.e. as a part of the bitstream containing the coded frames) or
138
+ "out of band" (e.g. on the container level). This latter form is called
139
+ "extradata" in FFmpeg terminology.
140
+
141
+ This bitstream filter detects the in-band headers and makes them
142
+ available as extradata.
143
+
144
+ remove
145
+ When this option is enabled, the long-term headers are removed from
146
+ the bitstream after extraction.
147
+
148
+ filter_units
149
+ Remove units with types in or not in a given set from the stream.
150
+
151
+ pass_types
152
+ List of unit types or ranges of unit types to pass through while
153
+ removing all others. This is specified as a '|'-separated list of
154
+ unit type values or ranges of values with '-'.
155
+
156
+ remove_types
157
+ Identical to pass_types, except the units in the given set removed
158
+ and all others passed through.
159
+
160
+ Extradata is unchanged by this transformation, but note that if the
161
+ stream contains inline parameter sets then the output may be unusable
162
+ if they are removed.
163
+
164
+ For example, to remove all non-VCL NAL units from an H.264 stream:
165
+
166
+ ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
167
+
168
+ To remove all AUDs, SEI and filler from an H.265 stream:
169
+
170
+ ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
171
+
172
+ hapqa_extract
173
+ Extract Rgb or Alpha part of an HAPQA file, without recompression, in
174
+ order to create an HAPQ or an HAPAlphaOnly file.
175
+
176
+ texture
177
+ Specifies the texture to keep.
178
+
179
+ color
180
+ alpha
181
+
182
+ Convert HAPQA to HAPQ
183
+
184
+ ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
185
+
186
+ Convert HAPQA to HAPAlphaOnly
187
+
188
+ ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
189
+
190
+ h264_metadata
191
+ Modify metadata embedded in an H.264 stream.
192
+
193
+ aud Insert or remove AUD NAL units in all access units of the stream.
194
+
195
+ insert
196
+ remove
197
+ sample_aspect_ratio
198
+ Set the sample aspect ratio of the stream in the VUI parameters.
199
+
200
+ overscan_appropriate_flag
201
+ Set whether the stream is suitable for display using overscan or
202
+ not (see H.264 section E.2.1).
203
+
204
+ video_format
205
+ video_full_range_flag
206
+ Set the video format in the stream (see H.264 section E.2.1 and
207
+ table E-2).
208
+
209
+ colour_primaries
210
+ transfer_characteristics
211
+ matrix_coefficients
212
+ Set the colour description in the stream (see H.264 section E.2.1
213
+ and tables E-3, E-4 and E-5).
214
+
215
+ chroma_sample_loc_type
216
+ Set the chroma sample location in the stream (see H.264 section
217
+ E.2.1 and figure E-1).
218
+
219
+ tick_rate
220
+ Set the tick rate (num_units_in_tick / time_scale) in the VUI
221
+ parameters. This is the smallest time unit representable in the
222
+ stream, and in many cases represents the field rate of the stream
223
+ (double the frame rate).
224
+
225
+ fixed_frame_rate_flag
226
+ Set whether the stream has fixed framerate - typically this
227
+ indicates that the framerate is exactly half the tick rate, but the
228
+ exact meaning is dependent on interlacing and the picture structure
229
+ (see H.264 section E.2.1 and table E-6).
230
+
231
+ crop_left
232
+ crop_right
233
+ crop_top
234
+ crop_bottom
235
+ Set the frame cropping offsets in the SPS. These values will
236
+ replace the current ones if the stream is already cropped.
237
+
238
+ These fields are set in pixels. Note that some sizes may not be
239
+ representable if the chroma is subsampled or the stream is
240
+ interlaced (see H.264 section 7.4.2.1.1).
241
+
242
+ sei_user_data
243
+ Insert a string as SEI unregistered user data. The argument must
244
+ be of the form UUID+string, where the UUID is as hex digits
245
+ possibly separated by hyphens, and the string can be anything.
246
+
247
+ For example, 086f3693-b7b3-4f2c-9653-21492feee5b8+hello will insert
248
+ the string ``hello'' associated with the given UUID.
249
+
250
+ delete_filler
251
+ Deletes both filler NAL units and filler SEI messages.
252
+
253
+ level
254
+ Set the level in the SPS. Refer to H.264 section A.3 and tables
255
+ A-1 to A-5.
256
+
257
+ The argument must be the name of a level (for example, 4.2), a
258
+ level_idc value (for example, 42), or the special name auto
259
+ indicating that the filter should attempt to guess the level from
260
+ the input stream properties.
261
+
262
+ h264_mp4toannexb
263
+ Convert an H.264 bitstream from length prefixed mode to start code
264
+ prefixed mode (as defined in the Annex B of the ITU-T H.264
265
+ specification).
266
+
267
+ This is required by some streaming formats, typically the MPEG-2
268
+ transport stream format (muxer "mpegts").
269
+
270
+ For example to remux an MP4 file containing an H.264 stream to mpegts
271
+ format with ffmpeg, you can use the command:
272
+
273
+ ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
274
+
275
+ Please note that this filter is auto-inserted for MPEG-TS (muxer
276
+ "mpegts") and raw H.264 (muxer "h264") output formats.
277
+
278
+ h264_redundant_pps
279
+ This applies a specific fixup to some Blu-ray streams which contain
280
+ redundant PPSs modifying irrelevant parameters of the stream which
281
+ confuse other transformations which require correct extradata.
282
+
283
+ A new single global PPS is created, and all of the redundant PPSs
284
+ within the stream are removed.
285
+
286
+ hevc_metadata
287
+ Modify metadata embedded in an HEVC stream.
288
+
289
+ aud Insert or remove AUD NAL units in all access units of the stream.
290
+
291
+ insert
292
+ remove
293
+ sample_aspect_ratio
294
+ Set the sample aspect ratio in the stream in the VUI parameters.
295
+
296
+ video_format
297
+ video_full_range_flag
298
+ Set the video format in the stream (see H.265 section E.3.1 and
299
+ table E.2).
300
+
301
+ colour_primaries
302
+ transfer_characteristics
303
+ matrix_coefficients
304
+ Set the colour description in the stream (see H.265 section E.3.1
305
+ and tables E.3, E.4 and E.5).
306
+
307
+ chroma_sample_loc_type
308
+ Set the chroma sample location in the stream (see H.265 section
309
+ E.3.1 and figure E.1).
310
+
311
+ tick_rate
312
+ Set the tick rate in the VPS and VUI parameters (num_units_in_tick
313
+ / time_scale). Combined with num_ticks_poc_diff_one, this can set
314
+ a constant framerate in the stream. Note that it is likely to be
315
+ overridden by container parameters when the stream is in a
316
+ container.
317
+
318
+ num_ticks_poc_diff_one
319
+ Set poc_proportional_to_timing_flag in VPS and VUI and use this
320
+ value to set num_ticks_poc_diff_one_minus1 (see H.265 sections
321
+ 7.4.3.1 and E.3.1). Ignored if tick_rate is not also set.
322
+
323
+ crop_left
324
+ crop_right
325
+ crop_top
326
+ crop_bottom
327
+ Set the conformance window cropping offsets in the SPS. These
328
+ values will replace the current ones if the stream is already
329
+ cropped.
330
+
331
+ These fields are set in pixels. Note that some sizes may not be
332
+ representable if the chroma is subsampled (H.265 section
333
+ 7.4.3.2.1).
334
+
335
+ level
336
+ Set the level in the VPS and SPS. See H.265 section A.4 and tables
337
+ A.6 and A.7.
338
+
339
+ The argument must be the name of a level (for example, 5.1), a
340
+ general_level_idc value (for example, 153 for level 5.1), or the
341
+ special name auto indicating that the filter should attempt to
342
+ guess the level from the input stream properties.
343
+
344
+ hevc_mp4toannexb
345
+ Convert an HEVC/H.265 bitstream from length prefixed mode to start code
346
+ prefixed mode (as defined in the Annex B of the ITU-T H.265
347
+ specification).
348
+
349
+ This is required by some streaming formats, typically the MPEG-2
350
+ transport stream format (muxer "mpegts").
351
+
352
+ For example to remux an MP4 file containing an HEVC stream to mpegts
353
+ format with ffmpeg, you can use the command:
354
+
355
+ ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
356
+
357
+ Please note that this filter is auto-inserted for MPEG-TS (muxer
358
+ "mpegts") and raw HEVC/H.265 (muxer "h265" or "hevc") output formats.
359
+
360
+ imxdump
361
+ Modifies the bitstream to fit in MOV and to be usable by the Final Cut
362
+ Pro decoder. This filter only applies to the mpeg2video codec, and is
363
+ likely not needed for Final Cut Pro 7 and newer with the appropriate
364
+ -tag:v.
365
+
366
+ For example, to remux 30 MB/sec NTSC IMX to MOV:
367
+
368
+ ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
369
+
370
+ mjpeg2jpeg
371
+ Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
372
+
373
+ MJPEG is a video codec wherein each video frame is essentially a JPEG
374
+ image. The individual frames can be extracted without loss, e.g. by
375
+
376
+ ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
377
+
378
+ Unfortunately, these chunks are incomplete JPEG images, because they
379
+ lack the DHT segment required for decoding. Quoting from
380
+ <http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml>:
381
+
382
+ Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
383
+ commented that "MJPEG, or at least the MJPEG in AVIs having the MJPG
384
+ fourcc, is restricted JPEG with a fixed -- and *omitted* -- Huffman
385
+ table. The JPEG must be YCbCr colorspace, it must be 4:2:2, and it must
386
+ use basic Huffman encoding, not arithmetic or progressive. . . . You
387
+ can indeed extract the MJPEG frames and decode them with a regular JPEG
388
+ decoder, but you have to prepend the DHT segment to them, or else the
389
+ decoder won't have any idea how to decompress the data. The exact table
390
+ necessary is given in the OpenDML spec."
391
+
392
+ This bitstream filter patches the header of frames extracted from an
393
+ MJPEG stream (carrying the AVI1 header ID and lacking a DHT segment) to
394
+ produce fully qualified JPEG images.
395
+
396
+ ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
397
+ exiftran -i -9 frame*.jpg
398
+ ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
399
+
400
+ mjpegadump
401
+ Add an MJPEG A header to the bitstream, to enable decoding by
402
+ Quicktime.
403
+
404
+ mov2textsub
405
+ Extract a representable text file from MOV subtitles, stripping the
406
+ metadata header from each subtitle packet.
407
+
408
+ See also the text2movsub filter.
409
+
410
+ mp3decomp
411
+ Decompress non-standard compressed MP3 audio headers.
412
+
413
+ mpeg2_metadata
414
+ Modify metadata embedded in an MPEG-2 stream.
415
+
416
+ display_aspect_ratio
417
+ Set the display aspect ratio in the stream.
418
+
419
+ The following fixed values are supported:
420
+
421
+ 4/3
422
+ 16/9
423
+ 221/100
424
+
425
+ Any other value will result in square pixels being signalled
426
+ instead (see H.262 section 6.3.3 and table 6-3).
427
+
428
+ frame_rate
429
+ Set the frame rate in the stream. This is constructed from a table
430
+ of known values combined with a small multiplier and divisor - if
431
+ the supplied value is not exactly representable, the nearest
432
+ representable value will be used instead (see H.262 section 6.3.3
433
+ and table 6-4).
434
+
435
+ video_format
436
+ Set the video format in the stream (see H.262 section 6.3.6 and
437
+ table 6-6).
438
+
439
+ colour_primaries
440
+ transfer_characteristics
441
+ matrix_coefficients
442
+ Set the colour description in the stream (see H.262 section 6.3.6
443
+ and tables 6-7, 6-8 and 6-9).
444
+
445
+ mpeg4_unpack_bframes
446
+ Unpack DivX-style packed B-frames.
447
+
448
+ DivX-style packed B-frames are not valid MPEG-4 and were only a
449
+ workaround for the broken Video for Windows subsystem. They use more
450
+ space, can cause minor AV sync issues, require more CPU power to decode
451
+ (unless the player has some decoded picture queue to compensate the
452
+ 2,0,2,0 frame per packet style) and cause trouble if copied into a
453
+ standard container like mp4 or mpeg-ps/ts, because MPEG-4 decoders may
454
+ not be able to decode them, since they are not valid MPEG-4.
455
+
456
+ For example to fix an AVI file containing an MPEG-4 stream with DivX-
457
+ style packed B-frames using ffmpeg, you can use the command:
458
+
459
+ ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
460
+
461
+ noise
462
+ Damages the contents of packets or simply drops them without damaging
463
+ the container. Can be used for fuzzing or testing error
464
+ resilience/concealment.
465
+
466
+ Parameters:
467
+
468
+ amount
469
+ A numeral string, whose value is related to how often output bytes
470
+ will be modified. Therefore, values below or equal to 0 are
471
+ forbidden, and the lower the more frequent bytes will be modified,
472
+ with 1 meaning every byte is modified.
473
+
474
+ dropamount
475
+ A numeral string, whose value is related to how often packets will
476
+ be dropped. Therefore, values below or equal to 0 are forbidden,
477
+ and the lower the more frequent packets will be dropped, with 1
478
+ meaning every packet is dropped.
479
+
480
+ The following example applies the modification to every byte but does
481
+ not drop any packets.
482
+
483
+ ffmpeg -i INPUT -c copy -bsf noise[=1] output.mkv
484
+
485
+ null
486
+ This bitstream filter passes the packets through unchanged.
487
+
488
+ pcm_rechunk
489
+ Repacketize PCM audio to a fixed number of samples per packet or a
490
+ fixed packet rate per second. This is similar to the asetnsamples audio
491
+ filter but works on audio packets instead of audio frames.
492
+
493
+ nb_out_samples, n
494
+ Set the number of samples per each output audio packet. The number
495
+ is intended as the number of samples per each channel. Default
496
+ value is 1024.
497
+
498
+ pad, p
499
+ If set to 1, the filter will pad the last audio packet with
500
+ silence, so that it will contain the same number of samples (or
501
+ roughly the same number of samples, see frame_rate) as the previous
502
+ ones. Default value is 1.
503
+
504
+ frame_rate, r
505
+ This option makes the filter output a fixed number of packets per
506
+ second instead of a fixed number of samples per packet. If the
507
+ audio sample rate is not divisible by the frame rate then the
508
+ number of samples will not be constant but will vary slightly so
509
+ that each packet will start as close to the frame boundary as
510
+ possible. Using this option has precedence over nb_out_samples.
511
+
512
+ You can generate the well known 1602-1601-1602-1601-1602 pattern of
513
+ 48kHz audio for NTSC frame rate using the frame_rate option.
514
+
515
+ ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
516
+
517
+ prores_metadata
518
+ Modify color property metadata embedded in prores stream.
519
+
520
+ color_primaries
521
+ Set the color primaries. Available values are:
522
+
523
+ auto
524
+ Keep the same color primaries property (default).
525
+
526
+ unknown
527
+ bt709
528
+ bt470bg
529
+ BT601 625
530
+
531
+ smpte170m
532
+ BT601 525
533
+
534
+ bt2020
535
+ smpte431
536
+ DCI P3
537
+
538
+ smpte432
539
+ P3 D65
540
+
541
+ transfer_characteristics
542
+ Set the color transfer. Available values are:
543
+
544
+ auto
545
+ Keep the same transfer characteristics property (default).
546
+
547
+ unknown
548
+ bt709
549
+ BT 601, BT 709, BT 2020
550
+
551
+ smpte2084
552
+ SMPTE ST 2084
553
+
554
+ arib-std-b67
555
+ ARIB STD-B67
556
+
557
+ matrix_coefficients
558
+ Set the matrix coefficient. Available values are:
559
+
560
+ auto
561
+ Keep the same colorspace property (default).
562
+
563
+ unknown
564
+ bt709
565
+ smpte170m
566
+ BT 601
567
+
568
+ bt2020nc
569
+
570
+ Set Rec709 colorspace for each frame of the file
571
+
572
+ ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
573
+
574
+ Set Hybrid Log-Gamma parameters for each frame of the file
575
+
576
+ ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
577
+
578
+ remove_extra
579
+ Remove extradata from packets.
580
+
581
+ It accepts the following parameter:
582
+
583
+ freq
584
+ Set which frame types to remove extradata from.
585
+
586
+ k Remove extradata from non-keyframes only.
587
+
588
+ keyframe
589
+ Remove extradata from keyframes only.
590
+
591
+ e, all
592
+ Remove extradata from all frames.
593
+
594
+ setts
595
+ Set PTS and DTS in packets.
596
+
597
+ It accepts the following parameters:
598
+
599
+ ts
600
+ pts
601
+ dts Set expressions for PTS, DTS or both.
602
+
603
+ The expressions are evaluated through the eval API and can contain the
604
+ following constants:
605
+
606
+ N The count of the input packet. Starting from 0.
607
+
608
+ TS The demux timestamp in input in case of "ts" or "dts" option or
609
+ presentation timestamp in case of "pts" option.
610
+
611
+ POS The original position in the file of the packet, or undefined if
612
+ undefined for the current packet
613
+
614
+ DTS The demux timestamp in input.
615
+
616
+ PTS The presentation timestamp in input.
617
+
618
+ STARTDTS
619
+ The DTS of the first packet.
620
+
621
+ STARTPTS
622
+ The PTS of the first packet.
623
+
624
+ PREV_INDTS
625
+ The previous input DTS.
626
+
627
+ PREV_INPTS
628
+ The previous input PTS.
629
+
630
+ PREV_OUTDTS
631
+ The previous output DTS.
632
+
633
+ PREV_OUTPTS
634
+ The previous output PTS.
635
+
636
+ TB The timebase of stream packet belongs.
637
+
638
+ SR The sample rate of stream packet belongs.
639
+
640
+ text2movsub
641
+ Convert text subtitles to MOV subtitles (as used by the "mov_text"
642
+ codec) with metadata headers.
643
+
644
+ See also the mov2textsub filter.
645
+
646
+ trace_headers
647
+ Log trace output containing all syntax elements in the coded stream
648
+ headers (everything above the level of individual coded blocks). This
649
+ can be useful for debugging low-level stream issues.
650
+
651
+ Supports AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending on
652
+ the build only a subset of these may be available.
653
+
654
+ truehd_core
655
+ Extract the core from a TrueHD stream, dropping ATMOS data.
656
+
657
+ vp9_metadata
658
+ Modify metadata embedded in a VP9 stream.
659
+
660
+ color_space
661
+ Set the color space value in the frame header. Note that any frame
662
+ set to RGB will be implicitly set to PC range and that RGB is
663
+ incompatible with profiles 0 and 2.
664
+
665
+ unknown
666
+ bt601
667
+ bt709
668
+ smpte170
669
+ smpte240
670
+ bt2020
671
+ rgb
672
+ color_range
673
+ Set the color range value in the frame header. Note that any value
674
+ imposed by the color space will take precedence over this value.
675
+
676
+ tv
677
+ pc
678
+
679
+ vp9_superframe
680
+ Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This
681
+ fixes merging of split/segmented VP9 streams where the alt-ref frame
682
+ was split from its visible counterpart.
683
+
684
+ vp9_superframe_split
685
+ Split VP9 superframes into single frames.
686
+
687
+ vp9_raw_reorder
688
+ Given a VP9 stream with correct timestamps but possibly out of order,
689
+ insert additional show-existing-frame packets to correct the ordering.
690
+
691
+ SEE ALSO
692
+ ffmpeg(1), ffplay(1), ffprobe(1), libavcodec(3)
693
+
694
+ AUTHORS
695
+ The FFmpeg developers.
696
+
697
+ For details about the authorship, see the Git history of the project
698
+ (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
699
+ the FFmpeg source directory, or browsing the online repository at
700
+ <http://source.ffmpeg.org>.
701
+
702
+ Maintainers for the specific components are listed in the file
703
+ MAINTAINERS in the source code tree.
704
+
705
+ FFMPEG-BITSTREAM-FILTERS(1)
ffmpeg-4.4-amd64-static/manpages/ffmpeg-codecs.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-4.4-amd64-static/manpages/ffmpeg-devices.txt ADDED
@@ -0,0 +1,1854 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FFMPEG-DEVICES(1) FFMPEG-DEVICES(1)
2
+
3
+ NAME
4
+ ffmpeg-devices - FFmpeg devices
5
+
6
+ DESCRIPTION
7
+ This document describes the input and output devices provided by the
8
+ libavdevice library.
9
+
10
+ DEVICE OPTIONS
11
+ The libavdevice library provides the same interface as libavformat.
12
+ Namely, an input device is considered like a demuxer, and an output
13
+ device like a muxer, and the interface and generic device options are
14
+ the same provided by libavformat (see the ffmpeg-formats manual).
15
+
16
+ In addition each input or output device may support so-called private
17
+ options, which are specific for that component.
18
+
19
+ Options may be set by specifying -option value in the FFmpeg tools, or
20
+ by setting the value explicitly in the device "AVFormatContext" options
21
+ or using the libavutil/opt.h API for programmatic use.
22
+
23
+ INPUT DEVICES
24
+ Input devices are configured elements in FFmpeg which enable accessing
25
+ the data coming from a multimedia device attached to your system.
26
+
27
+ When you configure your FFmpeg build, all the supported input devices
28
+ are enabled by default. You can list all available ones using the
29
+ configure option "--list-indevs".
30
+
31
+ You can disable all the input devices using the configure option
32
+ "--disable-indevs", and selectively enable an input device using the
33
+ option "--enable-indev=INDEV", or you can disable a particular input
34
+ device using the option "--disable-indev=INDEV".
35
+
36
+ The option "-devices" of the ff* tools will display the list of
37
+ supported input devices.
38
+
39
+ A description of the currently available input devices follows.
40
+
41
+ alsa
42
+ ALSA (Advanced Linux Sound Architecture) input device.
43
+
44
+ To enable this input device during configuration you need libasound
45
+ installed on your system.
46
+
47
+ This device allows capturing from an ALSA device. The name of the
48
+ device to capture has to be an ALSA card identifier.
49
+
50
+ An ALSA identifier has the syntax:
51
+
52
+ hw:<CARD>[,<DEV>[,<SUBDEV>]]
53
+
54
+ where the DEV and SUBDEV components are optional.
55
+
56
+ The three arguments (in order: CARD,DEV,SUBDEV) specify card number or
57
+ identifier, device number and subdevice number (-1 means any).
58
+
59
+ To see the list of cards currently recognized by your system check the
60
+ files /proc/asound/cards and /proc/asound/devices.
61
+
62
+ For example to capture with ffmpeg from an ALSA device with card id 0,
63
+ you may run the command:
64
+
65
+ ffmpeg -f alsa -i hw:0 alsaout.wav
66
+
67
+ For more information see:
68
+ <http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html>
69
+
70
+ Options
71
+
72
+ sample_rate
73
+ Set the sample rate in Hz. Default is 48000.
74
+
75
+ channels
76
+ Set the number of channels. Default is 2.
77
+
78
+ android_camera
79
+ Android camera input device.
80
+
81
+ This input devices uses the Android Camera2 NDK API which is available
82
+ on devices with API level 24+. The availability of android_camera is
83
+ autodetected during configuration.
84
+
85
+ This device allows capturing from all cameras on an Android device,
86
+ which are integrated into the Camera2 NDK API.
87
+
88
+ The available cameras are enumerated internally and can be selected
89
+ with the camera_index parameter. The input file string is discarded.
90
+
91
+ Generally the back facing camera has index 0 while the front facing
92
+ camera has index 1.
93
+
94
+ Options
95
+
96
+ video_size
97
+ Set the video size given as a string such as 640x480 or hd720.
98
+ Falls back to the first available configuration reported by Android
99
+ if requested video size is not available or by default.
100
+
101
+ framerate
102
+ Set the video framerate. Falls back to the first available
103
+ configuration reported by Android if requested framerate is not
104
+ available or by default (-1).
105
+
106
+ camera_index
107
+ Set the index of the camera to use. Default is 0.
108
+
109
+ input_queue_size
110
+ Set the maximum number of frames to buffer. Default is 5.
111
+
112
+ avfoundation
113
+ AVFoundation input device.
114
+
115
+ AVFoundation is the currently recommended framework by Apple for
116
+ streamgrabbing on OSX >= 10.7 as well as on iOS.
117
+
118
+ The input filename has to be given in the following syntax:
119
+
120
+ -i "[[VIDEO]:[AUDIO]]"
121
+
122
+ The first entry selects the video input while the latter selects the
123
+ audio input. The stream has to be specified by the device name or the
124
+ device index as shown by the device list. Alternatively, the video
125
+ and/or audio input device can be chosen by index using the
126
+
127
+ B<-video_device_index E<lt>INDEXE<gt>>
128
+
129
+ and/or
130
+
131
+ B<-audio_device_index E<lt>INDEXE<gt>>
132
+
133
+ , overriding any device name or index given in the input filename.
134
+
135
+ All available devices can be enumerated by using -list_devices true,
136
+ listing all device names and corresponding indices.
137
+
138
+ There are two device name aliases:
139
+
140
+ "default"
141
+ Select the AVFoundation default device of the corresponding type.
142
+
143
+ "none"
144
+ Do not record the corresponding media type. This is equivalent to
145
+ specifying an empty device name or index.
146
+
147
+ Options
148
+
149
+ AVFoundation supports the following options:
150
+
151
+ -list_devices <TRUE|FALSE>
152
+ If set to true, a list of all available input devices is given
153
+ showing all device names and indices.
154
+
155
+ -video_device_index <INDEX>
156
+ Specify the video device by its index. Overrides anything given in
157
+ the input filename.
158
+
159
+ -audio_device_index <INDEX>
160
+ Specify the audio device by its index. Overrides anything given in
161
+ the input filename.
162
+
163
+ -pixel_format <FORMAT>
164
+ Request the video device to use a specific pixel format. If the
165
+ specified format is not supported, a list of available formats is
166
+ given and the first one in this list is used instead. Available
167
+ pixel formats are: "monob, rgb555be, rgb555le, rgb565be, rgb565le,
168
+ rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0,
169
+ bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16,
170
+ yuv422p10, yuv444p10,
171
+ yuv420p, nv12, yuyv422, gray"
172
+
173
+ -framerate
174
+ Set the grabbing frame rate. Default is "ntsc", corresponding to a
175
+ frame rate of "30000/1001".
176
+
177
+ -video_size
178
+ Set the video frame size.
179
+
180
+ -capture_cursor
181
+ Capture the mouse pointer. Default is 0.
182
+
183
+ -capture_mouse_clicks
184
+ Capture the screen mouse clicks. Default is 0.
185
+
186
+ -capture_raw_data
187
+ Capture the raw device data. Default is 0. Using this option may
188
+ result in receiving the underlying data delivered to the
189
+ AVFoundation framework. E.g. for muxed devices that sends raw DV
190
+ data to the framework (like tape-based camcorders), setting this
191
+ option to false results in extracted video frames captured in the
192
+ designated pixel format only. Setting this option to true results
193
+ in receiving the raw DV stream untouched.
194
+
195
+ Examples
196
+
197
+ o Print the list of AVFoundation supported devices and exit:
198
+
199
+ $ ffmpeg -f avfoundation -list_devices true -i ""
200
+
201
+ o Record video from video device 0 and audio from audio device 0 into
202
+ out.avi:
203
+
204
+ $ ffmpeg -f avfoundation -i "0:0" out.avi
205
+
206
+ o Record video from video device 2 and audio from audio device 1 into
207
+ out.avi:
208
+
209
+ $ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
210
+
211
+ o Record video from the system default video device using the pixel
212
+ format bgr0 and do not record any audio into out.avi:
213
+
214
+ $ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
215
+
216
+ o Record raw DV data from a suitable input device and write the
217
+ output into out.dv:
218
+
219
+ $ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
220
+
221
+ bktr
222
+ BSD video input device.
223
+
224
+ Options
225
+
226
+ framerate
227
+ Set the frame rate.
228
+
229
+ video_size
230
+ Set the video frame size. Default is "vga".
231
+
232
+ standard
233
+ Available values are:
234
+
235
+ pal
236
+ ntsc
237
+ secam
238
+ paln
239
+ palm
240
+ ntscj
241
+
242
+ decklink
243
+ The decklink input device provides capture capabilities for Blackmagic
244
+ DeckLink devices.
245
+
246
+ To enable this input device, you need the Blackmagic DeckLink SDK and
247
+ you need to configure with the appropriate "--extra-cflags" and
248
+ "--extra-ldflags". On Windows, you need to run the IDL files through
249
+ widl.
250
+
251
+ DeckLink is very picky about the formats it supports. Pixel format of
252
+ the input can be set with raw_format. Framerate and video size must be
253
+ determined for your device with -list_formats 1. Audio sample rate is
254
+ always 48 kHz and the number of channels can be 2, 8 or 16. Note that
255
+ all audio channels are bundled in one single audio track.
256
+
257
+ Options
258
+
259
+ list_devices
260
+ If set to true, print a list of devices and exit. Defaults to
261
+ false. This option is deprecated, please use the "-sources" option
262
+ of ffmpeg to list the available input devices.
263
+
264
+ list_formats
265
+ If set to true, print a list of supported formats and exit.
266
+ Defaults to false.
267
+
268
+ format_code <FourCC>
269
+ This sets the input video format to the format given by the FourCC.
270
+ To see the supported values of your device(s) use list_formats.
271
+ Note that there is a FourCC 'pal ' that can also be used as pal (3
272
+ letters). Default behavior is autodetection of the input video
273
+ format, if the hardware supports it.
274
+
275
+ raw_format
276
+ Set the pixel format of the captured video. Available values are:
277
+
278
+ auto
279
+ This is the default which means 8-bit YUV 422 or 8-bit ARGB if
280
+ format autodetection is used, 8-bit YUV 422 otherwise.
281
+
282
+ uyvy422
283
+ 8-bit YUV 422.
284
+
285
+ yuv422p10
286
+ 10-bit YUV 422.
287
+
288
+ argb
289
+ 8-bit RGB.
290
+
291
+ bgra
292
+ 8-bit RGB.
293
+
294
+ rgb10
295
+ 10-bit RGB.
296
+
297
+ teletext_lines
298
+ If set to nonzero, an additional teletext stream will be captured
299
+ from the vertical ancillary data. Both SD PAL (576i) and HD (1080i
300
+ or 1080p) sources are supported. In case of HD sources, OP47
301
+ packets are decoded.
302
+
303
+ This option is a bitmask of the SD PAL VBI lines captured,
304
+ specifically lines 6 to 22, and lines 318 to 335. Line 6 is the LSB
305
+ in the mask. Selected lines which do not contain teletext
306
+ information will be ignored. You can use the special all constant
307
+ to select all possible lines, or standard to skip lines 6, 318 and
308
+ 319, which are not compatible with all receivers.
309
+
310
+ For SD sources, ffmpeg needs to be compiled with
311
+ "--enable-libzvbi". For HD sources, on older (pre-4K) DeckLink card
312
+ models you have to capture in 10 bit mode.
313
+
314
+ channels
315
+ Defines number of audio channels to capture. Must be 2, 8 or 16.
316
+ Defaults to 2.
317
+
318
+ duplex_mode
319
+ Sets the decklink device duplex mode. Must be unset, half or full.
320
+ Defaults to unset.
321
+
322
+ timecode_format
323
+ Timecode type to include in the frame and video stream metadata.
324
+ Must be none, rp188vitc, rp188vitc2, rp188ltc, rp188hfr, rp188any,
325
+ vitc, vitc2, or serial. Defaults to none (not included).
326
+
327
+ In order to properly support 50/60 fps timecodes, the ordering of
328
+ the queried timecode types for rp188any is HFR, VITC1, VITC2 and
329
+ LTC for >30 fps content. Note that this is slightly different to
330
+ the ordering used by the DeckLink API, which is HFR, VITC1, LTC,
331
+ VITC2.
332
+
333
+ video_input
334
+ Sets the video input source. Must be unset, sdi, hdmi, optical_sdi,
335
+ component, composite or s_video. Defaults to unset.
336
+
337
+ audio_input
338
+ Sets the audio input source. Must be unset, embedded, aes_ebu,
339
+ analog, analog_xlr, analog_rca or microphone. Defaults to unset.
340
+
341
+ video_pts
342
+ Sets the video packet timestamp source. Must be video, audio,
343
+ reference, wallclock or abs_wallclock. Defaults to video.
344
+
345
+ audio_pts
346
+ Sets the audio packet timestamp source. Must be video, audio,
347
+ reference, wallclock or abs_wallclock. Defaults to audio.
348
+
349
+ draw_bars
350
+ If set to true, color bars are drawn in the event of a signal loss.
351
+ Defaults to true.
352
+
353
+ queue_size
354
+ Sets maximum input buffer size in bytes. If the buffering reaches
355
+ this value, incoming frames will be dropped. Defaults to
356
+ 1073741824.
357
+
358
+ audio_depth
359
+ Sets the audio sample bit depth. Must be 16 or 32. Defaults to 16.
360
+
361
+ decklink_copyts
362
+ If set to true, timestamps are forwarded as they are without
363
+ removing the initial offset. Defaults to false.
364
+
365
+ timestamp_align
366
+ Capture start time alignment in seconds. If set to nonzero, input
367
+ frames are dropped till the system timestamp aligns with configured
368
+ value. Alignment difference of up to one frame duration is
369
+ tolerated. This is useful for maintaining input synchronization
370
+ across N different hardware devices deployed for 'N-way'
371
+ redundancy. The system time of different hardware devices should be
372
+ synchronized with protocols such as NTP or PTP, before using this
373
+ option. Note that this method is not foolproof. In some border
374
+ cases input synchronization may not happen due to thread scheduling
375
+ jitters in the OS. Either sync could go wrong by 1 frame or in a
376
+ rarer case timestamp_align seconds. Defaults to 0.
377
+
378
+ wait_for_tc (bool)
379
+ Drop frames till a frame with timecode is received. Sometimes
380
+ serial timecode isn't received with the first input frame. If that
381
+ happens, the stored stream timecode will be inaccurate. If this
382
+ option is set to true, input frames are dropped till a frame with
383
+ timecode is received. Option timecode_format must be specified.
384
+ Defaults to false.
385
+
386
+ enable_klv(bool)
387
+ If set to true, extracts KLV data from VANC and outputs KLV
388
+ packets. KLV VANC packets are joined based on MID and PSC fields
389
+ and aggregated into one KLV packet. Defaults to false.
390
+
391
+ Examples
392
+
393
+ o List input devices:
394
+
395
+ ffmpeg -sources decklink
396
+
397
+ o List supported formats:
398
+
399
+ ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
400
+
401
+ o Capture video clip at 1080i50:
402
+
403
+ ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
404
+
405
+ o Capture video clip at 1080i50 10 bit:
406
+
407
+ ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
408
+
409
+ o Capture video clip at 1080i50 with 16 audio channels:
410
+
411
+ ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
412
+
413
+ dshow
414
+ Windows DirectShow input device.
415
+
416
+ DirectShow support is enabled when FFmpeg is built with the mingw-w64
417
+ project. Currently only audio and video devices are supported.
418
+
419
+ Multiple devices may be opened as separate inputs, but they may also be
420
+ opened on the same input, which should improve synchronism between
421
+ them.
422
+
423
+ The input name should be in the format:
424
+
425
+ <TYPE>=<NAME>[:<TYPE>=<NAME>]
426
+
427
+ where TYPE can be either audio or video, and NAME is the device's name
428
+ or alternative name..
429
+
430
+ Options
431
+
432
+ If no options are specified, the device's defaults are used. If the
433
+ device does not support the requested options, it will fail to open.
434
+
435
+ video_size
436
+ Set the video size in the captured video.
437
+
438
+ framerate
439
+ Set the frame rate in the captured video.
440
+
441
+ sample_rate
442
+ Set the sample rate (in Hz) of the captured audio.
443
+
444
+ sample_size
445
+ Set the sample size (in bits) of the captured audio.
446
+
447
+ channels
448
+ Set the number of channels in the captured audio.
449
+
450
+ list_devices
451
+ If set to true, print a list of devices and exit.
452
+
453
+ list_options
454
+ If set to true, print a list of selected device's options and exit.
455
+
456
+ video_device_number
457
+ Set video device number for devices with the same name (starts at
458
+ 0, defaults to 0).
459
+
460
+ audio_device_number
461
+ Set audio device number for devices with the same name (starts at
462
+ 0, defaults to 0).
463
+
464
+ pixel_format
465
+ Select pixel format to be used by DirectShow. This may only be set
466
+ when the video codec is not set or set to rawvideo.
467
+
468
+ audio_buffer_size
469
+ Set audio device buffer size in milliseconds (which can directly
470
+ impact latency, depending on the device). Defaults to using the
471
+ audio device's default buffer size (typically some multiple of
472
+ 500ms). Setting this value too low can degrade performance. See
473
+ also
474
+ <http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx>
475
+
476
+ video_pin_name
477
+ Select video capture pin to use by name or alternative name.
478
+
479
+ audio_pin_name
480
+ Select audio capture pin to use by name or alternative name.
481
+
482
+ crossbar_video_input_pin_number
483
+ Select video input pin number for crossbar device. This will be
484
+ routed to the crossbar device's Video Decoder output pin. Note
485
+ that changing this value can affect future invocations (sets a new
486
+ default) until system reboot occurs.
487
+
488
+ crossbar_audio_input_pin_number
489
+ Select audio input pin number for crossbar device. This will be
490
+ routed to the crossbar device's Audio Decoder output pin. Note
491
+ that changing this value can affect future invocations (sets a new
492
+ default) until system reboot occurs.
493
+
494
+ show_video_device_dialog
495
+ If set to true, before capture starts, popup a display dialog to
496
+ the end user, allowing them to change video filter properties and
497
+ configurations manually. Note that for crossbar devices, adjusting
498
+ values in this dialog may be needed at times to toggle between PAL
499
+ (25 fps) and NTSC (29.97) input frame rates, sizes, interlacing,
500
+ etc. Changing these values can enable different scan rates/frame
501
+ rates and avoiding green bars at the bottom, flickering scan lines,
502
+ etc. Note that with some devices, changing these properties can
503
+ also affect future invocations (sets new defaults) until system
504
+ reboot occurs.
505
+
506
+ show_audio_device_dialog
507
+ If set to true, before capture starts, popup a display dialog to
508
+ the end user, allowing them to change audio filter properties and
509
+ configurations manually.
510
+
511
+ show_video_crossbar_connection_dialog
512
+ If set to true, before capture starts, popup a display dialog to
513
+ the end user, allowing them to manually modify crossbar pin
514
+ routings, when it opens a video device.
515
+
516
+ show_audio_crossbar_connection_dialog
517
+ If set to true, before capture starts, popup a display dialog to
518
+ the end user, allowing them to manually modify crossbar pin
519
+ routings, when it opens an audio device.
520
+
521
+ show_analog_tv_tuner_dialog
522
+ If set to true, before capture starts, popup a display dialog to
523
+ the end user, allowing them to manually modify TV channels and
524
+ frequencies.
525
+
526
+ show_analog_tv_tuner_audio_dialog
527
+ If set to true, before capture starts, popup a display dialog to
528
+ the end user, allowing them to manually modify TV audio (like mono
529
+ vs. stereo, Language A,B or C).
530
+
531
+ audio_device_load
532
+ Load an audio capture filter device from file instead of searching
533
+ it by name. It may load additional parameters too, if the filter
534
+ supports the serialization of its properties to. To use this an
535
+ audio capture source has to be specified, but it can be anything
536
+ even fake one.
537
+
538
+ audio_device_save
539
+ Save the currently used audio capture filter device and its
540
+ parameters (if the filter supports it) to a file. If a file with
541
+ the same name exists it will be overwritten.
542
+
543
+ video_device_load
544
+ Load a video capture filter device from file instead of searching
545
+ it by name. It may load additional parameters too, if the filter
546
+ supports the serialization of its properties to. To use this a
547
+ video capture source has to be specified, but it can be anything
548
+ even fake one.
549
+
550
+ video_device_save
551
+ Save the currently used video capture filter device and its
552
+ parameters (if the filter supports it) to a file. If a file with
553
+ the same name exists it will be overwritten.
554
+
555
+ Examples
556
+
557
+ o Print the list of DirectShow supported devices and exit:
558
+
559
+ $ ffmpeg -list_devices true -f dshow -i dummy
560
+
561
+ o Open video device Camera:
562
+
563
+ $ ffmpeg -f dshow -i video="Camera"
564
+
565
+ o Open second video device with name Camera:
566
+
567
+ $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
568
+
569
+ o Open video device Camera and audio device Microphone:
570
+
571
+ $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
572
+
573
+ o Print the list of supported options in selected device and exit:
574
+
575
+ $ ffmpeg -list_options true -f dshow -i video="Camera"
576
+
577
+ o Specify pin names to capture by name or alternative name, specify
578
+ alternative device name:
579
+
580
+ $ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{ca465100-deb0-4d59-818f-8c477184adf6}":audio="Microphone"
581
+
582
+ o Configure a crossbar device, specifying crossbar pins, allow user
583
+ to adjust video capture properties at startup:
584
+
585
+ $ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0
586
+ -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
587
+
588
+ fbdev
589
+ Linux framebuffer input device.
590
+
591
+ The Linux framebuffer is a graphic hardware-independent abstraction
592
+ layer to show graphics on a computer monitor, typically on the console.
593
+ It is accessed through a file device node, usually /dev/fb0.
594
+
595
+ For more detailed information read the file
596
+ Documentation/fb/framebuffer.txt included in the Linux source tree.
597
+
598
+ See also <http://linux-fbdev.sourceforge.net/>, and fbset(1).
599
+
600
+ To record from the framebuffer device /dev/fb0 with ffmpeg:
601
+
602
+ ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi
603
+
604
+ You can take a single screenshot image with the command:
605
+
606
+ ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg
607
+
608
+ Options
609
+
610
+ framerate
611
+ Set the frame rate. Default is 25.
612
+
613
+ gdigrab
614
+ Win32 GDI-based screen capture device.
615
+
616
+ This device allows you to capture a region of the display on Windows.
617
+
618
+ There are two options for the input filename:
619
+
620
+ desktop
621
+
622
+ or
623
+
624
+ title=<window_title>
625
+
626
+ The first option will capture the entire desktop, or a fixed region of
627
+ the desktop. The second option will instead capture the contents of a
628
+ single window, regardless of its position on the screen.
629
+
630
+ For example, to grab the entire desktop using ffmpeg:
631
+
632
+ ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
633
+
634
+ Grab a 640x480 region at position "10,20":
635
+
636
+ ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg
637
+
638
+ Grab the contents of the window named "Calculator"
639
+
640
+ ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg
641
+
642
+ Options
643
+
644
+ draw_mouse
645
+ Specify whether to draw the mouse pointer. Use the value 0 to not
646
+ draw the pointer. Default value is 1.
647
+
648
+ framerate
649
+ Set the grabbing frame rate. Default value is "ntsc", corresponding
650
+ to a frame rate of "30000/1001".
651
+
652
+ show_region
653
+ Show grabbed region on screen.
654
+
655
+ If show_region is specified with 1, then the grabbing region will
656
+ be indicated on screen. With this option, it is easy to know what
657
+ is being grabbed if only a portion of the screen is grabbed.
658
+
659
+ Note that show_region is incompatible with grabbing the contents of
660
+ a single window.
661
+
662
+ For example:
663
+
664
+ ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
665
+
666
+ video_size
667
+ Set the video frame size. The default is to capture the full screen
668
+ if desktop is selected, or the full window size if
669
+ title=window_title is selected.
670
+
671
+ offset_x
672
+ When capturing a region with video_size, set the distance from the
673
+ left edge of the screen or desktop.
674
+
675
+ Note that the offset calculation is from the top left corner of the
676
+ primary monitor on Windows. If you have a monitor positioned to the
677
+ left of your primary monitor, you will need to use a negative
678
+ offset_x value to move the region to that monitor.
679
+
680
+ offset_y
681
+ When capturing a region with video_size, set the distance from the
682
+ top edge of the screen or desktop.
683
+
684
+ Note that the offset calculation is from the top left corner of the
685
+ primary monitor on Windows. If you have a monitor positioned above
686
+ your primary monitor, you will need to use a negative offset_y
687
+ value to move the region to that monitor.
688
+
689
+ iec61883
690
+ FireWire DV/HDV input device using libiec61883.
691
+
692
+ To enable this input device, you need libiec61883, libraw1394 and
693
+ libavc1394 installed on your system. Use the configure option
694
+ "--enable-libiec61883" to compile with the device enabled.
695
+
696
+ The iec61883 capture device supports capturing from a video device
697
+ connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
698
+ FireWire stack (juju). This is the default DV/HDV input method in Linux
699
+ Kernel 2.6.37 and later, since the old FireWire stack was removed.
700
+
701
+ Specify the FireWire port to be used as input file, or "auto" to choose
702
+ the first port connected.
703
+
704
+ Options
705
+
706
+ dvtype
707
+ Override autodetection of DV/HDV. This should only be used if auto
708
+ detection does not work, or if usage of a different device type
709
+ should be prohibited. Treating a DV device as HDV (or vice versa)
710
+ will not work and result in undefined behavior. The values auto,
711
+ dv and hdv are supported.
712
+
713
+ dvbuffer
714
+ Set maximum size of buffer for incoming data, in frames. For DV,
715
+ this is an exact value. For HDV, it is not frame exact, since HDV
716
+ does not have a fixed frame size.
717
+
718
+ dvguid
719
+ Select the capture device by specifying its GUID. Capturing will
720
+ only be performed from the specified device and fails if no device
721
+ with the given GUID is found. This is useful to select the input if
722
+ multiple devices are connected at the same time. Look at
723
+ /sys/bus/firewire/devices to find out the GUIDs.
724
+
725
+ Examples
726
+
727
+ o Grab and show the input of a FireWire DV/HDV device.
728
+
729
+ ffplay -f iec61883 -i auto
730
+
731
+ o Grab and record the input of a FireWire DV/HDV device, using a
732
+ packet buffer of 100000 packets if the source is HDV.
733
+
734
+ ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
735
+
736
+ jack
737
+ JACK input device.
738
+
739
+ To enable this input device during configuration you need libjack
740
+ installed on your system.
741
+
742
+ A JACK input device creates one or more JACK writable clients, one for
743
+ each audio channel, with name client_name:input_N, where client_name is
744
+ the name provided by the application, and N is a number which
745
+ identifies the channel. Each writable client will send the acquired
746
+ data to the FFmpeg input device.
747
+
748
+ Once you have created one or more JACK readable clients, you need to
749
+ connect them to one or more JACK writable clients.
750
+
751
+ To connect or disconnect JACK clients you can use the jack_connect and
752
+ jack_disconnect programs, or do it through a graphical interface, for
753
+ example with qjackctl.
754
+
755
+ To list the JACK clients and their properties you can invoke the
756
+ command jack_lsp.
757
+
758
+ Follows an example which shows how to capture a JACK readable client
759
+ with ffmpeg.
760
+
761
+ # Create a JACK writable client with name "ffmpeg".
762
+ $ ffmpeg -f jack -i ffmpeg -y out.wav
763
+
764
+ # Start the sample jack_metro readable client.
765
+ $ jack_metro -b 120 -d 0.2 -f 4000
766
+
767
+ # List the current JACK clients.
768
+ $ jack_lsp -c
769
+ system:capture_1
770
+ system:capture_2
771
+ system:playback_1
772
+ system:playback_2
773
+ ffmpeg:input_1
774
+ metro:120_bpm
775
+
776
+ # Connect metro to the ffmpeg writable client.
777
+ $ jack_connect metro:120_bpm ffmpeg:input_1
778
+
779
+ For more information read: <http://jackaudio.org/>
780
+
781
+ Options
782
+
783
+ channels
784
+ Set the number of channels. Default is 2.
785
+
786
+ kmsgrab
787
+ KMS video input device.
788
+
789
+ Captures the KMS scanout framebuffer associated with a specified CRTC
790
+ or plane as a DRM object that can be passed to other hardware
791
+ functions.
792
+
793
+ Requires either DRM master or CAP_SYS_ADMIN to run.
794
+
795
+ If you don't understand what all of that means, you probably don't want
796
+ this. Look at x11grab instead.
797
+
798
+ Options
799
+
800
+ device
801
+ DRM device to capture on. Defaults to /dev/dri/card0.
802
+
803
+ format
804
+ Pixel format of the framebuffer. This can be autodetected if you
805
+ are running Linux 5.7 or later, but needs to be provided for
806
+ earlier versions. Defaults to bgr0, which is the most common
807
+ format used by the Linux console and Xorg X server.
808
+
809
+ format_modifier
810
+ Format modifier to signal on output frames. This is necessary to
811
+ import correctly into some APIs. It can be autodetected if you are
812
+ running Linux 5.7 or later, but will need to be provided explicitly
813
+ when needed in earlier versions. See the libdrm documentation for
814
+ possible values.
815
+
816
+ crtc_id
817
+ KMS CRTC ID to define the capture source. The first active plane
818
+ on the given CRTC will be used.
819
+
820
+ plane_id
821
+ KMS plane ID to define the capture source. Defaults to the first
822
+ active plane found if neither crtc_id nor plane_id are specified.
823
+
824
+ framerate
825
+ Framerate to capture at. This is not synchronised to any page
826
+ flipping or framebuffer changes - it just defines the interval at
827
+ which the framebuffer is sampled. Sampling faster than the
828
+ framebuffer update rate will generate independent frames with the
829
+ same content. Defaults to 30.
830
+
831
+ Examples
832
+
833
+ o Capture from the first active plane, download the result to normal
834
+ frames and encode. This will only work if the framebuffer is both
835
+ linear and mappable - if not, the result may be scrambled or fail
836
+ to download.
837
+
838
+ ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
839
+
840
+ o Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert
841
+ to NV12 and encode as H.264.
842
+
843
+ ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4
844
+
845
+ o To capture only part of a plane the output can be cropped - this
846
+ can be used to capture a single window, as long as it has a known
847
+ absolute position and size. For example, to capture and encode the
848
+ middle quarter of a 1920x1080 plane:
849
+
850
+ ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4
851
+
852
+ lavfi
853
+ Libavfilter input virtual device.
854
+
855
+ This input device reads data from the open output pads of a libavfilter
856
+ filtergraph.
857
+
858
+ For each filtergraph open output, the input device will create a
859
+ corresponding stream which is mapped to the generated output. Currently
860
+ only video data is supported. The filtergraph is specified through the
861
+ option graph.
862
+
863
+ Options
864
+
865
+ graph
866
+ Specify the filtergraph to use as input. Each video open output
867
+ must be labelled by a unique string of the form "outN", where N is
868
+ a number starting from 0 corresponding to the mapped input stream
869
+ generated by the device. The first unlabelled output is
870
+ automatically assigned to the "out0" label, but all the others need
871
+ to be specified explicitly.
872
+
873
+ The suffix "+subcc" can be appended to the output label to create
874
+ an extra stream with the closed captions packets attached to that
875
+ output (experimental; only for EIA-608 / CEA-708 for now). The
876
+ subcc streams are created after all the normal streams, in the
877
+ order of the corresponding stream. For example, if there is
878
+ "out19+subcc", "out7+subcc" and up to "out42", the stream #43 is
879
+ subcc for stream #7 and stream #44 is subcc for stream #19.
880
+
881
+ If not specified defaults to the filename specified for the input
882
+ device.
883
+
884
+ graph_file
885
+ Set the filename of the filtergraph to be read and sent to the
886
+ other filters. Syntax of the filtergraph is the same as the one
887
+ specified by the option graph.
888
+
889
+ dumpgraph
890
+ Dump graph to stderr.
891
+
892
+ Examples
893
+
894
+ o Create a color video stream and play it back with ffplay:
895
+
896
+ ffplay -f lavfi -graph "color=c=pink [out0]" dummy
897
+
898
+ o As the previous example, but use filename for specifying the graph
899
+ description, and omit the "out0" label:
900
+
901
+ ffplay -f lavfi color=c=pink
902
+
903
+ o Create three different video test filtered sources and play them:
904
+
905
+ ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
906
+
907
+ o Read an audio stream from a file using the amovie source and play
908
+ it back with ffplay:
909
+
910
+ ffplay -f lavfi "amovie=test.wav"
911
+
912
+ o Read an audio stream and a video stream and play it back with
913
+ ffplay:
914
+
915
+ ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
916
+
917
+ o Dump decoded frames to images and closed captions to a file
918
+ (experimental):
919
+
920
+ ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rawvideo subcc.bin
921
+
922
+ libcdio
923
+ Audio-CD input device based on libcdio.
924
+
925
+ To enable this input device during configuration you need libcdio
926
+ installed on your system. It requires the configure option
927
+ "--enable-libcdio".
928
+
929
+ This device allows playing and grabbing from an Audio-CD.
930
+
931
+ For example to copy with ffmpeg the entire Audio-CD in /dev/sr0, you
932
+ may run the command:
933
+
934
+ ffmpeg -f libcdio -i /dev/sr0 cd.wav
935
+
936
+ Options
937
+
938
+ speed
939
+ Set drive reading speed. Default value is 0.
940
+
941
+ The speed is specified CD-ROM speed units. The speed is set through
942
+ the libcdio "cdio_cddap_speed_set" function. On many CD-ROM drives,
943
+ specifying a value too large will result in using the fastest
944
+ speed.
945
+
946
+ paranoia_mode
947
+ Set paranoia recovery mode flags. It accepts one of the following
948
+ values:
949
+
950
+ disable
951
+ verify
952
+ overlap
953
+ neverskip
954
+ full
955
+
956
+ Default value is disable.
957
+
958
+ For more information about the available recovery modes, consult
959
+ the paranoia project documentation.
960
+
961
+ libdc1394
962
+ IIDC1394 input device, based on libdc1394 and libraw1394.
963
+
964
+ Requires the configure option "--enable-libdc1394".
965
+
966
+ Options
967
+
968
+ framerate
969
+ Set the frame rate. Default is "ntsc", corresponding to a frame
970
+ rate of "30000/1001".
971
+
972
+ pixel_format
973
+ Select the pixel format. Default is "uyvy422".
974
+
975
+ video_size
976
+ Set the video size given as a string such as "640x480" or "hd720".
977
+ Default is "qvga".
978
+
979
+ openal
980
+ The OpenAL input device provides audio capture on all systems with a
981
+ working OpenAL 1.1 implementation.
982
+
983
+ To enable this input device during configuration, you need OpenAL
984
+ headers and libraries installed on your system, and need to configure
985
+ FFmpeg with "--enable-openal".
986
+
987
+ OpenAL headers and libraries should be provided as part of your OpenAL
988
+ implementation, or as an additional download (an SDK). Depending on
989
+ your installation you may need to specify additional flags via the
990
+ "--extra-cflags" and "--extra-ldflags" for allowing the build system to
991
+ locate the OpenAL headers and libraries.
992
+
993
+ An incomplete list of OpenAL implementations follows:
994
+
995
+ Creative
996
+ The official Windows implementation, providing hardware
997
+ acceleration with supported devices and software fallback. See
998
+ <http://openal.org/>.
999
+
1000
+ OpenAL Soft
1001
+ Portable, open source (LGPL) software implementation. Includes
1002
+ backends for the most common sound APIs on the Windows, Linux,
1003
+ Solaris, and BSD operating systems. See
1004
+ <http://kcat.strangesoft.net/openal.html>.
1005
+
1006
+ Apple
1007
+ OpenAL is part of Core Audio, the official Mac OS X Audio
1008
+ interface. See
1009
+ <http://developer.apple.com/technologies/mac/audio-and-video.html>
1010
+
1011
+ This device allows one to capture from an audio input device handled
1012
+ through OpenAL.
1013
+
1014
+ You need to specify the name of the device to capture in the provided
1015
+ filename. If the empty string is provided, the device will
1016
+ automatically select the default device. You can get the list of the
1017
+ supported devices by using the option list_devices.
1018
+
1019
+ Options
1020
+
1021
+ channels
1022
+ Set the number of channels in the captured audio. Only the values 1
1023
+ (monaural) and 2 (stereo) are currently supported. Defaults to 2.
1024
+
1025
+ sample_size
1026
+ Set the sample size (in bits) of the captured audio. Only the
1027
+ values 8 and 16 are currently supported. Defaults to 16.
1028
+
1029
+ sample_rate
1030
+ Set the sample rate (in Hz) of the captured audio. Defaults to
1031
+ 44.1k.
1032
+
1033
+ list_devices
1034
+ If set to true, print a list of devices and exit. Defaults to
1035
+ false.
1036
+
1037
+ Examples
1038
+
1039
+ Print the list of OpenAL supported devices and exit:
1040
+
1041
+ $ ffmpeg -list_devices true -f openal -i dummy out.ogg
1042
+
1043
+ Capture from the OpenAL device DR-BT101 via PulseAudio:
1044
+
1045
+ $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
1046
+
1047
+ Capture from the default device (note the empty string '' as filename):
1048
+
1049
+ $ ffmpeg -f openal -i '' out.ogg
1050
+
1051
+ Capture from two devices simultaneously, writing to two different
1052
+ files, within the same ffmpeg command:
1053
+
1054
+ $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
1055
+
1056
+ Note: not all OpenAL implementations support multiple simultaneous
1057
+ capture - try the latest OpenAL Soft if the above does not work.
1058
+
1059
+ oss
1060
+ Open Sound System input device.
1061
+
1062
+ The filename to provide to the input device is the device node
1063
+ representing the OSS input device, and is usually set to /dev/dsp.
1064
+
1065
+ For example to grab from /dev/dsp using ffmpeg use the command:
1066
+
1067
+ ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
1068
+
1069
+ For more information about OSS see:
1070
+ <http://manuals.opensound.com/usersguide/dsp.html>
1071
+
1072
+ Options
1073
+
1074
+ sample_rate
1075
+ Set the sample rate in Hz. Default is 48000.
1076
+
1077
+ channels
1078
+ Set the number of channels. Default is 2.
1079
+
1080
+ pulse
1081
+ PulseAudio input device.
1082
+
1083
+ To enable this output device you need to configure FFmpeg with
1084
+ "--enable-libpulse".
1085
+
1086
+ The filename to provide to the input device is a source device or the
1087
+ string "default"
1088
+
1089
+ To list the PulseAudio source devices and their properties you can
1090
+ invoke the command pactl list sources.
1091
+
1092
+ More information about PulseAudio can be found on
1093
+ <http://www.pulseaudio.org>.
1094
+
1095
+ Options
1096
+
1097
+ server
1098
+ Connect to a specific PulseAudio server, specified by an IP
1099
+ address. Default server is used when not provided.
1100
+
1101
+ name
1102
+ Specify the application name PulseAudio will use when showing
1103
+ active clients, by default it is the "LIBAVFORMAT_IDENT" string.
1104
+
1105
+ stream_name
1106
+ Specify the stream name PulseAudio will use when showing active
1107
+ streams, by default it is "record".
1108
+
1109
+ sample_rate
1110
+ Specify the samplerate in Hz, by default 48kHz is used.
1111
+
1112
+ channels
1113
+ Specify the channels in use, by default 2 (stereo) is set.
1114
+
1115
+ frame_size
1116
+ Specify the number of bytes per frame, by default it is set to
1117
+ 1024.
1118
+
1119
+ fragment_size
1120
+ Specify the minimal buffering fragment in PulseAudio, it will
1121
+ affect the audio latency. By default it is unset.
1122
+
1123
+ wallclock
1124
+ Set the initial PTS using the current time. Default is 1.
1125
+
1126
+ Examples
1127
+
1128
+ Record a stream from default device:
1129
+
1130
+ ffmpeg -f pulse -i default /tmp/pulse.wav
1131
+
1132
+ sndio
1133
+ sndio input device.
1134
+
1135
+ To enable this input device during configuration you need libsndio
1136
+ installed on your system.
1137
+
1138
+ The filename to provide to the input device is the device node
1139
+ representing the sndio input device, and is usually set to /dev/audio0.
1140
+
1141
+ For example to grab from /dev/audio0 using ffmpeg use the command:
1142
+
1143
+ ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
1144
+
1145
+ Options
1146
+
1147
+ sample_rate
1148
+ Set the sample rate in Hz. Default is 48000.
1149
+
1150
+ channels
1151
+ Set the number of channels. Default is 2.
1152
+
1153
+ video4linux2, v4l2
1154
+ Video4Linux2 input video device.
1155
+
1156
+ "v4l2" can be used as alias for "video4linux2".
1157
+
1158
+ If FFmpeg is built with v4l-utils support (by using the
1159
+ "--enable-libv4l2" configure option), it is possible to use it with the
1160
+ "-use_libv4l2" input device option.
1161
+
1162
+ The name of the device to grab is a file device node, usually Linux
1163
+ systems tend to automatically create such nodes when the device (e.g.
1164
+ an USB webcam) is plugged into the system, and has a name of the kind
1165
+ /dev/videoN, where N is a number associated to the device.
1166
+
1167
+ Video4Linux2 devices usually support a limited set of widthxheight
1168
+ sizes and frame rates. You can check which are supported using
1169
+ -list_formats all for Video4Linux2 devices. Some devices, like TV
1170
+ cards, support one or more standards. It is possible to list all the
1171
+ supported standards using -list_standards all.
1172
+
1173
+ The time base for the timestamps is 1 microsecond. Depending on the
1174
+ kernel version and configuration, the timestamps may be derived from
1175
+ the real time clock (origin at the Unix Epoch) or the monotonic clock
1176
+ (origin usually at boot time, unaffected by NTP or manual changes to
1177
+ the clock). The -timestamps abs or -ts abs option can be used to force
1178
+ conversion into the real time clock.
1179
+
1180
+ Some usage examples of the video4linux2 device with ffmpeg and ffplay:
1181
+
1182
+ o List supported formats for a video4linux2 device:
1183
+
1184
+ ffplay -f video4linux2 -list_formats all /dev/video0
1185
+
1186
+ o Grab and show the input of a video4linux2 device:
1187
+
1188
+ ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
1189
+
1190
+ o Grab and record the input of a video4linux2 device, leave the frame
1191
+ rate and size as previously set:
1192
+
1193
+ ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
1194
+
1195
+ For more information about Video4Linux, check <http://linuxtv.org/>.
1196
+
1197
+ Options
1198
+
1199
+ standard
1200
+ Set the standard. Must be the name of a supported standard. To get
1201
+ a list of the supported standards, use the list_standards option.
1202
+
1203
+ channel
1204
+ Set the input channel number. Default to -1, which means using the
1205
+ previously selected channel.
1206
+
1207
+ video_size
1208
+ Set the video frame size. The argument must be a string in the form
1209
+ WIDTHxHEIGHT or a valid size abbreviation.
1210
+
1211
+ pixel_format
1212
+ Select the pixel format (only valid for raw video input).
1213
+
1214
+ input_format
1215
+ Set the preferred pixel format (for raw video) or a codec name.
1216
+ This option allows one to select the input format, when several are
1217
+ available.
1218
+
1219
+ framerate
1220
+ Set the preferred video frame rate.
1221
+
1222
+ list_formats
1223
+ List available formats (supported pixel formats, codecs, and frame
1224
+ sizes) and exit.
1225
+
1226
+ Available values are:
1227
+
1228
+ all Show all available (compressed and non-compressed) formats.
1229
+
1230
+ raw Show only raw video (non-compressed) formats.
1231
+
1232
+ compressed
1233
+ Show only compressed formats.
1234
+
1235
+ list_standards
1236
+ List supported standards and exit.
1237
+
1238
+ Available values are:
1239
+
1240
+ all Show all supported standards.
1241
+
1242
+ timestamps, ts
1243
+ Set type of timestamps for grabbed frames.
1244
+
1245
+ Available values are:
1246
+
1247
+ default
1248
+ Use timestamps from the kernel.
1249
+
1250
+ abs Use absolute timestamps (wall clock).
1251
+
1252
+ mono2abs
1253
+ Force conversion from monotonic to absolute timestamps.
1254
+
1255
+ Default value is "default".
1256
+
1257
+ use_libv4l2
1258
+ Use libv4l2 (v4l-utils) conversion functions. Default is 0.
1259
+
1260
+ vfwcap
1261
+ VfW (Video for Windows) capture input device.
1262
+
1263
+ The filename passed as input is the capture driver number, ranging from
1264
+ 0 to 9. You may use "list" as filename to print a list of drivers. Any
1265
+ other filename will be interpreted as device number 0.
1266
+
1267
+ Options
1268
+
1269
+ video_size
1270
+ Set the video frame size.
1271
+
1272
+ framerate
1273
+ Set the grabbing frame rate. Default value is "ntsc", corresponding
1274
+ to a frame rate of "30000/1001".
1275
+
1276
+ x11grab
1277
+ X11 video input device.
1278
+
1279
+ To enable this input device during configuration you need libxcb
1280
+ installed on your system. It will be automatically detected during
1281
+ configuration.
1282
+
1283
+ This device allows one to capture a region of an X11 display.
1284
+
1285
+ The filename passed as input has the syntax:
1286
+
1287
+ [<hostname>]:<display_number>.<screen_number>[+<x_offset>,<y_offset>]
1288
+
1289
+ hostname:display_number.screen_number specifies the X11 display name of
1290
+ the screen to grab from. hostname can be omitted, and defaults to
1291
+ "localhost". The environment variable DISPLAY contains the default
1292
+ display name.
1293
+
1294
+ x_offset and y_offset specify the offsets of the grabbed area with
1295
+ respect to the top-left border of the X11 screen. They default to 0.
1296
+
1297
+ Check the X11 documentation (e.g. man X) for more detailed information.
1298
+
1299
+ Use the xdpyinfo program for getting basic information about the
1300
+ properties of your X11 display (e.g. grep for "name" or "dimensions").
1301
+
1302
+ For example to grab from :0.0 using ffmpeg:
1303
+
1304
+ ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
1305
+
1306
+ Grab at position "10,20":
1307
+
1308
+ ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
1309
+
1310
+ Options
1311
+
1312
+ select_region
1313
+ Specify whether to select the grabbing area graphically using the
1314
+ pointer. A value of 1 prompts the user to select the grabbing area
1315
+ graphically by clicking and dragging. A single click with no
1316
+ dragging will select the whole screen. A region with zero width or
1317
+ height will also select the whole screen. This option overwrites
1318
+ the video_size, grab_x, and grab_y options. Default value is 0.
1319
+
1320
+ draw_mouse
1321
+ Specify whether to draw the mouse pointer. A value of 0 specifies
1322
+ not to draw the pointer. Default value is 1.
1323
+
1324
+ follow_mouse
1325
+ Make the grabbed area follow the mouse. The argument can be
1326
+ "centered" or a number of pixels PIXELS.
1327
+
1328
+ When it is specified with "centered", the grabbing region follows
1329
+ the mouse pointer and keeps the pointer at the center of region;
1330
+ otherwise, the region follows only when the mouse pointer reaches
1331
+ within PIXELS (greater than zero) to the edge of region.
1332
+
1333
+ For example:
1334
+
1335
+ ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
1336
+
1337
+ To follow only when the mouse pointer reaches within 100 pixels to
1338
+ edge:
1339
+
1340
+ ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
1341
+
1342
+ framerate
1343
+ Set the grabbing frame rate. Default value is "ntsc", corresponding
1344
+ to a frame rate of "30000/1001".
1345
+
1346
+ show_region
1347
+ Show grabbed region on screen.
1348
+
1349
+ If show_region is specified with 1, then the grabbing region will
1350
+ be indicated on screen. With this option, it is easy to know what
1351
+ is being grabbed if only a portion of the screen is grabbed.
1352
+
1353
+ region_border
1354
+ Set the region border thickness if -show_region 1 is used. Range
1355
+ is 1 to 128 and default is 3 (XCB-based x11grab only).
1356
+
1357
+ For example:
1358
+
1359
+ ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
1360
+
1361
+ With follow_mouse:
1362
+
1363
+ ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
1364
+
1365
+ window_id
1366
+ Grab this window, instead of the whole screen. Default value is 0,
1367
+ which maps to the whole screen (root window).
1368
+
1369
+ The id of a window can be found using the xwininfo program,
1370
+ possibly with options -tree and -root.
1371
+
1372
+ If the window is later enlarged, the new area is not recorded.
1373
+ Video ends when the window is closed, unmapped (i.e., iconified) or
1374
+ shrunk beyond the video size (which defaults to the initial window
1375
+ size).
1376
+
1377
+ This option disables options follow_mouse and select_region.
1378
+
1379
+ video_size
1380
+ Set the video frame size. Default is the full desktop or window.
1381
+
1382
+ grab_x
1383
+ grab_y
1384
+ Set the grabbing region coordinates. They are expressed as offset
1385
+ from the top left corner of the X11 window and correspond to the
1386
+ x_offset and y_offset parameters in the device name. The default
1387
+ value for both options is 0.
1388
+
1389
+ OUTPUT DEVICES
1390
+ Output devices are configured elements in FFmpeg that can write
1391
+ multimedia data to an output device attached to your system.
1392
+
1393
+ When you configure your FFmpeg build, all the supported output devices
1394
+ are enabled by default. You can list all available ones using the
1395
+ configure option "--list-outdevs".
1396
+
1397
+ You can disable all the output devices using the configure option
1398
+ "--disable-outdevs", and selectively enable an output device using the
1399
+ option "--enable-outdev=OUTDEV", or you can disable a particular input
1400
+ device using the option "--disable-outdev=OUTDEV".
1401
+
1402
+ The option "-devices" of the ff* tools will display the list of enabled
1403
+ output devices.
1404
+
1405
+ A description of the currently available output devices follows.
1406
+
1407
+ alsa
1408
+ ALSA (Advanced Linux Sound Architecture) output device.
1409
+
1410
+ Examples
1411
+
1412
+ o Play a file on default ALSA device:
1413
+
1414
+ ffmpeg -i INPUT -f alsa default
1415
+
1416
+ o Play a file on soundcard 1, audio device 7:
1417
+
1418
+ ffmpeg -i INPUT -f alsa hw:1,7
1419
+
1420
+ AudioToolbox
1421
+ AudioToolbox output device.
1422
+
1423
+ Allows native output to CoreAudio devices on OSX.
1424
+
1425
+ The output filename can be empty (or "-") to refer to the default
1426
+ system output device or a number that refers to the device index as
1427
+ shown using: "-list_devices true".
1428
+
1429
+ Alternatively, the audio input device can be chosen by index using the
1430
+
1431
+ B<-audio_device_index E<lt>INDEXE<gt>>
1432
+
1433
+ , overriding any device name or index given in the input filename.
1434
+
1435
+ All available devices can be enumerated by using -list_devices true,
1436
+ listing all device names, UIDs and corresponding indices.
1437
+
1438
+ Options
1439
+
1440
+ AudioToolbox supports the following options:
1441
+
1442
+ -audio_device_index <INDEX>
1443
+ Specify the audio device by its index. Overrides anything given in
1444
+ the output filename.
1445
+
1446
+ Examples
1447
+
1448
+ o Print the list of supported devices and output a sine wave to the
1449
+ default device:
1450
+
1451
+ $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
1452
+
1453
+ o Output a sine wave to the device with the index 2, overriding any
1454
+ output filename:
1455
+
1456
+ $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
1457
+
1458
+ caca
1459
+ CACA output device.
1460
+
1461
+ This output device allows one to show a video stream in CACA window.
1462
+ Only one CACA window is allowed per application, so you can have only
1463
+ one instance of this output device in an application.
1464
+
1465
+ To enable this output device you need to configure FFmpeg with
1466
+ "--enable-libcaca". libcaca is a graphics library that outputs text
1467
+ instead of pixels.
1468
+
1469
+ For more information about libcaca, check:
1470
+ <http://caca.zoy.org/wiki/libcaca>
1471
+
1472
+ Options
1473
+
1474
+ window_title
1475
+ Set the CACA window title, if not specified default to the filename
1476
+ specified for the output device.
1477
+
1478
+ window_size
1479
+ Set the CACA window size, can be a string of the form widthxheight
1480
+ or a video size abbreviation. If not specified it defaults to the
1481
+ size of the input video.
1482
+
1483
+ driver
1484
+ Set display driver.
1485
+
1486
+ algorithm
1487
+ Set dithering algorithm. Dithering is necessary because the picture
1488
+ being rendered has usually far more colours than the available
1489
+ palette. The accepted values are listed with "-list_dither
1490
+ algorithms".
1491
+
1492
+ antialias
1493
+ Set antialias method. Antialiasing smoothens the rendered image and
1494
+ avoids the commonly seen staircase effect. The accepted values are
1495
+ listed with "-list_dither antialiases".
1496
+
1497
+ charset
1498
+ Set which characters are going to be used when rendering text. The
1499
+ accepted values are listed with "-list_dither charsets".
1500
+
1501
+ color
1502
+ Set color to be used when rendering text. The accepted values are
1503
+ listed with "-list_dither colors".
1504
+
1505
+ list_drivers
1506
+ If set to true, print a list of available drivers and exit.
1507
+
1508
+ list_dither
1509
+ List available dither options related to the argument. The
1510
+ argument must be one of "algorithms", "antialiases", "charsets",
1511
+ "colors".
1512
+
1513
+ Examples
1514
+
1515
+ o The following command shows the ffmpeg output is an CACA window,
1516
+ forcing its size to 80x25:
1517
+
1518
+ ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
1519
+
1520
+ o Show the list of available drivers and exit:
1521
+
1522
+ ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
1523
+
1524
+ o Show the list of available dither colors and exit:
1525
+
1526
+ ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
1527
+
1528
+ decklink
1529
+ The decklink output device provides playback capabilities for
1530
+ Blackmagic DeckLink devices.
1531
+
1532
+ To enable this output device, you need the Blackmagic DeckLink SDK and
1533
+ you need to configure with the appropriate "--extra-cflags" and
1534
+ "--extra-ldflags". On Windows, you need to run the IDL files through
1535
+ widl.
1536
+
1537
+ DeckLink is very picky about the formats it supports. Pixel format is
1538
+ always uyvy422, framerate, field order and video size must be
1539
+ determined for your device with -list_formats 1. Audio sample rate is
1540
+ always 48 kHz.
1541
+
1542
+ Options
1543
+
1544
+ list_devices
1545
+ If set to true, print a list of devices and exit. Defaults to
1546
+ false. This option is deprecated, please use the "-sinks" option of
1547
+ ffmpeg to list the available output devices.
1548
+
1549
+ list_formats
1550
+ If set to true, print a list of supported formats and exit.
1551
+ Defaults to false.
1552
+
1553
+ preroll
1554
+ Amount of time to preroll video in seconds. Defaults to 0.5.
1555
+
1556
+ duplex_mode
1557
+ Sets the decklink device duplex mode. Must be unset, half or full.
1558
+ Defaults to unset.
1559
+
1560
+ timing_offset
1561
+ Sets the genlock timing pixel offset on the used output. Defaults
1562
+ to unset.
1563
+
1564
+ Examples
1565
+
1566
+ o List output devices:
1567
+
1568
+ ffmpeg -sinks decklink
1569
+
1570
+ o List supported formats:
1571
+
1572
+ ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
1573
+
1574
+ o Play video clip:
1575
+
1576
+ ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
1577
+
1578
+ o Play video clip with non-standard framerate or video size:
1579
+
1580
+ ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
1581
+
1582
+ fbdev
1583
+ Linux framebuffer output device.
1584
+
1585
+ The Linux framebuffer is a graphic hardware-independent abstraction
1586
+ layer to show graphics on a computer monitor, typically on the console.
1587
+ It is accessed through a file device node, usually /dev/fb0.
1588
+
1589
+ For more detailed information read the file
1590
+ Documentation/fb/framebuffer.txt included in the Linux source tree.
1591
+
1592
+ Options
1593
+
1594
+ xoffset
1595
+ yoffset
1596
+ Set x/y coordinate of top left corner. Default is 0.
1597
+
1598
+ Examples
1599
+
1600
+ Play a file on framebuffer device /dev/fb0. Required pixel format
1601
+ depends on current framebuffer settings.
1602
+
1603
+ ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0
1604
+
1605
+ See also <http://linux-fbdev.sourceforge.net/>, and fbset(1).
1606
+
1607
+ opengl
1608
+ OpenGL output device.
1609
+
1610
+ To enable this output device you need to configure FFmpeg with
1611
+ "--enable-opengl".
1612
+
1613
+ This output device allows one to render to OpenGL context. Context may
1614
+ be provided by application or default SDL window is created.
1615
+
1616
+ When device renders to external context, application must implement
1617
+ handlers for following messages: "AV_DEV_TO_APP_CREATE_WINDOW_BUFFER" -
1618
+ create OpenGL context on current thread.
1619
+ "AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER" - make OpenGL context current.
1620
+ "AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER" - swap buffers.
1621
+ "AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER" - destroy OpenGL context.
1622
+ Application is also required to inform a device about current
1623
+ resolution by sending "AV_APP_TO_DEV_WINDOW_SIZE" message.
1624
+
1625
+ Options
1626
+
1627
+ background
1628
+ Set background color. Black is a default.
1629
+
1630
+ no_window
1631
+ Disables default SDL window when set to non-zero value.
1632
+ Application must provide OpenGL context and both "window_size_cb"
1633
+ and "window_swap_buffers_cb" callbacks when set.
1634
+
1635
+ window_title
1636
+ Set the SDL window title, if not specified default to the filename
1637
+ specified for the output device. Ignored when no_window is set.
1638
+
1639
+ window_size
1640
+ Set preferred window size, can be a string of the form widthxheight
1641
+ or a video size abbreviation. If not specified it defaults to the
1642
+ size of the input video, downscaled according to the aspect ratio.
1643
+ Mostly usable when no_window is not set.
1644
+
1645
+ Examples
1646
+
1647
+ Play a file on SDL window using OpenGL rendering:
1648
+
1649
+ ffmpeg -i INPUT -f opengl "window title"
1650
+
1651
+ oss
1652
+ OSS (Open Sound System) output device.
1653
+
1654
+ pulse
1655
+ PulseAudio output device.
1656
+
1657
+ To enable this output device you need to configure FFmpeg with
1658
+ "--enable-libpulse".
1659
+
1660
+ More information about PulseAudio can be found on
1661
+ <http://www.pulseaudio.org>
1662
+
1663
+ Options
1664
+
1665
+ server
1666
+ Connect to a specific PulseAudio server, specified by an IP
1667
+ address. Default server is used when not provided.
1668
+
1669
+ name
1670
+ Specify the application name PulseAudio will use when showing
1671
+ active clients, by default it is the "LIBAVFORMAT_IDENT" string.
1672
+
1673
+ stream_name
1674
+ Specify the stream name PulseAudio will use when showing active
1675
+ streams, by default it is set to the specified output name.
1676
+
1677
+ device
1678
+ Specify the device to use. Default device is used when not
1679
+ provided. List of output devices can be obtained with command
1680
+ pactl list sinks.
1681
+
1682
+ buffer_size
1683
+ buffer_duration
1684
+ Control the size and duration of the PulseAudio buffer. A small
1685
+ buffer gives more control, but requires more frequent updates.
1686
+
1687
+ buffer_size specifies size in bytes while buffer_duration specifies
1688
+ duration in milliseconds.
1689
+
1690
+ When both options are provided then the highest value is used
1691
+ (duration is recalculated to bytes using stream parameters). If
1692
+ they are set to 0 (which is default), the device will use the
1693
+ default PulseAudio duration value. By default PulseAudio set buffer
1694
+ duration to around 2 seconds.
1695
+
1696
+ prebuf
1697
+ Specify pre-buffering size in bytes. The server does not start with
1698
+ playback before at least prebuf bytes are available in the buffer.
1699
+ By default this option is initialized to the same value as
1700
+ buffer_size or buffer_duration (whichever is bigger).
1701
+
1702
+ minreq
1703
+ Specify minimum request size in bytes. The server does not request
1704
+ less than minreq bytes from the client, instead waits until the
1705
+ buffer is free enough to request more bytes at once. It is
1706
+ recommended to not set this option, which will initialize this to a
1707
+ value that is deemed sensible by the server.
1708
+
1709
+ Examples
1710
+
1711
+ Play a file on default device on default server:
1712
+
1713
+ ffmpeg -i INPUT -f pulse "stream name"
1714
+
1715
+ sdl
1716
+ SDL (Simple DirectMedia Layer) output device.
1717
+
1718
+ "sdl2" can be used as alias for "sdl".
1719
+
1720
+ This output device allows one to show a video stream in an SDL window.
1721
+ Only one SDL window is allowed per application, so you can have only
1722
+ one instance of this output device in an application.
1723
+
1724
+ To enable this output device you need libsdl installed on your system
1725
+ when configuring your build.
1726
+
1727
+ For more information about SDL, check: <http://www.libsdl.org/>
1728
+
1729
+ Options
1730
+
1731
+ window_title
1732
+ Set the SDL window title, if not specified default to the filename
1733
+ specified for the output device.
1734
+
1735
+ icon_title
1736
+ Set the name of the iconified SDL window, if not specified it is
1737
+ set to the same value of window_title.
1738
+
1739
+ window_size
1740
+ Set the SDL window size, can be a string of the form widthxheight
1741
+ or a video size abbreviation. If not specified it defaults to the
1742
+ size of the input video, downscaled according to the aspect ratio.
1743
+
1744
+ window_x
1745
+ window_y
1746
+ Set the position of the window on the screen.
1747
+
1748
+ window_fullscreen
1749
+ Set fullscreen mode when non-zero value is provided. Default value
1750
+ is zero.
1751
+
1752
+ window_enable_quit
1753
+ Enable quit action (using window button or keyboard key) when non-
1754
+ zero value is provided. Default value is 1 (enable quit action)
1755
+
1756
+ Interactive commands
1757
+
1758
+ The window created by the device can be controlled through the
1759
+ following interactive commands.
1760
+
1761
+ q, ESC
1762
+ Quit the device immediately.
1763
+
1764
+ Examples
1765
+
1766
+ The following command shows the ffmpeg output is an SDL window, forcing
1767
+ its size to the qcif format:
1768
+
1769
+ ffmpeg -i INPUT -c:v rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output"
1770
+
1771
+ sndio
1772
+ sndio audio output device.
1773
+
1774
+ v4l2
1775
+ Video4Linux2 output device.
1776
+
1777
+ xv
1778
+ XV (XVideo) output device.
1779
+
1780
+ This output device allows one to show a video stream in a X Window
1781
+ System window.
1782
+
1783
+ Options
1784
+
1785
+ display_name
1786
+ Specify the hardware display name, which determines the display and
1787
+ communications domain to be used.
1788
+
1789
+ The display name or DISPLAY environment variable can be a string in
1790
+ the format hostname[:number[.screen_number]].
1791
+
1792
+ hostname specifies the name of the host machine on which the
1793
+ display is physically attached. number specifies the number of the
1794
+ display server on that host machine. screen_number specifies the
1795
+ screen to be used on that server.
1796
+
1797
+ If unspecified, it defaults to the value of the DISPLAY environment
1798
+ variable.
1799
+
1800
+ For example, "dual-headed:0.1" would specify screen 1 of display 0
1801
+ on the machine named ``dual-headed''.
1802
+
1803
+ Check the X11 specification for more detailed information about the
1804
+ display name format.
1805
+
1806
+ window_id
1807
+ When set to non-zero value then device doesn't create new window,
1808
+ but uses existing one with provided window_id. By default this
1809
+ options is set to zero and device creates its own window.
1810
+
1811
+ window_size
1812
+ Set the created window size, can be a string of the form
1813
+ widthxheight or a video size abbreviation. If not specified it
1814
+ defaults to the size of the input video. Ignored when window_id is
1815
+ set.
1816
+
1817
+ window_x
1818
+ window_y
1819
+ Set the X and Y window offsets for the created window. They are
1820
+ both set to 0 by default. The values may be ignored by the window
1821
+ manager. Ignored when window_id is set.
1822
+
1823
+ window_title
1824
+ Set the window title, if not specified default to the filename
1825
+ specified for the output device. Ignored when window_id is set.
1826
+
1827
+ For more information about XVideo see <http://www.x.org/>.
1828
+
1829
+ Examples
1830
+
1831
+ o Decode, display and encode video input with ffmpeg at the same
1832
+ time:
1833
+
1834
+ ffmpeg -i INPUT OUTPUT -f xv display
1835
+
1836
+ o Decode and display the input video to multiple X11 windows:
1837
+
1838
+ ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
1839
+
1840
+ SEE ALSO
1841
+ ffmpeg(1), ffplay(1), ffprobe(1), libavdevice(3)
1842
+
1843
+ AUTHORS
1844
+ The FFmpeg developers.
1845
+
1846
+ For details about the authorship, see the Git history of the project
1847
+ (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
1848
+ the FFmpeg source directory, or browsing the online repository at
1849
+ <http://source.ffmpeg.org>.
1850
+
1851
+ Maintainers for the specific components are listed in the file
1852
+ MAINTAINERS in the source code tree.
1853
+
1854
+ FFMPEG-DEVICES(1)
ffmpeg-4.4-amd64-static/manpages/ffmpeg-filters.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-4.4-amd64-static/manpages/ffmpeg-formats.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-4.4-amd64-static/manpages/ffmpeg-protocols.txt ADDED
@@ -0,0 +1,1768 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FFMPEG-PROTOCOLS(1) FFMPEG-PROTOCOLS(1)
2
+
3
+ NAME
4
+ ffmpeg-protocols - FFmpeg protocols
5
+
6
+ DESCRIPTION
7
+ This document describes the input and output protocols provided by the
8
+ libavformat library.
9
+
10
+ PROTOCOL OPTIONS
11
+ The libavformat library provides some generic global options, which can
12
+ be set on all the protocols. In addition each protocol may support so-
13
+ called private options, which are specific for that component.
14
+
15
+ Options may be set by specifying -option value in the FFmpeg tools, or
16
+ by setting the value explicitly in the "AVFormatContext" options or
17
+ using the libavutil/opt.h API for programmatic use.
18
+
19
+ The list of supported options follows:
20
+
21
+ protocol_whitelist list (input)
22
+ Set a ","-separated list of allowed protocols. "ALL" matches all
23
+ protocols. Protocols prefixed by "-" are disabled. All protocols
24
+ are allowed by default but protocols used by an another protocol
25
+ (nested protocols) are restricted to a per protocol subset.
26
+
27
+ PROTOCOLS
28
+ Protocols are configured elements in FFmpeg that enable access to
29
+ resources that require specific protocols.
30
+
31
+ When you configure your FFmpeg build, all the supported protocols are
32
+ enabled by default. You can list all available ones using the configure
33
+ option "--list-protocols".
34
+
35
+ You can disable all the protocols using the configure option
36
+ "--disable-protocols", and selectively enable a protocol using the
37
+ option "--enable-protocol=PROTOCOL", or you can disable a particular
38
+ protocol using the option "--disable-protocol=PROTOCOL".
39
+
40
+ The option "-protocols" of the ff* tools will display the list of
41
+ supported protocols.
42
+
43
+ All protocols accept the following options:
44
+
45
+ rw_timeout
46
+ Maximum time to wait for (network) read/write operations to
47
+ complete, in microseconds.
48
+
49
+ A description of the currently available protocols follows.
50
+
51
+ amqp
52
+ Advanced Message Queueing Protocol (AMQP) version 0-9-1 is a broker
53
+ based publish-subscribe communication protocol.
54
+
55
+ FFmpeg must be compiled with --enable-librabbitmq to support AMQP. A
56
+ separate AMQP broker must also be run. An example open-source AMQP
57
+ broker is RabbitMQ.
58
+
59
+ After starting the broker, an FFmpeg client may stream data to the
60
+ broker using the command:
61
+
62
+ ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@]hostname[:port][/vhost]
63
+
64
+ Where hostname and port (default is 5672) is the address of the broker.
65
+ The client may also set a user/password for authentication. The default
66
+ for both fields is "guest". Name of virtual host on broker can be set
67
+ with vhost. The default value is "/".
68
+
69
+ Muliple subscribers may stream from the broker using the command:
70
+
71
+ ffplay amqp://[[user]:[password]@]hostname[:port][/vhost]
72
+
73
+ In RabbitMQ all data published to the broker flows through a specific
74
+ exchange, and each subscribing client has an assigned queue/buffer.
75
+ When a packet arrives at an exchange, it may be copied to a client's
76
+ queue depending on the exchange and routing_key fields.
77
+
78
+ The following options are supported:
79
+
80
+ exchange
81
+ Sets the exchange to use on the broker. RabbitMQ has several
82
+ predefined exchanges: "amq.direct" is the default exchange, where
83
+ the publisher and subscriber must have a matching routing_key;
84
+ "amq.fanout" is the same as a broadcast operation (i.e. the data is
85
+ forwarded to all queues on the fanout exchange independent of the
86
+ routing_key); and "amq.topic" is similar to "amq.direct", but
87
+ allows for more complex pattern matching (refer to the RabbitMQ
88
+ documentation).
89
+
90
+ routing_key
91
+ Sets the routing key. The default value is "amqp". The routing key
92
+ is used on the "amq.direct" and "amq.topic" exchanges to decide
93
+ whether packets are written to the queue of a subscriber.
94
+
95
+ pkt_size
96
+ Maximum size of each packet sent/received to the broker. Default is
97
+ 131072. Minimum is 4096 and max is any large value (representable
98
+ by an int). When receiving packets, this sets an internal buffer
99
+ size in FFmpeg. It should be equal to or greater than the size of
100
+ the published packets to the broker. Otherwise the received message
101
+ may be truncated causing decoding errors.
102
+
103
+ connection_timeout
104
+ The timeout in seconds during the initial connection to the broker.
105
+ The default value is rw_timeout, or 5 seconds if rw_timeout is not
106
+ set.
107
+
108
+ delivery_mode mode
109
+ Sets the delivery mode of each message sent to broker. The
110
+ following values are accepted:
111
+
112
+ persistent
113
+ Delivery mode set to "persistent" (2). This is the default
114
+ value. Messages may be written to the broker's disk depending
115
+ on its setup.
116
+
117
+ non-persistent
118
+ Delivery mode set to "non-persistent" (1). Messages will stay
119
+ in broker's memory unless the broker is under memory pressure.
120
+
121
+ async
122
+ Asynchronous data filling wrapper for input stream.
123
+
124
+ Fill data in a background thread, to decouple I/O operation from demux
125
+ thread.
126
+
127
+ async:<URL>
128
+ async:http://host/resource
129
+ async:cache:http://host/resource
130
+
131
+ bluray
132
+ Read BluRay playlist.
133
+
134
+ The accepted options are:
135
+
136
+ angle
137
+ BluRay angle
138
+
139
+ chapter
140
+ Start chapter (1...N)
141
+
142
+ playlist
143
+ Playlist to read (BDMV/PLAYLIST/?????.mpls)
144
+
145
+ Examples:
146
+
147
+ Read longest playlist from BluRay mounted to /mnt/bluray:
148
+
149
+ bluray:/mnt/bluray
150
+
151
+ Read angle 2 of playlist 4 from BluRay mounted to /mnt/bluray, start
152
+ from chapter 2:
153
+
154
+ -playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
155
+
156
+ cache
157
+ Caching wrapper for input stream.
158
+
159
+ Cache the input stream to temporary file. It brings seeking capability
160
+ to live streams.
161
+
162
+ The accepted options are:
163
+
164
+ read_ahead_limit
165
+ Amount in bytes that may be read ahead when seeking isn't
166
+ supported. Range is -1 to INT_MAX. -1 for unlimited. Default is
167
+ 65536.
168
+
169
+ URL Syntax is
170
+
171
+ cache:<URL>
172
+
173
+ concat
174
+ Physical concatenation protocol.
175
+
176
+ Read and seek from many resources in sequence as if they were a unique
177
+ resource.
178
+
179
+ A URL accepted by this protocol has the syntax:
180
+
181
+ concat:<URL1>|<URL2>|...|<URLN>
182
+
183
+ where URL1, URL2, ..., URLN are the urls of the resource to be
184
+ concatenated, each one possibly specifying a distinct protocol.
185
+
186
+ For example to read a sequence of files split1.mpeg, split2.mpeg,
187
+ split3.mpeg with ffplay use the command:
188
+
189
+ ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
190
+
191
+ Note that you may need to escape the character "|" which is special for
192
+ many shells.
193
+
194
+ crypto
195
+ AES-encrypted stream reading protocol.
196
+
197
+ The accepted options are:
198
+
199
+ key Set the AES decryption key binary block from given hexadecimal
200
+ representation.
201
+
202
+ iv Set the AES decryption initialization vector binary block from
203
+ given hexadecimal representation.
204
+
205
+ Accepted URL formats:
206
+
207
+ crypto:<URL>
208
+ crypto+<URL>
209
+
210
+ data
211
+ Data in-line in the URI. See
212
+ <http://en.wikipedia.org/wiki/Data_URI_scheme>.
213
+
214
+ For example, to convert a GIF file given inline with ffmpeg:
215
+
216
+ ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
217
+
218
+ file
219
+ File access protocol.
220
+
221
+ Read from or write to a file.
222
+
223
+ A file URL can have the form:
224
+
225
+ file:<filename>
226
+
227
+ where filename is the path of the file to read.
228
+
229
+ An URL that does not have a protocol prefix will be assumed to be a
230
+ file URL. Depending on the build, an URL that looks like a Windows path
231
+ with the drive letter at the beginning will also be assumed to be a
232
+ file URL (usually not the case in builds for unix-like systems).
233
+
234
+ For example to read from a file input.mpeg with ffmpeg use the command:
235
+
236
+ ffmpeg -i file:input.mpeg output.mpeg
237
+
238
+ This protocol accepts the following options:
239
+
240
+ truncate
241
+ Truncate existing files on write, if set to 1. A value of 0
242
+ prevents truncating. Default value is 1.
243
+
244
+ blocksize
245
+ Set I/O operation maximum block size, in bytes. Default value is
246
+ "INT_MAX", which results in not limiting the requested block size.
247
+ Setting this value reasonably low improves user termination request
248
+ reaction time, which is valuable for files on slow medium.
249
+
250
+ follow
251
+ If set to 1, the protocol will retry reading at the end of the
252
+ file, allowing reading files that still are being written. In order
253
+ for this to terminate, you either need to use the rw_timeout
254
+ option, or use the interrupt callback (for API users).
255
+
256
+ seekable
257
+ Controls if seekability is advertised on the file. 0 means non-
258
+ seekable, -1 means auto (seekable for normal files, non-seekable
259
+ for named pipes).
260
+
261
+ Many demuxers handle seekable and non-seekable resources
262
+ differently, overriding this might speed up opening certain files
263
+ at the cost of losing some features (e.g. accurate seeking).
264
+
265
+ ftp
266
+ FTP (File Transfer Protocol).
267
+
268
+ Read from or write to remote resources using FTP protocol.
269
+
270
+ Following syntax is required.
271
+
272
+ ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
273
+
274
+ This protocol accepts the following options.
275
+
276
+ timeout
277
+ Set timeout in microseconds of socket I/O operations used by the
278
+ underlying low level operation. By default it is set to -1, which
279
+ means that the timeout is not specified.
280
+
281
+ ftp-user
282
+ Set a user to be used for authenticating to the FTP server. This is
283
+ overridden by the user in the FTP URL.
284
+
285
+ ftp-password
286
+ Set a password to be used for authenticating to the FTP server.
287
+ This is overridden by the password in the FTP URL, or by ftp-
288
+ anonymous-password if no user is set.
289
+
290
+ ftp-anonymous-password
291
+ Password used when login as anonymous user. Typically an e-mail
292
+ address should be used.
293
+
294
+ ftp-write-seekable
295
+ Control seekability of connection during encoding. If set to 1 the
296
+ resource is supposed to be seekable, if set to 0 it is assumed not
297
+ to be seekable. Default value is 0.
298
+
299
+ NOTE: Protocol can be used as output, but it is recommended to not do
300
+ it, unless special care is taken (tests, customized server
301
+ configuration etc.). Different FTP servers behave in different way
302
+ during seek operation. ff* tools may produce incomplete content due to
303
+ server limitations.
304
+
305
+ gopher
306
+ Gopher protocol.
307
+
308
+ gophers
309
+ Gophers protocol.
310
+
311
+ The Gopher protocol with TLS encapsulation.
312
+
313
+ hls
314
+ Read Apple HTTP Live Streaming compliant segmented stream as a uniform
315
+ one. The M3U8 playlists describing the segments can be remote HTTP
316
+ resources or local files, accessed using the standard file protocol.
317
+ The nested protocol is declared by specifying "+proto" after the hls
318
+ URI scheme name, where proto is either "file" or "http".
319
+
320
+ hls+http://host/path/to/remote/resource.m3u8
321
+ hls+file://path/to/local/resource.m3u8
322
+
323
+ Using this protocol is discouraged - the hls demuxer should work just
324
+ as well (if not, please report the issues) and is more complete. To
325
+ use the hls demuxer instead, simply use the direct URLs to the m3u8
326
+ files.
327
+
328
+ http
329
+ HTTP (Hyper Text Transfer Protocol).
330
+
331
+ This protocol accepts the following options:
332
+
333
+ seekable
334
+ Control seekability of connection. If set to 1 the resource is
335
+ supposed to be seekable, if set to 0 it is assumed not to be
336
+ seekable, if set to -1 it will try to autodetect if it is seekable.
337
+ Default value is -1.
338
+
339
+ chunked_post
340
+ If set to 1 use chunked Transfer-Encoding for posts, default is 1.
341
+
342
+ content_type
343
+ Set a specific content type for the POST messages or for listen
344
+ mode.
345
+
346
+ http_proxy
347
+ set HTTP proxy to tunnel through e.g. http://example.com:1234
348
+
349
+ headers
350
+ Set custom HTTP headers, can override built in default headers. The
351
+ value must be a string encoding the headers.
352
+
353
+ multiple_requests
354
+ Use persistent connections if set to 1, default is 0.
355
+
356
+ post_data
357
+ Set custom HTTP post data.
358
+
359
+ referer
360
+ Set the Referer header. Include 'Referer: URL' header in HTTP
361
+ request.
362
+
363
+ user_agent
364
+ Override the User-Agent header. If not specified the protocol will
365
+ use a string describing the libavformat build. ("Lavf/<version>")
366
+
367
+ user-agent
368
+ This is a deprecated option, you can use user_agent instead it.
369
+
370
+ reconnect_at_eof
371
+ If set then eof is treated like an error and causes reconnection,
372
+ this is useful for live / endless streams.
373
+
374
+ reconnect_streamed
375
+ If set then even streamed/non seekable streams will be reconnected
376
+ on errors.
377
+
378
+ reconnect_on_network_error
379
+ Reconnect automatically in case of TCP/TLS errors during connect.
380
+
381
+ reconnect_on_http_error
382
+ A comma separated list of HTTP status codes to reconnect on. The
383
+ list can include specific status codes (e.g. '503') or the strings
384
+ '4xx' / '5xx'.
385
+
386
+ reconnect_delay_max
387
+ Sets the maximum delay in seconds after which to give up
388
+ reconnecting
389
+
390
+ mime_type
391
+ Export the MIME type.
392
+
393
+ http_version
394
+ Exports the HTTP response version number. Usually "1.0" or "1.1".
395
+
396
+ icy If set to 1 request ICY (SHOUTcast) metadata from the server. If
397
+ the server supports this, the metadata has to be retrieved by the
398
+ application by reading the icy_metadata_headers and
399
+ icy_metadata_packet options. The default is 1.
400
+
401
+ icy_metadata_headers
402
+ If the server supports ICY metadata, this contains the ICY-specific
403
+ HTTP reply headers, separated by newline characters.
404
+
405
+ icy_metadata_packet
406
+ If the server supports ICY metadata, and icy was set to 1, this
407
+ contains the last non-empty metadata packet sent by the server. It
408
+ should be polled in regular intervals by applications interested in
409
+ mid-stream metadata updates.
410
+
411
+ cookies
412
+ Set the cookies to be sent in future requests. The format of each
413
+ cookie is the same as the value of a Set-Cookie HTTP response
414
+ field. Multiple cookies can be delimited by a newline character.
415
+
416
+ offset
417
+ Set initial byte offset.
418
+
419
+ end_offset
420
+ Try to limit the request to bytes preceding this offset.
421
+
422
+ method
423
+ When used as a client option it sets the HTTP method for the
424
+ request.
425
+
426
+ When used as a server option it sets the HTTP method that is going
427
+ to be expected from the client(s). If the expected and the
428
+ received HTTP method do not match the client will be given a Bad
429
+ Request response. When unset the HTTP method is not checked for
430
+ now. This will be replaced by autodetection in the future.
431
+
432
+ listen
433
+ If set to 1 enables experimental HTTP server. This can be used to
434
+ send data when used as an output option, or read data from a client
435
+ with HTTP POST when used as an input option. If set to 2 enables
436
+ experimental multi-client HTTP server. This is not yet implemented
437
+ in ffmpeg.c and thus must not be used as a command line option.
438
+
439
+ # Server side (sending):
440
+ ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://<server>:<port>
441
+
442
+ # Client side (receiving):
443
+ ffmpeg -i http://<server>:<port> -c copy somefile.ogg
444
+
445
+ # Client can also be done with wget:
446
+ wget http://<server>:<port> -O somefile.ogg
447
+
448
+ # Server side (receiving):
449
+ ffmpeg -listen 1 -i http://<server>:<port> -c copy somefile.ogg
450
+
451
+ # Client side (sending):
452
+ ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://<server>:<port>
453
+
454
+ # Client can also be done with wget:
455
+ wget --post-file=somefile.ogg http://<server>:<port>
456
+
457
+ send_expect_100
458
+ Send an Expect: 100-continue header for POST. If set to 1 it will
459
+ send, if set to 0 it won't, if set to -1 it will try to send if it
460
+ is applicable. Default value is -1.
461
+
462
+ auth_type
463
+ Set HTTP authentication type. No option for Digest, since this
464
+ method requires getting nonce parameters from the server first and
465
+ can't be used straight away like Basic.
466
+
467
+ none
468
+ Choose the HTTP authentication type automatically. This is the
469
+ default.
470
+
471
+ basic
472
+ Choose the HTTP basic authentication.
473
+
474
+ Basic authentication sends a Base64-encoded string that
475
+ contains a user name and password for the client. Base64 is not
476
+ a form of encryption and should be considered the same as
477
+ sending the user name and password in clear text (Base64 is a
478
+ reversible encoding). If a resource needs to be protected,
479
+ strongly consider using an authentication scheme other than
480
+ basic authentication. HTTPS/TLS should be used with basic
481
+ authentication. Without these additional security
482
+ enhancements, basic authentication should not be used to
483
+ protect sensitive or valuable information.
484
+
485
+ HTTP Cookies
486
+
487
+ Some HTTP requests will be denied unless cookie values are passed in
488
+ with the request. The cookies option allows these cookies to be
489
+ specified. At the very least, each cookie must specify a value along
490
+ with a path and domain. HTTP requests that match both the domain and
491
+ path will automatically include the cookie value in the HTTP Cookie
492
+ header field. Multiple cookies can be delimited by a newline.
493
+
494
+ The required syntax to play a stream specifying a cookie is:
495
+
496
+ ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
497
+
498
+ Icecast
499
+ Icecast protocol (stream to Icecast servers)
500
+
501
+ This protocol accepts the following options:
502
+
503
+ ice_genre
504
+ Set the stream genre.
505
+
506
+ ice_name
507
+ Set the stream name.
508
+
509
+ ice_description
510
+ Set the stream description.
511
+
512
+ ice_url
513
+ Set the stream website URL.
514
+
515
+ ice_public
516
+ Set if the stream should be public. The default is 0 (not public).
517
+
518
+ user_agent
519
+ Override the User-Agent header. If not specified a string of the
520
+ form "Lavf/<version>" will be used.
521
+
522
+ password
523
+ Set the Icecast mountpoint password.
524
+
525
+ content_type
526
+ Set the stream content type. This must be set if it is different
527
+ from audio/mpeg.
528
+
529
+ legacy_icecast
530
+ This enables support for Icecast versions < 2.4.0, that do not
531
+ support the HTTP PUT method but the SOURCE method.
532
+
533
+ tls Establish a TLS (HTTPS) connection to Icecast.
534
+
535
+ icecast://[<username>[:<password>]@]<server>:<port>/<mountpoint>
536
+
537
+ mmst
538
+ MMS (Microsoft Media Server) protocol over TCP.
539
+
540
+ mmsh
541
+ MMS (Microsoft Media Server) protocol over HTTP.
542
+
543
+ The required syntax is:
544
+
545
+ mmsh://<server>[:<port>][/<app>][/<playpath>]
546
+
547
+ md5
548
+ MD5 output protocol.
549
+
550
+ Computes the MD5 hash of the data to be written, and on close writes
551
+ this to the designated output or stdout if none is specified. It can be
552
+ used to test muxers without writing an actual file.
553
+
554
+ Some examples follow.
555
+
556
+ # Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
557
+ ffmpeg -i input.flv -f avi -y md5:output.avi.md5
558
+
559
+ # Write the MD5 hash of the encoded AVI file to stdout.
560
+ ffmpeg -i input.flv -f avi -y md5:
561
+
562
+ Note that some formats (typically MOV) require the output protocol to
563
+ be seekable, so they will fail with the MD5 output protocol.
564
+
565
+ pipe
566
+ UNIX pipe access protocol.
567
+
568
+ Read and write from UNIX pipes.
569
+
570
+ The accepted syntax is:
571
+
572
+ pipe:[<number>]
573
+
574
+ number is the number corresponding to the file descriptor of the pipe
575
+ (e.g. 0 for stdin, 1 for stdout, 2 for stderr). If number is not
576
+ specified, by default the stdout file descriptor will be used for
577
+ writing, stdin for reading.
578
+
579
+ For example to read from stdin with ffmpeg:
580
+
581
+ cat test.wav | ffmpeg -i pipe:0
582
+ # ...this is the same as...
583
+ cat test.wav | ffmpeg -i pipe:
584
+
585
+ For writing to stdout with ffmpeg:
586
+
587
+ ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
588
+ # ...this is the same as...
589
+ ffmpeg -i test.wav -f avi pipe: | cat > test.avi
590
+
591
+ This protocol accepts the following options:
592
+
593
+ blocksize
594
+ Set I/O operation maximum block size, in bytes. Default value is
595
+ "INT_MAX", which results in not limiting the requested block size.
596
+ Setting this value reasonably low improves user termination request
597
+ reaction time, which is valuable if data transmission is slow.
598
+
599
+ Note that some formats (typically MOV), require the output protocol to
600
+ be seekable, so they will fail with the pipe output protocol.
601
+
602
+ prompeg
603
+ Pro-MPEG Code of Practice #3 Release 2 FEC protocol.
604
+
605
+ The Pro-MPEG CoP#3 FEC is a 2D parity-check forward error correction
606
+ mechanism for MPEG-2 Transport Streams sent over RTP.
607
+
608
+ This protocol must be used in conjunction with the "rtp_mpegts" muxer
609
+ and the "rtp" protocol.
610
+
611
+ The required syntax is:
612
+
613
+ -f rtp_mpegts -fec prompeg=<option>=<val>... rtp://<hostname>:<port>
614
+
615
+ The destination UDP ports are "port + 2" for the column FEC stream and
616
+ "port + 4" for the row FEC stream.
617
+
618
+ This protocol accepts the following options:
619
+
620
+ l=n The number of columns (4-20, LxD <= 100)
621
+
622
+ d=n The number of rows (4-20, LxD <= 100)
623
+
624
+ Example usage:
625
+
626
+ -f rtp_mpegts -fec prompeg=l=8:d=4 rtp://<hostname>:<port>
627
+
628
+ rist
629
+ Reliable Internet Streaming Transport protocol
630
+
631
+ The accepted options are:
632
+
633
+ rist_profile
634
+ Supported values:
635
+
636
+ simple
637
+ main
638
+ This one is default.
639
+
640
+ advanced
641
+ buffer_size
642
+ Set internal RIST buffer size in milliseconds for retransmission of
643
+ data. Default value is 0 which means the librist default (1 sec).
644
+ Maximum value is 30 seconds.
645
+
646
+ pkt_size
647
+ Set maximum packet size for sending data. 1316 by default.
648
+
649
+ log_level
650
+ Set loglevel for RIST logging messages. You only need to set this
651
+ if you explicitly want to enable debug level messages or packet
652
+ loss simulation, otherwise the regular loglevel is respected.
653
+
654
+ secret
655
+ Set override of encryption secret, by default is unset.
656
+
657
+ encryption
658
+ Set encryption type, by default is disabled. Acceptable values are
659
+ 128 and 256.
660
+
661
+ rtmp
662
+ Real-Time Messaging Protocol.
663
+
664
+ The Real-Time Messaging Protocol (RTMP) is used for streaming
665
+ multimedia content across a TCP/IP network.
666
+
667
+ The required syntax is:
668
+
669
+ rtmp://[<username>:<password>@]<server>[:<port>][/<app>][/<instance>][/<playpath>]
670
+
671
+ The accepted parameters are:
672
+
673
+ username
674
+ An optional username (mostly for publishing).
675
+
676
+ password
677
+ An optional password (mostly for publishing).
678
+
679
+ server
680
+ The address of the RTMP server.
681
+
682
+ port
683
+ The number of the TCP port to use (by default is 1935).
684
+
685
+ app It is the name of the application to access. It usually corresponds
686
+ to the path where the application is installed on the RTMP server
687
+ (e.g. /ondemand/, /flash/live/, etc.). You can override the value
688
+ parsed from the URI through the "rtmp_app" option, too.
689
+
690
+ playpath
691
+ It is the path or name of the resource to play with reference to
692
+ the application specified in app, may be prefixed by "mp4:". You
693
+ can override the value parsed from the URI through the
694
+ "rtmp_playpath" option, too.
695
+
696
+ listen
697
+ Act as a server, listening for an incoming connection.
698
+
699
+ timeout
700
+ Maximum time to wait for the incoming connection. Implies listen.
701
+
702
+ Additionally, the following parameters can be set via command line
703
+ options (or in code via "AVOption"s):
704
+
705
+ rtmp_app
706
+ Name of application to connect on the RTMP server. This option
707
+ overrides the parameter specified in the URI.
708
+
709
+ rtmp_buffer
710
+ Set the client buffer time in milliseconds. The default is 3000.
711
+
712
+ rtmp_conn
713
+ Extra arbitrary AMF connection parameters, parsed from a string,
714
+ e.g. like "B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0". Each
715
+ value is prefixed by a single character denoting the type, B for
716
+ Boolean, N for number, S for string, O for object, or Z for null,
717
+ followed by a colon. For Booleans the data must be either 0 or 1
718
+ for FALSE or TRUE, respectively. Likewise for Objects the data
719
+ must be 0 or 1 to end or begin an object, respectively. Data items
720
+ in subobjects may be named, by prefixing the type with 'N' and
721
+ specifying the name before the value (i.e. "NB:myFlag:1"). This
722
+ option may be used multiple times to construct arbitrary AMF
723
+ sequences.
724
+
725
+ rtmp_flashver
726
+ Version of the Flash plugin used to run the SWF player. The default
727
+ is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0
728
+ (compatible; <libavformat version>).)
729
+
730
+ rtmp_flush_interval
731
+ Number of packets flushed in the same request (RTMPT only). The
732
+ default is 10.
733
+
734
+ rtmp_live
735
+ Specify that the media is a live stream. No resuming or seeking in
736
+ live streams is possible. The default value is "any", which means
737
+ the subscriber first tries to play the live stream specified in the
738
+ playpath. If a live stream of that name is not found, it plays the
739
+ recorded stream. The other possible values are "live" and
740
+ "recorded".
741
+
742
+ rtmp_pageurl
743
+ URL of the web page in which the media was embedded. By default no
744
+ value will be sent.
745
+
746
+ rtmp_playpath
747
+ Stream identifier to play or to publish. This option overrides the
748
+ parameter specified in the URI.
749
+
750
+ rtmp_subscribe
751
+ Name of live stream to subscribe to. By default no value will be
752
+ sent. It is only sent if the option is specified or if rtmp_live
753
+ is set to live.
754
+
755
+ rtmp_swfhash
756
+ SHA256 hash of the decompressed SWF file (32 bytes).
757
+
758
+ rtmp_swfsize
759
+ Size of the decompressed SWF file, required for SWFVerification.
760
+
761
+ rtmp_swfurl
762
+ URL of the SWF player for the media. By default no value will be
763
+ sent.
764
+
765
+ rtmp_swfverify
766
+ URL to player swf file, compute hash/size automatically.
767
+
768
+ rtmp_tcurl
769
+ URL of the target stream. Defaults to proto://host[:port]/app.
770
+
771
+ For example to read with ffplay a multimedia resource named "sample"
772
+ from the application "vod" from an RTMP server "myserver":
773
+
774
+ ffplay rtmp://myserver/vod/sample
775
+
776
+ To publish to a password protected server, passing the playpath and app
777
+ names separately:
778
+
779
+ ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
780
+
781
+ rtmpe
782
+ Encrypted Real-Time Messaging Protocol.
783
+
784
+ The Encrypted Real-Time Messaging Protocol (RTMPE) is used for
785
+ streaming multimedia content within standard cryptographic primitives,
786
+ consisting of Diffie-Hellman key exchange and HMACSHA256, generating a
787
+ pair of RC4 keys.
788
+
789
+ rtmps
790
+ Real-Time Messaging Protocol over a secure SSL connection.
791
+
792
+ The Real-Time Messaging Protocol (RTMPS) is used for streaming
793
+ multimedia content across an encrypted connection.
794
+
795
+ rtmpt
796
+ Real-Time Messaging Protocol tunneled through HTTP.
797
+
798
+ The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used
799
+ for streaming multimedia content within HTTP requests to traverse
800
+ firewalls.
801
+
802
+ rtmpte
803
+ Encrypted Real-Time Messaging Protocol tunneled through HTTP.
804
+
805
+ The Encrypted Real-Time Messaging Protocol tunneled through HTTP
806
+ (RTMPTE) is used for streaming multimedia content within HTTP requests
807
+ to traverse firewalls.
808
+
809
+ rtmpts
810
+ Real-Time Messaging Protocol tunneled through HTTPS.
811
+
812
+ The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is
813
+ used for streaming multimedia content within HTTPS requests to traverse
814
+ firewalls.
815
+
816
+ libsmbclient
817
+ libsmbclient permits one to manipulate CIFS/SMB network resources.
818
+
819
+ Following syntax is required.
820
+
821
+ smb://[[domain:]user[:password@]]server[/share[/path[/file]]]
822
+
823
+ This protocol accepts the following options.
824
+
825
+ timeout
826
+ Set timeout in milliseconds of socket I/O operations used by the
827
+ underlying low level operation. By default it is set to -1, which
828
+ means that the timeout is not specified.
829
+
830
+ truncate
831
+ Truncate existing files on write, if set to 1. A value of 0
832
+ prevents truncating. Default value is 1.
833
+
834
+ workgroup
835
+ Set the workgroup used for making connections. By default workgroup
836
+ is not specified.
837
+
838
+ For more information see: <http://www.samba.org/>.
839
+
840
+ libssh
841
+ Secure File Transfer Protocol via libssh
842
+
843
+ Read from or write to remote resources using SFTP protocol.
844
+
845
+ Following syntax is required.
846
+
847
+ sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
848
+
849
+ This protocol accepts the following options.
850
+
851
+ timeout
852
+ Set timeout of socket I/O operations used by the underlying low
853
+ level operation. By default it is set to -1, which means that the
854
+ timeout is not specified.
855
+
856
+ truncate
857
+ Truncate existing files on write, if set to 1. A value of 0
858
+ prevents truncating. Default value is 1.
859
+
860
+ private_key
861
+ Specify the path of the file containing private key to use during
862
+ authorization. By default libssh searches for keys in the ~/.ssh/
863
+ directory.
864
+
865
+ Example: Play a file stored on remote server.
866
+
867
+ ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
868
+
869
+ librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte
870
+ Real-Time Messaging Protocol and its variants supported through
871
+ librtmp.
872
+
873
+ Requires the presence of the librtmp headers and library during
874
+ configuration. You need to explicitly configure the build with
875
+ "--enable-librtmp". If enabled this will replace the native RTMP
876
+ protocol.
877
+
878
+ This protocol provides most client functions and a few server functions
879
+ needed to support RTMP, RTMP tunneled in HTTP (RTMPT), encrypted RTMP
880
+ (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled variants of these
881
+ encrypted types (RTMPTE, RTMPTS).
882
+
883
+ The required syntax is:
884
+
885
+ <rtmp_proto>://<server>[:<port>][/<app>][/<playpath>] <options>
886
+
887
+ where rtmp_proto is one of the strings "rtmp", "rtmpt", "rtmpe",
888
+ "rtmps", "rtmpte", "rtmpts" corresponding to each RTMP variant, and
889
+ server, port, app and playpath have the same meaning as specified for
890
+ the RTMP native protocol. options contains a list of space-separated
891
+ options of the form key=val.
892
+
893
+ See the librtmp manual page (man 3 librtmp) for more information.
894
+
895
+ For example, to stream a file in real-time to an RTMP server using
896
+ ffmpeg:
897
+
898
+ ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
899
+
900
+ To play the same stream using ffplay:
901
+
902
+ ffplay "rtmp://myserver/live/mystream live=1"
903
+
904
+ rtp
905
+ Real-time Transport Protocol.
906
+
907
+ The required syntax for an RTP URL is:
908
+ rtp://hostname[:port][?option=val...]
909
+
910
+ port specifies the RTP port to use.
911
+
912
+ The following URL options are supported:
913
+
914
+ ttl=n
915
+ Set the TTL (Time-To-Live) value (for multicast only).
916
+
917
+ rtcpport=n
918
+ Set the remote RTCP port to n.
919
+
920
+ localrtpport=n
921
+ Set the local RTP port to n.
922
+
923
+ localrtcpport=n'
924
+ Set the local RTCP port to n.
925
+
926
+ pkt_size=n
927
+ Set max packet size (in bytes) to n.
928
+
929
+ buffer_size=size
930
+ Set the maximum UDP socket buffer size in bytes.
931
+
932
+ connect=0|1
933
+ Do a "connect()" on the UDP socket (if set to 1) or not (if set to
934
+ 0).
935
+
936
+ sources=ip[,ip]
937
+ List allowed source IP addresses.
938
+
939
+ block=ip[,ip]
940
+ List disallowed (blocked) source IP addresses.
941
+
942
+ write_to_source=0|1
943
+ Send packets to the source address of the latest received packet
944
+ (if set to 1) or to a default remote address (if set to 0).
945
+
946
+ localport=n
947
+ Set the local RTP port to n.
948
+
949
+ timeout=n
950
+ Set timeout (in microseconds) of socket I/O operations to n.
951
+
952
+ This is a deprecated option. Instead, localrtpport should be used.
953
+
954
+ Important notes:
955
+
956
+ 1. If rtcpport is not set the RTCP port will be set to the RTP port
957
+ value plus 1.
958
+
959
+ 2. If localrtpport (the local RTP port) is not set any available port
960
+ will be used for the local RTP and RTCP ports.
961
+
962
+ 3. If localrtcpport (the local RTCP port) is not set it will be set to
963
+ the local RTP port value plus 1.
964
+
965
+ rtsp
966
+ Real-Time Streaming Protocol.
967
+
968
+ RTSP is not technically a protocol handler in libavformat, it is a
969
+ demuxer and muxer. The demuxer supports both normal RTSP (with data
970
+ transferred over RTP; this is used by e.g. Apple and Microsoft) and
971
+ Real-RTSP (with data transferred over RDT).
972
+
973
+ The muxer can be used to send a stream using RTSP ANNOUNCE to a server
974
+ supporting it (currently Darwin Streaming Server and Mischa
975
+ Spiegelmock's <https://github.com/revmischa/rtsp-server>).
976
+
977
+ The required syntax for a RTSP url is:
978
+
979
+ rtsp://<hostname>[:<port>]/<path>
980
+
981
+ Options can be set on the ffmpeg/ffplay command line, or set in code
982
+ via "AVOption"s or in "avformat_open_input".
983
+
984
+ The following options are supported.
985
+
986
+ initial_pause
987
+ Do not start playing the stream immediately if set to 1. Default
988
+ value is 0.
989
+
990
+ rtsp_transport
991
+ Set RTSP transport protocols.
992
+
993
+ It accepts the following values:
994
+
995
+ udp Use UDP as lower transport protocol.
996
+
997
+ tcp Use TCP (interleaving within the RTSP control channel) as lower
998
+ transport protocol.
999
+
1000
+ udp_multicast
1001
+ Use UDP multicast as lower transport protocol.
1002
+
1003
+ http
1004
+ Use HTTP tunneling as lower transport protocol, which is useful
1005
+ for passing proxies.
1006
+
1007
+ Multiple lower transport protocols may be specified, in that case
1008
+ they are tried one at a time (if the setup of one fails, the next
1009
+ one is tried). For the muxer, only the tcp and udp options are
1010
+ supported.
1011
+
1012
+ rtsp_flags
1013
+ Set RTSP flags.
1014
+
1015
+ The following values are accepted:
1016
+
1017
+ filter_src
1018
+ Accept packets only from negotiated peer address and port.
1019
+
1020
+ listen
1021
+ Act as a server, listening for an incoming connection.
1022
+
1023
+ prefer_tcp
1024
+ Try TCP for RTP transport first, if TCP is available as RTSP
1025
+ RTP transport.
1026
+
1027
+ Default value is none.
1028
+
1029
+ allowed_media_types
1030
+ Set media types to accept from the server.
1031
+
1032
+ The following flags are accepted:
1033
+
1034
+ video
1035
+ audio
1036
+ data
1037
+
1038
+ By default it accepts all media types.
1039
+
1040
+ min_port
1041
+ Set minimum local UDP port. Default value is 5000.
1042
+
1043
+ max_port
1044
+ Set maximum local UDP port. Default value is 65000.
1045
+
1046
+ timeout
1047
+ Set maximum timeout (in seconds) to wait for incoming connections.
1048
+
1049
+ A value of -1 means infinite (default). This option implies the
1050
+ rtsp_flags set to listen.
1051
+
1052
+ reorder_queue_size
1053
+ Set number of packets to buffer for handling of reordered packets.
1054
+
1055
+ stimeout
1056
+ Set socket TCP I/O timeout in microseconds.
1057
+
1058
+ user-agent
1059
+ Override User-Agent header. If not specified, it defaults to the
1060
+ libavformat identifier string.
1061
+
1062
+ When receiving data over UDP, the demuxer tries to reorder received
1063
+ packets (since they may arrive out of order, or packets may get lost
1064
+ totally). This can be disabled by setting the maximum demuxing delay to
1065
+ zero (via the "max_delay" field of AVFormatContext).
1066
+
1067
+ When watching multi-bitrate Real-RTSP streams with ffplay, the streams
1068
+ to display can be chosen with "-vst" n and "-ast" n for video and audio
1069
+ respectively, and can be switched on the fly by pressing "v" and "a".
1070
+
1071
+ Examples
1072
+
1073
+ The following examples all make use of the ffplay and ffmpeg tools.
1074
+
1075
+ o Watch a stream over UDP, with a max reordering delay of 0.5
1076
+ seconds:
1077
+
1078
+ ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
1079
+
1080
+ o Watch a stream tunneled over HTTP:
1081
+
1082
+ ffplay -rtsp_transport http rtsp://server/video.mp4
1083
+
1084
+ o Send a stream in realtime to a RTSP server, for others to watch:
1085
+
1086
+ ffmpeg -re -i <input> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
1087
+
1088
+ o Receive a stream in realtime:
1089
+
1090
+ ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <output>
1091
+
1092
+ sap
1093
+ Session Announcement Protocol (RFC 2974). This is not technically a
1094
+ protocol handler in libavformat, it is a muxer and demuxer. It is used
1095
+ for signalling of RTP streams, by announcing the SDP for the streams
1096
+ regularly on a separate port.
1097
+
1098
+ Muxer
1099
+
1100
+ The syntax for a SAP url given to the muxer is:
1101
+
1102
+ sap://<destination>[:<port>][?<options>]
1103
+
1104
+ The RTP packets are sent to destination on port port, or to port 5004
1105
+ if no port is specified. options is a "&"-separated list. The
1106
+ following options are supported:
1107
+
1108
+ announce_addr=address
1109
+ Specify the destination IP address for sending the announcements
1110
+ to. If omitted, the announcements are sent to the commonly used
1111
+ SAP announcement multicast address 224.2.127.254 (sap.mcast.net),
1112
+ or ff0e::2:7ffe if destination is an IPv6 address.
1113
+
1114
+ announce_port=port
1115
+ Specify the port to send the announcements on, defaults to 9875 if
1116
+ not specified.
1117
+
1118
+ ttl=ttl
1119
+ Specify the time to live value for the announcements and RTP
1120
+ packets, defaults to 255.
1121
+
1122
+ same_port=0|1
1123
+ If set to 1, send all RTP streams on the same port pair. If zero
1124
+ (the default), all streams are sent on unique ports, with each
1125
+ stream on a port 2 numbers higher than the previous. VLC/Live555
1126
+ requires this to be set to 1, to be able to receive the stream.
1127
+ The RTP stack in libavformat for receiving requires all streams to
1128
+ be sent on unique ports.
1129
+
1130
+ Example command lines follow.
1131
+
1132
+ To broadcast a stream on the local subnet, for watching in VLC:
1133
+
1134
+ ffmpeg -re -i <input> -f sap sap://224.0.0.255?same_port=1
1135
+
1136
+ Similarly, for watching in ffplay:
1137
+
1138
+ ffmpeg -re -i <input> -f sap sap://224.0.0.255
1139
+
1140
+ And for watching in ffplay, over IPv6:
1141
+
1142
+ ffmpeg -re -i <input> -f sap sap://[ff0e::1:2:3:4]
1143
+
1144
+ Demuxer
1145
+
1146
+ The syntax for a SAP url given to the demuxer is:
1147
+
1148
+ sap://[<address>][:<port>]
1149
+
1150
+ address is the multicast address to listen for announcements on, if
1151
+ omitted, the default 224.2.127.254 (sap.mcast.net) is used. port is the
1152
+ port that is listened on, 9875 if omitted.
1153
+
1154
+ The demuxers listens for announcements on the given address and port.
1155
+ Once an announcement is received, it tries to receive that particular
1156
+ stream.
1157
+
1158
+ Example command lines follow.
1159
+
1160
+ To play back the first stream announced on the normal SAP multicast
1161
+ address:
1162
+
1163
+ ffplay sap://
1164
+
1165
+ To play back the first stream announced on one the default IPv6 SAP
1166
+ multicast address:
1167
+
1168
+ ffplay sap://[ff0e::2:7ffe]
1169
+
1170
+ sctp
1171
+ Stream Control Transmission Protocol.
1172
+
1173
+ The accepted URL syntax is:
1174
+
1175
+ sctp://<host>:<port>[?<options>]
1176
+
1177
+ The protocol accepts the following options:
1178
+
1179
+ listen
1180
+ If set to any value, listen for an incoming connection. Outgoing
1181
+ connection is done by default.
1182
+
1183
+ max_streams
1184
+ Set the maximum number of streams. By default no limit is set.
1185
+
1186
+ srt
1187
+ Haivision Secure Reliable Transport Protocol via libsrt.
1188
+
1189
+ The supported syntax for a SRT URL is:
1190
+
1191
+ srt://<hostname>:<port>[?<options>]
1192
+
1193
+ options contains a list of &-separated options of the form key=val.
1194
+
1195
+ or
1196
+
1197
+ <options> srt://<hostname>:<port>
1198
+
1199
+ options contains a list of '-key val' options.
1200
+
1201
+ This protocol accepts the following options.
1202
+
1203
+ connect_timeout=milliseconds
1204
+ Connection timeout; SRT cannot connect for RTT > 1500 msec (2
1205
+ handshake exchanges) with the default connect timeout of 3 seconds.
1206
+ This option applies to the caller and rendezvous connection modes.
1207
+ The connect timeout is 10 times the value set for the rendezvous
1208
+ mode (which can be used as a workaround for this connection problem
1209
+ with earlier versions).
1210
+
1211
+ ffs=bytes
1212
+ Flight Flag Size (Window Size), in bytes. FFS is actually an
1213
+ internal parameter and you should set it to not less than
1214
+ recv_buffer_size and mss. The default value is relatively large,
1215
+ therefore unless you set a very large receiver buffer, you do not
1216
+ need to change this option. Default value is 25600.
1217
+
1218
+ inputbw=bytes/seconds
1219
+ Sender nominal input rate, in bytes per seconds. Used along with
1220
+ oheadbw, when maxbw is set to relative (0), to calculate maximum
1221
+ sending rate when recovery packets are sent along with the main
1222
+ media stream: inputbw * (100 + oheadbw) / 100 if inputbw is not set
1223
+ while maxbw is set to relative (0), the actual input rate is
1224
+ evaluated inside the library. Default value is 0.
1225
+
1226
+ iptos=tos
1227
+ IP Type of Service. Applies to sender only. Default value is 0xB8.
1228
+
1229
+ ipttl=ttl
1230
+ IP Time To Live. Applies to sender only. Default value is 64.
1231
+
1232
+ latency=microseconds
1233
+ Timestamp-based Packet Delivery Delay. Used to absorb bursts of
1234
+ missed packet retransmissions. This flag sets both rcvlatency and
1235
+ peerlatency to the same value. Note that prior to version 1.3.0
1236
+ this is the only flag to set the latency, however this is
1237
+ effectively equivalent to setting peerlatency, when side is sender
1238
+ and rcvlatency when side is receiver, and the bidirectional stream
1239
+ sending is not supported.
1240
+
1241
+ listen_timeout=microseconds
1242
+ Set socket listen timeout.
1243
+
1244
+ maxbw=bytes/seconds
1245
+ Maximum sending bandwidth, in bytes per seconds. -1 infinite
1246
+ (CSRTCC limit is 30mbps) 0 relative to input rate (see inputbw) >0
1247
+ absolute limit value Default value is 0 (relative)
1248
+
1249
+ mode=caller|listener|rendezvous
1250
+ Connection mode. caller opens client connection. listener starts
1251
+ server to listen for incoming connections. rendezvous use Rendez-
1252
+ Vous connection mode. Default value is caller.
1253
+
1254
+ mss=bytes
1255
+ Maximum Segment Size, in bytes. Used for buffer allocation and rate
1256
+ calculation using a packet counter assuming fully filled packets.
1257
+ The smallest MSS between the peers is used. This is 1500 by default
1258
+ in the overall internet. This is the maximum size of the UDP
1259
+ packet and can be only decreased, unless you have some unusual
1260
+ dedicated network settings. Default value is 1500.
1261
+
1262
+ nakreport=1|0
1263
+ If set to 1, Receiver will send `UMSG_LOSSREPORT` messages
1264
+ periodically until a lost packet is retransmitted or intentionally
1265
+ dropped. Default value is 1.
1266
+
1267
+ oheadbw=percents
1268
+ Recovery bandwidth overhead above input rate, in percents. See
1269
+ inputbw. Default value is 25%.
1270
+
1271
+ passphrase=string
1272
+ HaiCrypt Encryption/Decryption Passphrase string, length from 10 to
1273
+ 79 characters. The passphrase is the shared secret between the
1274
+ sender and the receiver. It is used to generate the Key Encrypting
1275
+ Key using PBKDF2 (Password-Based Key Derivation Function). It is
1276
+ used only if pbkeylen is non-zero. It is used on the receiver only
1277
+ if the received data is encrypted. The configured passphrase
1278
+ cannot be recovered (write-only).
1279
+
1280
+ enforced_encryption=1|0
1281
+ If true, both connection parties must have the same password set
1282
+ (including empty, that is, with no encryption). If the password
1283
+ doesn't match or only one side is unencrypted, the connection is
1284
+ rejected. Default is true.
1285
+
1286
+ kmrefreshrate=packets
1287
+ The number of packets to be transmitted after which the encryption
1288
+ key is switched to a new key. Default is -1. -1 means auto
1289
+ (0x1000000 in srt library). The range for this option is integers
1290
+ in the 0 - "INT_MAX".
1291
+
1292
+ kmpreannounce=packets
1293
+ The interval between when a new encryption key is sent and when
1294
+ switchover occurs. This value also applies to the subsequent
1295
+ interval between when switchover occurs and when the old encryption
1296
+ key is decommissioned. Default is -1. -1 means auto (0x1000 in srt
1297
+ library). The range for this option is integers in the 0 -
1298
+ "INT_MAX".
1299
+
1300
+ payload_size=bytes
1301
+ Sets the maximum declared size of a packet transferred during the
1302
+ single call to the sending function in Live mode. Use 0 if this
1303
+ value isn't used (which is default in file mode). Default is -1
1304
+ (automatic), which typically means MPEG-TS; if you are going to use
1305
+ SRT to send any different kind of payload, such as, for example,
1306
+ wrapping a live stream in very small frames, then you can use a
1307
+ bigger maximum frame size, though not greater than 1456 bytes.
1308
+
1309
+ pkt_size=bytes
1310
+ Alias for payload_size.
1311
+
1312
+ peerlatency=microseconds
1313
+ The latency value (as described in rcvlatency) that is set by the
1314
+ sender side as a minimum value for the receiver.
1315
+
1316
+ pbkeylen=bytes
1317
+ Sender encryption key length, in bytes. Only can be set to 0, 16,
1318
+ 24 and 32. Enable sender encryption if not 0. Not required on
1319
+ receiver (set to 0), key size obtained from sender in HaiCrypt
1320
+ handshake. Default value is 0.
1321
+
1322
+ rcvlatency=microseconds
1323
+ The time that should elapse since the moment when the packet was
1324
+ sent and the moment when it's delivered to the receiver application
1325
+ in the receiving function. This time should be a buffer time large
1326
+ enough to cover the time spent for sending, unexpectedly extended
1327
+ RTT time, and the time needed to retransmit the lost UDP packet.
1328
+ The effective latency value will be the maximum of this options'
1329
+ value and the value of peerlatency set by the peer side. Before
1330
+ version 1.3.0 this option is only available as latency.
1331
+
1332
+ recv_buffer_size=bytes
1333
+ Set UDP receive buffer size, expressed in bytes.
1334
+
1335
+ send_buffer_size=bytes
1336
+ Set UDP send buffer size, expressed in bytes.
1337
+
1338
+ timeout=microseconds
1339
+ Set raise error timeouts for read, write and connect operations.
1340
+ Note that the SRT library has internal timeouts which can be
1341
+ controlled separately, the value set here is only a cap on those.
1342
+
1343
+ tlpktdrop=1|0
1344
+ Too-late Packet Drop. When enabled on receiver, it skips missing
1345
+ packets that have not been delivered in time and delivers the
1346
+ following packets to the application when their time-to-play has
1347
+ come. It also sends a fake ACK to the sender. When enabled on
1348
+ sender and enabled on the receiving peer, the sender drops the
1349
+ older packets that have no chance of being delivered in time. It
1350
+ was automatically enabled in the sender if the receiver supports
1351
+ it.
1352
+
1353
+ sndbuf=bytes
1354
+ Set send buffer size, expressed in bytes.
1355
+
1356
+ rcvbuf=bytes
1357
+ Set receive buffer size, expressed in bytes.
1358
+
1359
+ Receive buffer must not be greater than ffs.
1360
+
1361
+ lossmaxttl=packets
1362
+ The value up to which the Reorder Tolerance may grow. When Reorder
1363
+ Tolerance is > 0, then packet loss report is delayed until that
1364
+ number of packets come in. Reorder Tolerance increases every time a
1365
+ "belated" packet has come, but it wasn't due to retransmission
1366
+ (that is, when UDP packets tend to come out of order), with the
1367
+ difference between the latest sequence and this packet's sequence,
1368
+ and not more than the value of this option. By default it's 0,
1369
+ which means that this mechanism is turned off, and the loss report
1370
+ is always sent immediately upon experiencing a "gap" in sequences.
1371
+
1372
+ minversion
1373
+ The minimum SRT version that is required from the peer. A
1374
+ connection to a peer that does not satisfy the minimum version
1375
+ requirement will be rejected.
1376
+
1377
+ The version format in hex is 0xXXYYZZ for x.y.z in human readable
1378
+ form.
1379
+
1380
+ streamid=string
1381
+ A string limited to 512 characters that can be set on the socket
1382
+ prior to connecting. This stream ID will be able to be retrieved by
1383
+ the listener side from the socket that is returned from srt_accept
1384
+ and was connected by a socket with that set stream ID. SRT does not
1385
+ enforce any special interpretation of the contents of this string.
1386
+ This option doesnXt make sense in Rendezvous connection; the result
1387
+ might be that simply one side will override the value from the
1388
+ other side and itXs the matter of luck which one would win
1389
+
1390
+ smoother=live|file
1391
+ The type of Smoother used for the transmission for that socket,
1392
+ which is responsible for the transmission and congestion control.
1393
+ The Smoother type must be exactly the same on both connecting
1394
+ parties, otherwise the connection is rejected.
1395
+
1396
+ messageapi=1|0
1397
+ When set, this socket uses the Message API, otherwise it uses
1398
+ Buffer API. Note that in live mode (see transtype) thereXs only
1399
+ message API available. In File mode you can chose to use one of two
1400
+ modes:
1401
+
1402
+ Stream API (default, when this option is false). In this mode you
1403
+ may send as many data as you wish with one sending instruction, or
1404
+ even use dedicated functions that read directly from a file. The
1405
+ internal facility will take care of any speed and congestion
1406
+ control. When receiving, you can also receive as many data as
1407
+ desired, the data not extracted will be waiting for the next call.
1408
+ There is no boundary between data portions in the Stream mode.
1409
+
1410
+ Message API. In this mode your single sending instruction passes
1411
+ exactly one piece of data that has boundaries (a message). Contrary
1412
+ to Live mode, this message may span across multiple UDP packets and
1413
+ the only size limitation is that it shall fit as a whole in the
1414
+ sending buffer. The receiver shall use as large buffer as necessary
1415
+ to receive the message, otherwise the message will not be given up.
1416
+ When the message is not complete (not all packets received or there
1417
+ was a packet loss) it will not be given up.
1418
+
1419
+ transtype=live|file
1420
+ Sets the transmission type for the socket, in particular, setting
1421
+ this option sets multiple other parameters to their default values
1422
+ as required for a particular transmission type.
1423
+
1424
+ live: Set options as for live transmission. In this mode, you
1425
+ should send by one sending instruction only so many data that fit
1426
+ in one UDP packet, and limited to the value defined first in
1427
+ payload_size (1316 is default in this mode). There is no speed
1428
+ control in this mode, only the bandwidth control, if configured, in
1429
+ order to not exceed the bandwidth with the overhead transmission
1430
+ (retransmitted and control packets).
1431
+
1432
+ file: Set options as for non-live transmission. See messageapi for
1433
+ further explanations
1434
+
1435
+ linger=seconds
1436
+ The number of seconds that the socket waits for unsent data when
1437
+ closing. Default is -1. -1 means auto (off with 0 seconds in live
1438
+ mode, on with 180 seconds in file mode). The range for this option
1439
+ is integers in the 0 - "INT_MAX".
1440
+
1441
+ For more information see: <https://github.com/Haivision/srt>.
1442
+
1443
+ srtp
1444
+ Secure Real-time Transport Protocol.
1445
+
1446
+ The accepted options are:
1447
+
1448
+ srtp_in_suite
1449
+ srtp_out_suite
1450
+ Select input and output encoding suites.
1451
+
1452
+ Supported values:
1453
+
1454
+ AES_CM_128_HMAC_SHA1_80
1455
+ SRTP_AES128_CM_HMAC_SHA1_80
1456
+ AES_CM_128_HMAC_SHA1_32
1457
+ SRTP_AES128_CM_HMAC_SHA1_32
1458
+ srtp_in_params
1459
+ srtp_out_params
1460
+ Set input and output encoding parameters, which are expressed by a
1461
+ base64-encoded representation of a binary block. The first 16 bytes
1462
+ of this binary block are used as master key, the following 14 bytes
1463
+ are used as master salt.
1464
+
1465
+ subfile
1466
+ Virtually extract a segment of a file or another stream. The
1467
+ underlying stream must be seekable.
1468
+
1469
+ Accepted options:
1470
+
1471
+ start
1472
+ Start offset of the extracted segment, in bytes.
1473
+
1474
+ end End offset of the extracted segment, in bytes. If set to 0,
1475
+ extract till end of file.
1476
+
1477
+ Examples:
1478
+
1479
+ Extract a chapter from a DVD VOB file (start and end sectors obtained
1480
+ externally and multiplied by 2048):
1481
+
1482
+ subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB
1483
+
1484
+ Play an AVI file directly from a TAR archive:
1485
+
1486
+ subfile,,start,183241728,end,366490624,,:archive.tar
1487
+
1488
+ Play a MPEG-TS file from start offset till end:
1489
+
1490
+ subfile,,start,32815239,end,0,,:video.ts
1491
+
1492
+ tee
1493
+ Writes the output to multiple protocols. The individual outputs are
1494
+ separated by |
1495
+
1496
+ tee:file://path/to/local/this.avi|file://path/to/local/that.avi
1497
+
1498
+ tcp
1499
+ Transmission Control Protocol.
1500
+
1501
+ The required syntax for a TCP url is:
1502
+
1503
+ tcp://<hostname>:<port>[?<options>]
1504
+
1505
+ options contains a list of &-separated options of the form key=val.
1506
+
1507
+ The list of supported options follows.
1508
+
1509
+ listen=2|1|0
1510
+ Listen for an incoming connection. 0 disables listen, 1 enables
1511
+ listen in single client mode, 2 enables listen in multi-client
1512
+ mode. Default value is 0.
1513
+
1514
+ timeout=microseconds
1515
+ Set raise error timeout, expressed in microseconds.
1516
+
1517
+ This option is only relevant in read mode: if no data arrived in
1518
+ more than this time interval, raise error.
1519
+
1520
+ listen_timeout=milliseconds
1521
+ Set listen timeout, expressed in milliseconds.
1522
+
1523
+ recv_buffer_size=bytes
1524
+ Set receive buffer size, expressed bytes.
1525
+
1526
+ send_buffer_size=bytes
1527
+ Set send buffer size, expressed bytes.
1528
+
1529
+ tcp_nodelay=1|0
1530
+ Set TCP_NODELAY to disable Nagle's algorithm. Default value is 0.
1531
+
1532
+ tcp_mss=bytes
1533
+ Set maximum segment size for outgoing TCP packets, expressed in
1534
+ bytes.
1535
+
1536
+ The following example shows how to setup a listening TCP connection
1537
+ with ffmpeg, which is then accessed with ffplay:
1538
+
1539
+ ffmpeg -i <input> -f <format> tcp://<hostname>:<port>?listen
1540
+ ffplay tcp://<hostname>:<port>
1541
+
1542
+ tls
1543
+ Transport Layer Security (TLS) / Secure Sockets Layer (SSL)
1544
+
1545
+ The required syntax for a TLS/SSL url is:
1546
+
1547
+ tls://<hostname>:<port>[?<options>]
1548
+
1549
+ The following parameters can be set via command line options (or in
1550
+ code via "AVOption"s):
1551
+
1552
+ ca_file, cafile=filename
1553
+ A file containing certificate authority (CA) root certificates to
1554
+ treat as trusted. If the linked TLS library contains a default this
1555
+ might not need to be specified for verification to work, but not
1556
+ all libraries and setups have defaults built in. The file must be
1557
+ in OpenSSL PEM format.
1558
+
1559
+ tls_verify=1|0
1560
+ If enabled, try to verify the peer that we are communicating with.
1561
+ Note, if using OpenSSL, this currently only makes sure that the
1562
+ peer certificate is signed by one of the root certificates in the
1563
+ CA database, but it does not validate that the certificate actually
1564
+ matches the host name we are trying to connect to. (With other
1565
+ backends, the host name is validated as well.)
1566
+
1567
+ This is disabled by default since it requires a CA database to be
1568
+ provided by the caller in many cases.
1569
+
1570
+ cert_file, cert=filename
1571
+ A file containing a certificate to use in the handshake with the
1572
+ peer. (When operating as server, in listen mode, this is more
1573
+ often required by the peer, while client certificates only are
1574
+ mandated in certain setups.)
1575
+
1576
+ key_file, key=filename
1577
+ A file containing the private key for the certificate.
1578
+
1579
+ listen=1|0
1580
+ If enabled, listen for connections on the provided port, and assume
1581
+ the server role in the handshake instead of the client role.
1582
+
1583
+ http_proxy
1584
+ The HTTP proxy to tunnel through, e.g. "http://example.com:1234".
1585
+ The proxy must support the CONNECT method.
1586
+
1587
+ Example command lines:
1588
+
1589
+ To create a TLS/SSL server that serves an input stream.
1590
+
1591
+ ffmpeg -i <input> -f <format> tls://<hostname>:<port>?listen&cert=<server.crt>&key=<server.key>
1592
+
1593
+ To play back a stream from the TLS/SSL server using ffplay:
1594
+
1595
+ ffplay tls://<hostname>:<port>
1596
+
1597
+ udp
1598
+ User Datagram Protocol.
1599
+
1600
+ The required syntax for an UDP URL is:
1601
+
1602
+ udp://<hostname>:<port>[?<options>]
1603
+
1604
+ options contains a list of &-separated options of the form key=val.
1605
+
1606
+ In case threading is enabled on the system, a circular buffer is used
1607
+ to store the incoming data, which allows one to reduce loss of data due
1608
+ to UDP socket buffer overruns. The fifo_size and overrun_nonfatal
1609
+ options are related to this buffer.
1610
+
1611
+ The list of supported options follows.
1612
+
1613
+ buffer_size=size
1614
+ Set the UDP maximum socket buffer size in bytes. This is used to
1615
+ set either the receive or send buffer size, depending on what the
1616
+ socket is used for. Default is 32 KB for output, 384 KB for input.
1617
+ See also fifo_size.
1618
+
1619
+ bitrate=bitrate
1620
+ If set to nonzero, the output will have the specified constant
1621
+ bitrate if the input has enough packets to sustain it.
1622
+
1623
+ burst_bits=bits
1624
+ When using bitrate this specifies the maximum number of bits in
1625
+ packet bursts.
1626
+
1627
+ localport=port
1628
+ Override the local UDP port to bind with.
1629
+
1630
+ localaddr=addr
1631
+ Local IP address of a network interface used for sending packets or
1632
+ joining multicast groups.
1633
+
1634
+ pkt_size=size
1635
+ Set the size in bytes of UDP packets.
1636
+
1637
+ reuse=1|0
1638
+ Explicitly allow or disallow reusing UDP sockets.
1639
+
1640
+ ttl=ttl
1641
+ Set the time to live value (for multicast only).
1642
+
1643
+ connect=1|0
1644
+ Initialize the UDP socket with "connect()". In this case, the
1645
+ destination address can't be changed with ff_udp_set_remote_url
1646
+ later. If the destination address isn't known at the start, this
1647
+ option can be specified in ff_udp_set_remote_url, too. This allows
1648
+ finding out the source address for the packets with getsockname,
1649
+ and makes writes return with AVERROR(ECONNREFUSED) if "destination
1650
+ unreachable" is received. For receiving, this gives the benefit of
1651
+ only receiving packets from the specified peer address/port.
1652
+
1653
+ sources=address[,address]
1654
+ Only receive packets sent from the specified addresses. In case of
1655
+ multicast, also subscribe to multicast traffic coming from these
1656
+ addresses only.
1657
+
1658
+ block=address[,address]
1659
+ Ignore packets sent from the specified addresses. In case of
1660
+ multicast, also exclude the source addresses in the multicast
1661
+ subscription.
1662
+
1663
+ fifo_size=units
1664
+ Set the UDP receiving circular buffer size, expressed as a number
1665
+ of packets with size of 188 bytes. If not specified defaults to
1666
+ 7*4096.
1667
+
1668
+ overrun_nonfatal=1|0
1669
+ Survive in case of UDP receiving circular buffer overrun. Default
1670
+ value is 0.
1671
+
1672
+ timeout=microseconds
1673
+ Set raise error timeout, expressed in microseconds.
1674
+
1675
+ This option is only relevant in read mode: if no data arrived in
1676
+ more than this time interval, raise error.
1677
+
1678
+ broadcast=1|0
1679
+ Explicitly allow or disallow UDP broadcasting.
1680
+
1681
+ Note that broadcasting may not work properly on networks having a
1682
+ broadcast storm protection.
1683
+
1684
+ Examples
1685
+
1686
+ o Use ffmpeg to stream over UDP to a remote endpoint:
1687
+
1688
+ ffmpeg -i <input> -f <format> udp://<hostname>:<port>
1689
+
1690
+ o Use ffmpeg to stream in mpegts format over UDP using 188 sized UDP
1691
+ packets, using a large input buffer:
1692
+
1693
+ ffmpeg -i <input> -f mpegts udp://<hostname>:<port>?pkt_size=188&buffer_size=65535
1694
+
1695
+ o Use ffmpeg to receive over UDP from a remote endpoint:
1696
+
1697
+ ffmpeg -i udp://[<multicast-address>]:<port> ...
1698
+
1699
+ unix
1700
+ Unix local socket
1701
+
1702
+ The required syntax for a Unix socket URL is:
1703
+
1704
+ unix://<filepath>
1705
+
1706
+ The following parameters can be set via command line options (or in
1707
+ code via "AVOption"s):
1708
+
1709
+ timeout
1710
+ Timeout in ms.
1711
+
1712
+ listen
1713
+ Create the Unix socket in listening mode.
1714
+
1715
+ zmq
1716
+ ZeroMQ asynchronous messaging using the libzmq library.
1717
+
1718
+ This library supports unicast streaming to multiple clients without
1719
+ relying on an external server.
1720
+
1721
+ The required syntax for streaming or connecting to a stream is:
1722
+
1723
+ zmq:tcp://ip-address:port
1724
+
1725
+ Example: Create a localhost stream on port 5555:
1726
+
1727
+ ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555
1728
+
1729
+ Multiple clients may connect to the stream using:
1730
+
1731
+ ffplay zmq:tcp://127.0.0.1:5555
1732
+
1733
+ Streaming to multiple clients is implemented using a ZeroMQ Pub-Sub
1734
+ pattern. The server side binds to a port and publishes data. Clients
1735
+ connect to the server (via IP address/port) and subscribe to the
1736
+ stream. The order in which the server and client start generally does
1737
+ not matter.
1738
+
1739
+ ffmpeg must be compiled with the --enable-libzmq option to support this
1740
+ protocol.
1741
+
1742
+ Options can be set on the ffmpeg/ffplay command line. The following
1743
+ options are supported:
1744
+
1745
+ pkt_size
1746
+ Forces the maximum packet size for sending/receiving data. The
1747
+ default value is 131,072 bytes. On the server side, this sets the
1748
+ maximum size of sent packets via ZeroMQ. On the clients, it sets an
1749
+ internal buffer size for receiving packets. Note that pkt_size on
1750
+ the clients should be equal to or greater than pkt_size on the
1751
+ server. Otherwise the received message may be truncated causing
1752
+ decoding errors.
1753
+
1754
+ SEE ALSO
1755
+ ffmpeg(1), ffplay(1), ffprobe(1), libavformat(3)
1756
+
1757
+ AUTHORS
1758
+ The FFmpeg developers.
1759
+
1760
+ For details about the authorship, see the Git history of the project
1761
+ (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
1762
+ the FFmpeg source directory, or browsing the online repository at
1763
+ <http://source.ffmpeg.org>.
1764
+
1765
+ Maintainers for the specific components are listed in the file
1766
+ MAINTAINERS in the source code tree.
1767
+
1768
+ FFMPEG-PROTOCOLS(1)
ffmpeg-4.4-amd64-static/manpages/ffmpeg-resampler.txt ADDED
@@ -0,0 +1,269 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FFMPEG-RESAMPLER(1) FFMPEG-RESAMPLER(1)
2
+
3
+ NAME
4
+ ffmpeg-resampler - FFmpeg Resampler
5
+
6
+ DESCRIPTION
7
+ The FFmpeg resampler provides a high-level interface to the
8
+ libswresample library audio resampling utilities. In particular it
9
+ allows one to perform audio resampling, audio channel layout
10
+ rematrixing, and convert audio format and packing layout.
11
+
12
+ RESAMPLER OPTIONS
13
+ The audio resampler supports the following named options.
14
+
15
+ Options may be set by specifying -option value in the FFmpeg tools,
16
+ option=value for the aresample filter, by setting the value explicitly
17
+ in the "SwrContext" options or using the libavutil/opt.h API for
18
+ programmatic use.
19
+
20
+ ich, in_channel_count
21
+ Set the number of input channels. Default value is 0. Setting this
22
+ value is not mandatory if the corresponding channel layout
23
+ in_channel_layout is set.
24
+
25
+ och, out_channel_count
26
+ Set the number of output channels. Default value is 0. Setting this
27
+ value is not mandatory if the corresponding channel layout
28
+ out_channel_layout is set.
29
+
30
+ uch, used_channel_count
31
+ Set the number of used input channels. Default value is 0. This
32
+ option is only used for special remapping.
33
+
34
+ isr, in_sample_rate
35
+ Set the input sample rate. Default value is 0.
36
+
37
+ osr, out_sample_rate
38
+ Set the output sample rate. Default value is 0.
39
+
40
+ isf, in_sample_fmt
41
+ Specify the input sample format. It is set by default to "none".
42
+
43
+ osf, out_sample_fmt
44
+ Specify the output sample format. It is set by default to "none".
45
+
46
+ tsf, internal_sample_fmt
47
+ Set the internal sample format. Default value is "none". This will
48
+ automatically be chosen when it is not explicitly set.
49
+
50
+ icl, in_channel_layout
51
+ ocl, out_channel_layout
52
+ Set the input/output channel layout.
53
+
54
+ See the Channel Layout section in the ffmpeg-utils(1) manual for
55
+ the required syntax.
56
+
57
+ clev, center_mix_level
58
+ Set the center mix level. It is a value expressed in deciBel, and
59
+ must be in the interval [-32,32].
60
+
61
+ slev, surround_mix_level
62
+ Set the surround mix level. It is a value expressed in deciBel, and
63
+ must be in the interval [-32,32].
64
+
65
+ lfe_mix_level
66
+ Set LFE mix into non LFE level. It is used when there is a LFE
67
+ input but no LFE output. It is a value expressed in deciBel, and
68
+ must be in the interval [-32,32].
69
+
70
+ rmvol, rematrix_volume
71
+ Set rematrix volume. Default value is 1.0.
72
+
73
+ rematrix_maxval
74
+ Set maximum output value for rematrixing. This can be used to
75
+ prevent clipping vs. preventing volume reduction. A value of 1.0
76
+ prevents clipping.
77
+
78
+ flags, swr_flags
79
+ Set flags used by the converter. Default value is 0.
80
+
81
+ It supports the following individual flags:
82
+
83
+ res force resampling, this flag forces resampling to be used even
84
+ when the input and output sample rates match.
85
+
86
+ dither_scale
87
+ Set the dither scale. Default value is 1.
88
+
89
+ dither_method
90
+ Set dither method. Default value is 0.
91
+
92
+ Supported values:
93
+
94
+ rectangular
95
+ select rectangular dither
96
+
97
+ triangular
98
+ select triangular dither
99
+
100
+ triangular_hp
101
+ select triangular dither with high pass
102
+
103
+ lipshitz
104
+ select Lipshitz noise shaping dither.
105
+
106
+ shibata
107
+ select Shibata noise shaping dither.
108
+
109
+ low_shibata
110
+ select low Shibata noise shaping dither.
111
+
112
+ high_shibata
113
+ select high Shibata noise shaping dither.
114
+
115
+ f_weighted
116
+ select f-weighted noise shaping dither
117
+
118
+ modified_e_weighted
119
+ select modified-e-weighted noise shaping dither
120
+
121
+ improved_e_weighted
122
+ select improved-e-weighted noise shaping dither
123
+
124
+ resampler
125
+ Set resampling engine. Default value is swr.
126
+
127
+ Supported values:
128
+
129
+ swr select the native SW Resampler; filter options precision and
130
+ cheby are not applicable in this case.
131
+
132
+ soxr
133
+ select the SoX Resampler (where available); compensation, and
134
+ filter options filter_size, phase_shift, exact_rational,
135
+ filter_type & kaiser_beta, are not applicable in this case.
136
+
137
+ filter_size
138
+ For swr only, set resampling filter size, default value is 32.
139
+
140
+ phase_shift
141
+ For swr only, set resampling phase shift, default value is 10, and
142
+ must be in the interval [0,30].
143
+
144
+ linear_interp
145
+ Use linear interpolation when enabled (the default). Disable it if
146
+ you want to preserve speed instead of quality when exact_rational
147
+ fails.
148
+
149
+ exact_rational
150
+ For swr only, when enabled, try to use exact phase_count based on
151
+ input and output sample rate. However, if it is larger than "1 <<
152
+ phase_shift", the phase_count will be "1 << phase_shift" as
153
+ fallback. Default is enabled.
154
+
155
+ cutoff
156
+ Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must
157
+ be a float value between 0 and 1. Default value is 0.97 with swr,
158
+ and 0.91 with soxr (which, with a sample-rate of 44100, preserves
159
+ the entire audio band to 20kHz).
160
+
161
+ precision
162
+ For soxr only, the precision in bits to which the resampled signal
163
+ will be calculated. The default value of 20 (which, with suitable
164
+ dithering, is appropriate for a destination bit-depth of 16) gives
165
+ SoX's 'High Quality'; a value of 28 gives SoX's 'Very High
166
+ Quality'.
167
+
168
+ cheby
169
+ For soxr only, selects passband rolloff none (Chebyshev) & higher-
170
+ precision approximation for 'irrational' ratios. Default value is
171
+ 0.
172
+
173
+ async
174
+ For swr only, simple 1 parameter audio sync to timestamps using
175
+ stretching, squeezing, filling and trimming. Setting this to 1 will
176
+ enable filling and trimming, larger values represent the maximum
177
+ amount in samples that the data may be stretched or squeezed for
178
+ each second. Default value is 0, thus no compensation is applied
179
+ to make the samples match the audio timestamps.
180
+
181
+ first_pts
182
+ For swr only, assume the first pts should be this value. The time
183
+ unit is 1 / sample rate. This allows for padding/trimming at the
184
+ start of stream. By default, no assumption is made about the first
185
+ frame's expected pts, so no padding or trimming is done. For
186
+ example, this could be set to 0 to pad the beginning with silence
187
+ if an audio stream starts after the video stream or to trim any
188
+ samples with a negative pts due to encoder delay.
189
+
190
+ min_comp
191
+ For swr only, set the minimum difference between timestamps and
192
+ audio data (in seconds) to trigger stretching/squeezing/filling or
193
+ trimming of the data to make it match the timestamps. The default
194
+ is that stretching/squeezing/filling and trimming is disabled
195
+ (min_comp = "FLT_MAX").
196
+
197
+ min_hard_comp
198
+ For swr only, set the minimum difference between timestamps and
199
+ audio data (in seconds) to trigger adding/dropping samples to make
200
+ it match the timestamps. This option effectively is a threshold to
201
+ select between hard (trim/fill) and soft (squeeze/stretch)
202
+ compensation. Note that all compensation is by default disabled
203
+ through min_comp. The default is 0.1.
204
+
205
+ comp_duration
206
+ For swr only, set duration (in seconds) over which data is
207
+ stretched/squeezed to make it match the timestamps. Must be a non-
208
+ negative double float value, default value is 1.0.
209
+
210
+ max_soft_comp
211
+ For swr only, set maximum factor by which data is
212
+ stretched/squeezed to make it match the timestamps. Must be a non-
213
+ negative double float value, default value is 0.
214
+
215
+ matrix_encoding
216
+ Select matrixed stereo encoding.
217
+
218
+ It accepts the following values:
219
+
220
+ none
221
+ select none
222
+
223
+ dolby
224
+ select Dolby
225
+
226
+ dplii
227
+ select Dolby Pro Logic II
228
+
229
+ Default value is "none".
230
+
231
+ filter_type
232
+ For swr only, select resampling filter type. This only affects
233
+ resampling operations.
234
+
235
+ It accepts the following values:
236
+
237
+ cubic
238
+ select cubic
239
+
240
+ blackman_nuttall
241
+ select Blackman Nuttall windowed sinc
242
+
243
+ kaiser
244
+ select Kaiser windowed sinc
245
+
246
+ kaiser_beta
247
+ For swr only, set Kaiser window beta value. Must be a double float
248
+ value in the interval [2,16], default value is 9.
249
+
250
+ output_sample_bits
251
+ For swr only, set number of used output sample bits for dithering.
252
+ Must be an integer in the interval [0,64], default value is 0,
253
+ which means it's not used.
254
+
255
+ SEE ALSO
256
+ ffmpeg(1), ffplay(1), ffprobe(1), libswresample(3)
257
+
258
+ AUTHORS
259
+ The FFmpeg developers.
260
+
261
+ For details about the authorship, see the Git history of the project
262
+ (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
263
+ the FFmpeg source directory, or browsing the online repository at
264
+ <http://source.ffmpeg.org>.
265
+
266
+ Maintainers for the specific components are listed in the file
267
+ MAINTAINERS in the source code tree.
268
+
269
+ FFMPEG-RESAMPLER(1)
ffmpeg-4.4-amd64-static/manpages/ffmpeg-scaler.txt ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FFMPEG-SCALER(1) FFMPEG-SCALER(1)
2
+
3
+ NAME
4
+ ffmpeg-scaler - FFmpeg video scaling and pixel format converter
5
+
6
+ DESCRIPTION
7
+ The FFmpeg rescaler provides a high-level interface to the libswscale
8
+ library image conversion utilities. In particular it allows one to
9
+ perform image rescaling and pixel format conversion.
10
+
11
+ SCALER OPTIONS
12
+ The video scaler supports the following named options.
13
+
14
+ Options may be set by specifying -option value in the FFmpeg tools,
15
+ with a few API-only exceptions noted below. For programmatic use, they
16
+ can be set explicitly in the "SwsContext" options or through the
17
+ libavutil/opt.h API.
18
+
19
+ sws_flags
20
+ Set the scaler flags. This is also used to set the scaling
21
+ algorithm. Only a single algorithm should be selected. Default
22
+ value is bicubic.
23
+
24
+ It accepts the following values:
25
+
26
+ fast_bilinear
27
+ Select fast bilinear scaling algorithm.
28
+
29
+ bilinear
30
+ Select bilinear scaling algorithm.
31
+
32
+ bicubic
33
+ Select bicubic scaling algorithm.
34
+
35
+ experimental
36
+ Select experimental scaling algorithm.
37
+
38
+ neighbor
39
+ Select nearest neighbor rescaling algorithm.
40
+
41
+ area
42
+ Select averaging area rescaling algorithm.
43
+
44
+ bicublin
45
+ Select bicubic scaling algorithm for the luma component,
46
+ bilinear for chroma components.
47
+
48
+ gauss
49
+ Select Gaussian rescaling algorithm.
50
+
51
+ sinc
52
+ Select sinc rescaling algorithm.
53
+
54
+ lanczos
55
+ Select Lanczos rescaling algorithm. The default width (alpha)
56
+ is 3 and can be changed by setting "param0".
57
+
58
+ spline
59
+ Select natural bicubic spline rescaling algorithm.
60
+
61
+ print_info
62
+ Enable printing/debug logging.
63
+
64
+ accurate_rnd
65
+ Enable accurate rounding.
66
+
67
+ full_chroma_int
68
+ Enable full chroma interpolation.
69
+
70
+ full_chroma_inp
71
+ Select full chroma input.
72
+
73
+ bitexact
74
+ Enable bitexact output.
75
+
76
+ srcw (API only)
77
+ Set source width.
78
+
79
+ srch (API only)
80
+ Set source height.
81
+
82
+ dstw (API only)
83
+ Set destination width.
84
+
85
+ dsth (API only)
86
+ Set destination height.
87
+
88
+ src_format (API only)
89
+ Set source pixel format (must be expressed as an integer).
90
+
91
+ dst_format (API only)
92
+ Set destination pixel format (must be expressed as an integer).
93
+
94
+ src_range (boolean)
95
+ If value is set to 1, indicates source is full range. Default value
96
+ is 0, which indicates source is limited range.
97
+
98
+ dst_range (boolean)
99
+ If value is set to 1, enable full range for destination. Default
100
+ value is 0, which enables limited range.
101
+
102
+ param0, param1
103
+ Set scaling algorithm parameters. The specified values are specific
104
+ of some scaling algorithms and ignored by others. The specified
105
+ values are floating point number values.
106
+
107
+ sws_dither
108
+ Set the dithering algorithm. Accepts one of the following values.
109
+ Default value is auto.
110
+
111
+ auto
112
+ automatic choice
113
+
114
+ none
115
+ no dithering
116
+
117
+ bayer
118
+ bayer dither
119
+
120
+ ed error diffusion dither
121
+
122
+ a_dither
123
+ arithmetic dither, based using addition
124
+
125
+ x_dither
126
+ arithmetic dither, based using xor (more random/less apparent
127
+ patterning that a_dither).
128
+
129
+ alphablend
130
+ Set the alpha blending to use when the input has alpha but the
131
+ output does not. Default value is none.
132
+
133
+ uniform_color
134
+ Blend onto a uniform background color
135
+
136
+ checkerboard
137
+ Blend onto a checkerboard
138
+
139
+ none
140
+ No blending
141
+
142
+ SEE ALSO
143
+ ffmpeg(1), ffplay(1), ffprobe(1), libswscale(3)
144
+
145
+ AUTHORS
146
+ The FFmpeg developers.
147
+
148
+ For details about the authorship, see the Git history of the project
149
+ (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
150
+ the FFmpeg source directory, or browsing the online repository at
151
+ <http://source.ffmpeg.org>.
152
+
153
+ Maintainers for the specific components are listed in the file
154
+ MAINTAINERS in the source code tree.
155
+
156
+ FFMPEG-SCALER(1)
ffmpeg-4.4-amd64-static/manpages/ffmpeg-utils.txt ADDED
@@ -0,0 +1,1229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FFMPEG-UTILS(1) FFMPEG-UTILS(1)
2
+
3
+ NAME
4
+ ffmpeg-utils - FFmpeg utilities
5
+
6
+ DESCRIPTION
7
+ This document describes some generic features and utilities provided by
8
+ the libavutil library.
9
+
10
+ SYNTAX
11
+ This section documents the syntax and formats employed by the FFmpeg
12
+ libraries and tools.
13
+
14
+ Quoting and escaping
15
+ FFmpeg adopts the following quoting and escaping mechanism, unless
16
+ explicitly specified. The following rules are applied:
17
+
18
+ o ' and \ are special characters (respectively used for quoting and
19
+ escaping). In addition to them, there might be other special
20
+ characters depending on the specific syntax where the escaping and
21
+ quoting are employed.
22
+
23
+ o A special character is escaped by prefixing it with a \.
24
+
25
+ o All characters enclosed between '' are included literally in the
26
+ parsed string. The quote character ' itself cannot be quoted, so
27
+ you may need to close the quote and escape it.
28
+
29
+ o Leading and trailing whitespaces, unless escaped or quoted, are
30
+ removed from the parsed string.
31
+
32
+ Note that you may need to add a second level of escaping when using the
33
+ command line or a script, which depends on the syntax of the adopted
34
+ shell language.
35
+
36
+ The function "av_get_token" defined in libavutil/avstring.h can be used
37
+ to parse a token quoted or escaped according to the rules defined
38
+ above.
39
+
40
+ The tool tools/ffescape in the FFmpeg source tree can be used to
41
+ automatically quote or escape a string in a script.
42
+
43
+ Examples
44
+
45
+ o Escape the string "Crime d'Amour" containing the "'" special
46
+ character:
47
+
48
+ Crime d\'Amour
49
+
50
+ o The string above contains a quote, so the "'" needs to be escaped
51
+ when quoting it:
52
+
53
+ 'Crime d'\''Amour'
54
+
55
+ o Include leading or trailing whitespaces using quoting:
56
+
57
+ ' this string starts and ends with whitespaces '
58
+
59
+ o Escaping and quoting can be mixed together:
60
+
61
+ ' The string '\'string\'' is a string '
62
+
63
+ o To include a literal \ you can use either escaping or quoting:
64
+
65
+ 'c:\foo' can be written as c:\\foo
66
+
67
+ Date
68
+ The accepted syntax is:
69
+
70
+ [(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
71
+ now
72
+
73
+ If the value is "now" it takes the current time.
74
+
75
+ Time is local time unless Z is appended, in which case it is
76
+ interpreted as UTC. If the year-month-day part is not specified it
77
+ takes the current year-month-day.
78
+
79
+ Time duration
80
+ There are two accepted syntaxes for expressing time duration.
81
+
82
+ [-][<HH>:]<MM>:<SS>[.<m>...]
83
+
84
+ HH expresses the number of hours, MM the number of minutes for a
85
+ maximum of 2 digits, and SS the number of seconds for a maximum of 2
86
+ digits. The m at the end expresses decimal value for SS.
87
+
88
+ or
89
+
90
+ [-]<S>+[.<m>...][s|ms|us]
91
+
92
+ S expresses the number of seconds, with the optional decimal part m.
93
+ The optional literal suffixes s, ms or us indicate to interpret the
94
+ value as seconds, milliseconds or microseconds, respectively.
95
+
96
+ In both expressions, the optional - indicates negative duration.
97
+
98
+ Examples
99
+
100
+ The following examples are all valid time duration:
101
+
102
+ 55 55 seconds
103
+
104
+ 0.2 0.2 seconds
105
+
106
+ 200ms
107
+ 200 milliseconds, that's 0.2s
108
+
109
+ 200000us
110
+ 200000 microseconds, that's 0.2s
111
+
112
+ 12:03:45
113
+ 12 hours, 03 minutes and 45 seconds
114
+
115
+ 23.189
116
+ 23.189 seconds
117
+
118
+ Video size
119
+ Specify the size of the sourced video, it may be a string of the form
120
+ widthxheight, or the name of a size abbreviation.
121
+
122
+ The following abbreviations are recognized:
123
+
124
+ ntsc
125
+ 720x480
126
+
127
+ pal 720x576
128
+
129
+ qntsc
130
+ 352x240
131
+
132
+ qpal
133
+ 352x288
134
+
135
+ sntsc
136
+ 640x480
137
+
138
+ spal
139
+ 768x576
140
+
141
+ film
142
+ 352x240
143
+
144
+ ntsc-film
145
+ 352x240
146
+
147
+ sqcif
148
+ 128x96
149
+
150
+ qcif
151
+ 176x144
152
+
153
+ cif 352x288
154
+
155
+ 4cif
156
+ 704x576
157
+
158
+ 16cif
159
+ 1408x1152
160
+
161
+ qqvga
162
+ 160x120
163
+
164
+ qvga
165
+ 320x240
166
+
167
+ vga 640x480
168
+
169
+ svga
170
+ 800x600
171
+
172
+ xga 1024x768
173
+
174
+ uxga
175
+ 1600x1200
176
+
177
+ qxga
178
+ 2048x1536
179
+
180
+ sxga
181
+ 1280x1024
182
+
183
+ qsxga
184
+ 2560x2048
185
+
186
+ hsxga
187
+ 5120x4096
188
+
189
+ wvga
190
+ 852x480
191
+
192
+ wxga
193
+ 1366x768
194
+
195
+ wsxga
196
+ 1600x1024
197
+
198
+ wuxga
199
+ 1920x1200
200
+
201
+ woxga
202
+ 2560x1600
203
+
204
+ wqsxga
205
+ 3200x2048
206
+
207
+ wquxga
208
+ 3840x2400
209
+
210
+ whsxga
211
+ 6400x4096
212
+
213
+ whuxga
214
+ 7680x4800
215
+
216
+ cga 320x200
217
+
218
+ ega 640x350
219
+
220
+ hd480
221
+ 852x480
222
+
223
+ hd720
224
+ 1280x720
225
+
226
+ hd1080
227
+ 1920x1080
228
+
229
+ 2k 2048x1080
230
+
231
+ 2kflat
232
+ 1998x1080
233
+
234
+ 2kscope
235
+ 2048x858
236
+
237
+ 4k 4096x2160
238
+
239
+ 4kflat
240
+ 3996x2160
241
+
242
+ 4kscope
243
+ 4096x1716
244
+
245
+ nhd 640x360
246
+
247
+ hqvga
248
+ 240x160
249
+
250
+ wqvga
251
+ 400x240
252
+
253
+ fwqvga
254
+ 432x240
255
+
256
+ hvga
257
+ 480x320
258
+
259
+ qhd 960x540
260
+
261
+ 2kdci
262
+ 2048x1080
263
+
264
+ 4kdci
265
+ 4096x2160
266
+
267
+ uhd2160
268
+ 3840x2160
269
+
270
+ uhd4320
271
+ 7680x4320
272
+
273
+ Video rate
274
+ Specify the frame rate of a video, expressed as the number of frames
275
+ generated per second. It has to be a string in the format
276
+ frame_rate_num/frame_rate_den, an integer number, a float number or a
277
+ valid video frame rate abbreviation.
278
+
279
+ The following abbreviations are recognized:
280
+
281
+ ntsc
282
+ 30000/1001
283
+
284
+ pal 25/1
285
+
286
+ qntsc
287
+ 30000/1001
288
+
289
+ qpal
290
+ 25/1
291
+
292
+ sntsc
293
+ 30000/1001
294
+
295
+ spal
296
+ 25/1
297
+
298
+ film
299
+ 24/1
300
+
301
+ ntsc-film
302
+ 24000/1001
303
+
304
+ Ratio
305
+ A ratio can be expressed as an expression, or in the form
306
+ numerator:denominator.
307
+
308
+ Note that a ratio with infinite (1/0) or negative value is considered
309
+ valid, so you should check on the returned value if you want to exclude
310
+ those values.
311
+
312
+ The undefined value can be expressed using the "0:0" string.
313
+
314
+ Color
315
+ It can be the name of a color as defined below (case insensitive match)
316
+ or a "[0x|#]RRGGBB[AA]" sequence, possibly followed by @ and a string
317
+ representing the alpha component.
318
+
319
+ The alpha component may be a string composed by "0x" followed by an
320
+ hexadecimal number or a decimal number between 0.0 and 1.0, which
321
+ represents the opacity value (0x00 or 0.0 means completely transparent,
322
+ 0xff or 1.0 completely opaque). If the alpha component is not specified
323
+ then 0xff is assumed.
324
+
325
+ The string random will result in a random color.
326
+
327
+ The following names of colors are recognized:
328
+
329
+ AliceBlue
330
+ 0xF0F8FF
331
+
332
+ AntiqueWhite
333
+ 0xFAEBD7
334
+
335
+ Aqua
336
+ 0x00FFFF
337
+
338
+ Aquamarine
339
+ 0x7FFFD4
340
+
341
+ Azure
342
+ 0xF0FFFF
343
+
344
+ Beige
345
+ 0xF5F5DC
346
+
347
+ Bisque
348
+ 0xFFE4C4
349
+
350
+ Black
351
+ 0x000000
352
+
353
+ BlanchedAlmond
354
+ 0xFFEBCD
355
+
356
+ Blue
357
+ 0x0000FF
358
+
359
+ BlueViolet
360
+ 0x8A2BE2
361
+
362
+ Brown
363
+ 0xA52A2A
364
+
365
+ BurlyWood
366
+ 0xDEB887
367
+
368
+ CadetBlue
369
+ 0x5F9EA0
370
+
371
+ Chartreuse
372
+ 0x7FFF00
373
+
374
+ Chocolate
375
+ 0xD2691E
376
+
377
+ Coral
378
+ 0xFF7F50
379
+
380
+ CornflowerBlue
381
+ 0x6495ED
382
+
383
+ Cornsilk
384
+ 0xFFF8DC
385
+
386
+ Crimson
387
+ 0xDC143C
388
+
389
+ Cyan
390
+ 0x00FFFF
391
+
392
+ DarkBlue
393
+ 0x00008B
394
+
395
+ DarkCyan
396
+ 0x008B8B
397
+
398
+ DarkGoldenRod
399
+ 0xB8860B
400
+
401
+ DarkGray
402
+ 0xA9A9A9
403
+
404
+ DarkGreen
405
+ 0x006400
406
+
407
+ DarkKhaki
408
+ 0xBDB76B
409
+
410
+ DarkMagenta
411
+ 0x8B008B
412
+
413
+ DarkOliveGreen
414
+ 0x556B2F
415
+
416
+ Darkorange
417
+ 0xFF8C00
418
+
419
+ DarkOrchid
420
+ 0x9932CC
421
+
422
+ DarkRed
423
+ 0x8B0000
424
+
425
+ DarkSalmon
426
+ 0xE9967A
427
+
428
+ DarkSeaGreen
429
+ 0x8FBC8F
430
+
431
+ DarkSlateBlue
432
+ 0x483D8B
433
+
434
+ DarkSlateGray
435
+ 0x2F4F4F
436
+
437
+ DarkTurquoise
438
+ 0x00CED1
439
+
440
+ DarkViolet
441
+ 0x9400D3
442
+
443
+ DeepPink
444
+ 0xFF1493
445
+
446
+ DeepSkyBlue
447
+ 0x00BFFF
448
+
449
+ DimGray
450
+ 0x696969
451
+
452
+ DodgerBlue
453
+ 0x1E90FF
454
+
455
+ FireBrick
456
+ 0xB22222
457
+
458
+ FloralWhite
459
+ 0xFFFAF0
460
+
461
+ ForestGreen
462
+ 0x228B22
463
+
464
+ Fuchsia
465
+ 0xFF00FF
466
+
467
+ Gainsboro
468
+ 0xDCDCDC
469
+
470
+ GhostWhite
471
+ 0xF8F8FF
472
+
473
+ Gold
474
+ 0xFFD700
475
+
476
+ GoldenRod
477
+ 0xDAA520
478
+
479
+ Gray
480
+ 0x808080
481
+
482
+ Green
483
+ 0x008000
484
+
485
+ GreenYellow
486
+ 0xADFF2F
487
+
488
+ HoneyDew
489
+ 0xF0FFF0
490
+
491
+ HotPink
492
+ 0xFF69B4
493
+
494
+ IndianRed
495
+ 0xCD5C5C
496
+
497
+ Indigo
498
+ 0x4B0082
499
+
500
+ Ivory
501
+ 0xFFFFF0
502
+
503
+ Khaki
504
+ 0xF0E68C
505
+
506
+ Lavender
507
+ 0xE6E6FA
508
+
509
+ LavenderBlush
510
+ 0xFFF0F5
511
+
512
+ LawnGreen
513
+ 0x7CFC00
514
+
515
+ LemonChiffon
516
+ 0xFFFACD
517
+
518
+ LightBlue
519
+ 0xADD8E6
520
+
521
+ LightCoral
522
+ 0xF08080
523
+
524
+ LightCyan
525
+ 0xE0FFFF
526
+
527
+ LightGoldenRodYellow
528
+ 0xFAFAD2
529
+
530
+ LightGreen
531
+ 0x90EE90
532
+
533
+ LightGrey
534
+ 0xD3D3D3
535
+
536
+ LightPink
537
+ 0xFFB6C1
538
+
539
+ LightSalmon
540
+ 0xFFA07A
541
+
542
+ LightSeaGreen
543
+ 0x20B2AA
544
+
545
+ LightSkyBlue
546
+ 0x87CEFA
547
+
548
+ LightSlateGray
549
+ 0x778899
550
+
551
+ LightSteelBlue
552
+ 0xB0C4DE
553
+
554
+ LightYellow
555
+ 0xFFFFE0
556
+
557
+ Lime
558
+ 0x00FF00
559
+
560
+ LimeGreen
561
+ 0x32CD32
562
+
563
+ Linen
564
+ 0xFAF0E6
565
+
566
+ Magenta
567
+ 0xFF00FF
568
+
569
+ Maroon
570
+ 0x800000
571
+
572
+ MediumAquaMarine
573
+ 0x66CDAA
574
+
575
+ MediumBlue
576
+ 0x0000CD
577
+
578
+ MediumOrchid
579
+ 0xBA55D3
580
+
581
+ MediumPurple
582
+ 0x9370D8
583
+
584
+ MediumSeaGreen
585
+ 0x3CB371
586
+
587
+ MediumSlateBlue
588
+ 0x7B68EE
589
+
590
+ MediumSpringGreen
591
+ 0x00FA9A
592
+
593
+ MediumTurquoise
594
+ 0x48D1CC
595
+
596
+ MediumVioletRed
597
+ 0xC71585
598
+
599
+ MidnightBlue
600
+ 0x191970
601
+
602
+ MintCream
603
+ 0xF5FFFA
604
+
605
+ MistyRose
606
+ 0xFFE4E1
607
+
608
+ Moccasin
609
+ 0xFFE4B5
610
+
611
+ NavajoWhite
612
+ 0xFFDEAD
613
+
614
+ Navy
615
+ 0x000080
616
+
617
+ OldLace
618
+ 0xFDF5E6
619
+
620
+ Olive
621
+ 0x808000
622
+
623
+ OliveDrab
624
+ 0x6B8E23
625
+
626
+ Orange
627
+ 0xFFA500
628
+
629
+ OrangeRed
630
+ 0xFF4500
631
+
632
+ Orchid
633
+ 0xDA70D6
634
+
635
+ PaleGoldenRod
636
+ 0xEEE8AA
637
+
638
+ PaleGreen
639
+ 0x98FB98
640
+
641
+ PaleTurquoise
642
+ 0xAFEEEE
643
+
644
+ PaleVioletRed
645
+ 0xD87093
646
+
647
+ PapayaWhip
648
+ 0xFFEFD5
649
+
650
+ PeachPuff
651
+ 0xFFDAB9
652
+
653
+ Peru
654
+ 0xCD853F
655
+
656
+ Pink
657
+ 0xFFC0CB
658
+
659
+ Plum
660
+ 0xDDA0DD
661
+
662
+ PowderBlue
663
+ 0xB0E0E6
664
+
665
+ Purple
666
+ 0x800080
667
+
668
+ Red 0xFF0000
669
+
670
+ RosyBrown
671
+ 0xBC8F8F
672
+
673
+ RoyalBlue
674
+ 0x4169E1
675
+
676
+ SaddleBrown
677
+ 0x8B4513
678
+
679
+ Salmon
680
+ 0xFA8072
681
+
682
+ SandyBrown
683
+ 0xF4A460
684
+
685
+ SeaGreen
686
+ 0x2E8B57
687
+
688
+ SeaShell
689
+ 0xFFF5EE
690
+
691
+ Sienna
692
+ 0xA0522D
693
+
694
+ Silver
695
+ 0xC0C0C0
696
+
697
+ SkyBlue
698
+ 0x87CEEB
699
+
700
+ SlateBlue
701
+ 0x6A5ACD
702
+
703
+ SlateGray
704
+ 0x708090
705
+
706
+ Snow
707
+ 0xFFFAFA
708
+
709
+ SpringGreen
710
+ 0x00FF7F
711
+
712
+ SteelBlue
713
+ 0x4682B4
714
+
715
+ Tan 0xD2B48C
716
+
717
+ Teal
718
+ 0x008080
719
+
720
+ Thistle
721
+ 0xD8BFD8
722
+
723
+ Tomato
724
+ 0xFF6347
725
+
726
+ Turquoise
727
+ 0x40E0D0
728
+
729
+ Violet
730
+ 0xEE82EE
731
+
732
+ Wheat
733
+ 0xF5DEB3
734
+
735
+ White
736
+ 0xFFFFFF
737
+
738
+ WhiteSmoke
739
+ 0xF5F5F5
740
+
741
+ Yellow
742
+ 0xFFFF00
743
+
744
+ YellowGreen
745
+ 0x9ACD32
746
+
747
+ Channel Layout
748
+ A channel layout specifies the spatial disposition of the channels in a
749
+ multi-channel audio stream. To specify a channel layout, FFmpeg makes
750
+ use of a special syntax.
751
+
752
+ Individual channels are identified by an id, as given by the table
753
+ below:
754
+
755
+ FL front left
756
+
757
+ FR front right
758
+
759
+ FC front center
760
+
761
+ LFE low frequency
762
+
763
+ BL back left
764
+
765
+ BR back right
766
+
767
+ FLC front left-of-center
768
+
769
+ FRC front right-of-center
770
+
771
+ BC back center
772
+
773
+ SL side left
774
+
775
+ SR side right
776
+
777
+ TC top center
778
+
779
+ TFL top front left
780
+
781
+ TFC top front center
782
+
783
+ TFR top front right
784
+
785
+ TBL top back left
786
+
787
+ TBC top back center
788
+
789
+ TBR top back right
790
+
791
+ DL downmix left
792
+
793
+ DR downmix right
794
+
795
+ WL wide left
796
+
797
+ WR wide right
798
+
799
+ SDL surround direct left
800
+
801
+ SDR surround direct right
802
+
803
+ LFE2
804
+ low frequency 2
805
+
806
+ Standard channel layout compositions can be specified by using the
807
+ following identifiers:
808
+
809
+ mono
810
+ FC
811
+
812
+ stereo
813
+ FL+FR
814
+
815
+ 2.1 FL+FR+LFE
816
+
817
+ 3.0 FL+FR+FC
818
+
819
+ 3.0(back)
820
+ FL+FR+BC
821
+
822
+ 4.0 FL+FR+FC+BC
823
+
824
+ quad
825
+ FL+FR+BL+BR
826
+
827
+ quad(side)
828
+ FL+FR+SL+SR
829
+
830
+ 3.1 FL+FR+FC+LFE
831
+
832
+ 5.0 FL+FR+FC+BL+BR
833
+
834
+ 5.0(side)
835
+ FL+FR+FC+SL+SR
836
+
837
+ 4.1 FL+FR+FC+LFE+BC
838
+
839
+ 5.1 FL+FR+FC+LFE+BL+BR
840
+
841
+ 5.1(side)
842
+ FL+FR+FC+LFE+SL+SR
843
+
844
+ 6.0 FL+FR+FC+BC+SL+SR
845
+
846
+ 6.0(front)
847
+ FL+FR+FLC+FRC+SL+SR
848
+
849
+ hexagonal
850
+ FL+FR+FC+BL+BR+BC
851
+
852
+ 6.1 FL+FR+FC+LFE+BC+SL+SR
853
+
854
+ 6.1 FL+FR+FC+LFE+BL+BR+BC
855
+
856
+ 6.1(front)
857
+ FL+FR+LFE+FLC+FRC+SL+SR
858
+
859
+ 7.0 FL+FR+FC+BL+BR+SL+SR
860
+
861
+ 7.0(front)
862
+ FL+FR+FC+FLC+FRC+SL+SR
863
+
864
+ 7.1 FL+FR+FC+LFE+BL+BR+SL+SR
865
+
866
+ 7.1(wide)
867
+ FL+FR+FC+LFE+BL+BR+FLC+FRC
868
+
869
+ 7.1(wide-side)
870
+ FL+FR+FC+LFE+FLC+FRC+SL+SR
871
+
872
+ octagonal
873
+ FL+FR+FC+BL+BR+BC+SL+SR
874
+
875
+ hexadecagonal
876
+ FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
877
+
878
+ downmix
879
+ DL+DR
880
+
881
+ A custom channel layout can be specified as a sequence of terms,
882
+ separated by '+' or '|'. Each term can be:
883
+
884
+ o the name of a standard channel layout (e.g. mono, stereo, 4.0,
885
+ quad, 5.0, etc.)
886
+
887
+ o the name of a single channel (e.g. FL, FR, FC, LFE, etc.)
888
+
889
+ o a number of channels, in decimal, followed by 'c', yielding the
890
+ default channel layout for that number of channels (see the
891
+ function "av_get_default_channel_layout"). Note that not all
892
+ channel counts have a default layout.
893
+
894
+ o a number of channels, in decimal, followed by 'C', yielding an
895
+ unknown channel layout with the specified number of channels. Note
896
+ that not all channel layout specification strings support unknown
897
+ channel layouts.
898
+
899
+ o a channel layout mask, in hexadecimal starting with "0x" (see the
900
+ "AV_CH_*" macros in libavutil/channel_layout.h.
901
+
902
+ Before libavutil version 53 the trailing character "c" to specify a
903
+ number of channels was optional, but now it is required, while a
904
+ channel layout mask can also be specified as a decimal number (if and
905
+ only if not followed by "c" or "C").
906
+
907
+ See also the function "av_get_channel_layout" defined in
908
+ libavutil/channel_layout.h.
909
+
910
+ EXPRESSION EVALUATION
911
+ When evaluating an arithmetic expression, FFmpeg uses an internal
912
+ formula evaluator, implemented through the libavutil/eval.h interface.
913
+
914
+ An expression may contain unary, binary operators, constants, and
915
+ functions.
916
+
917
+ Two expressions expr1 and expr2 can be combined to form another
918
+ expression "expr1;expr2". expr1 and expr2 are evaluated in turn, and
919
+ the new expression evaluates to the value of expr2.
920
+
921
+ The following binary operators are available: "+", "-", "*", "/", "^".
922
+
923
+ The following unary operators are available: "+", "-".
924
+
925
+ The following functions are available:
926
+
927
+ abs(x)
928
+ Compute absolute value of x.
929
+
930
+ acos(x)
931
+ Compute arccosine of x.
932
+
933
+ asin(x)
934
+ Compute arcsine of x.
935
+
936
+ atan(x)
937
+ Compute arctangent of x.
938
+
939
+ atan2(x, y)
940
+ Compute principal value of the arc tangent of y/x.
941
+
942
+ between(x, min, max)
943
+ Return 1 if x is greater than or equal to min and lesser than or
944
+ equal to max, 0 otherwise.
945
+
946
+ bitand(x, y)
947
+ bitor(x, y)
948
+ Compute bitwise and/or operation on x and y.
949
+
950
+ The results of the evaluation of x and y are converted to integers
951
+ before executing the bitwise operation.
952
+
953
+ Note that both the conversion to integer and the conversion back to
954
+ floating point can lose precision. Beware of unexpected results for
955
+ large numbers (usually 2^53 and larger).
956
+
957
+ ceil(expr)
958
+ Round the value of expression expr upwards to the nearest integer.
959
+ For example, "ceil(1.5)" is "2.0".
960
+
961
+ clip(x, min, max)
962
+ Return the value of x clipped between min and max.
963
+
964
+ cos(x)
965
+ Compute cosine of x.
966
+
967
+ cosh(x)
968
+ Compute hyperbolic cosine of x.
969
+
970
+ eq(x, y)
971
+ Return 1 if x and y are equivalent, 0 otherwise.
972
+
973
+ exp(x)
974
+ Compute exponential of x (with base "e", the Euler's number).
975
+
976
+ floor(expr)
977
+ Round the value of expression expr downwards to the nearest
978
+ integer. For example, "floor(-1.5)" is "-2.0".
979
+
980
+ gauss(x)
981
+ Compute Gauss function of x, corresponding to "exp(-x*x/2) /
982
+ sqrt(2*PI)".
983
+
984
+ gcd(x, y)
985
+ Return the greatest common divisor of x and y. If both x and y are
986
+ 0 or either or both are less than zero then behavior is undefined.
987
+
988
+ gt(x, y)
989
+ Return 1 if x is greater than y, 0 otherwise.
990
+
991
+ gte(x, y)
992
+ Return 1 if x is greater than or equal to y, 0 otherwise.
993
+
994
+ hypot(x, y)
995
+ This function is similar to the C function with the same name; it
996
+ returns "sqrt(x*x + y*y)", the length of the hypotenuse of a right
997
+ triangle with sides of length x and y, or the distance of the point
998
+ (x, y) from the origin.
999
+
1000
+ if(x, y)
1001
+ Evaluate x, and if the result is non-zero return the result of the
1002
+ evaluation of y, return 0 otherwise.
1003
+
1004
+ if(x, y, z)
1005
+ Evaluate x, and if the result is non-zero return the evaluation
1006
+ result of y, otherwise the evaluation result of z.
1007
+
1008
+ ifnot(x, y)
1009
+ Evaluate x, and if the result is zero return the result of the
1010
+ evaluation of y, return 0 otherwise.
1011
+
1012
+ ifnot(x, y, z)
1013
+ Evaluate x, and if the result is zero return the evaluation result
1014
+ of y, otherwise the evaluation result of z.
1015
+
1016
+ isinf(x)
1017
+ Return 1.0 if x is +/-INFINITY, 0.0 otherwise.
1018
+
1019
+ isnan(x)
1020
+ Return 1.0 if x is NAN, 0.0 otherwise.
1021
+
1022
+ ld(var)
1023
+ Load the value of the internal variable with number var, which was
1024
+ previously stored with st(var, expr). The function returns the
1025
+ loaded value.
1026
+
1027
+ lerp(x, y, z)
1028
+ Return linear interpolation between x and y by amount of z.
1029
+
1030
+ log(x)
1031
+ Compute natural logarithm of x.
1032
+
1033
+ lt(x, y)
1034
+ Return 1 if x is lesser than y, 0 otherwise.
1035
+
1036
+ lte(x, y)
1037
+ Return 1 if x is lesser than or equal to y, 0 otherwise.
1038
+
1039
+ max(x, y)
1040
+ Return the maximum between x and y.
1041
+
1042
+ min(x, y)
1043
+ Return the minimum between x and y.
1044
+
1045
+ mod(x, y)
1046
+ Compute the remainder of division of x by y.
1047
+
1048
+ not(expr)
1049
+ Return 1.0 if expr is zero, 0.0 otherwise.
1050
+
1051
+ pow(x, y)
1052
+ Compute the power of x elevated y, it is equivalent to "(x)^(y)".
1053
+
1054
+ print(t)
1055
+ print(t, l)
1056
+ Print the value of expression t with loglevel l. If l is not
1057
+ specified then a default log level is used. Returns the value of
1058
+ the expression printed.
1059
+
1060
+ Prints t with loglevel l
1061
+
1062
+ random(x)
1063
+ Return a pseudo random value between 0.0 and 1.0. x is the index of
1064
+ the internal variable which will be used to save the seed/state.
1065
+
1066
+ root(expr, max)
1067
+ Find an input value for which the function represented by expr with
1068
+ argument ld(0) is 0 in the interval 0..max.
1069
+
1070
+ The expression in expr must denote a continuous function or the
1071
+ result is undefined.
1072
+
1073
+ ld(0) is used to represent the function input value, which means
1074
+ that the given expression will be evaluated multiple times with
1075
+ various input values that the expression can access through ld(0).
1076
+ When the expression evaluates to 0 then the corresponding input
1077
+ value will be returned.
1078
+
1079
+ round(expr)
1080
+ Round the value of expression expr to the nearest integer. For
1081
+ example, "round(1.5)" is "2.0".
1082
+
1083
+ sgn(x)
1084
+ Compute sign of x.
1085
+
1086
+ sin(x)
1087
+ Compute sine of x.
1088
+
1089
+ sinh(x)
1090
+ Compute hyperbolic sine of x.
1091
+
1092
+ sqrt(expr)
1093
+ Compute the square root of expr. This is equivalent to "(expr)^.5".
1094
+
1095
+ squish(x)
1096
+ Compute expression "1/(1 + exp(4*x))".
1097
+
1098
+ st(var, expr)
1099
+ Store the value of the expression expr in an internal variable. var
1100
+ specifies the number of the variable where to store the value, and
1101
+ it is a value ranging from 0 to 9. The function returns the value
1102
+ stored in the internal variable. Note, Variables are currently not
1103
+ shared between expressions.
1104
+
1105
+ tan(x)
1106
+ Compute tangent of x.
1107
+
1108
+ tanh(x)
1109
+ Compute hyperbolic tangent of x.
1110
+
1111
+ taylor(expr, x)
1112
+ taylor(expr, x, id)
1113
+ Evaluate a Taylor series at x, given an expression representing the
1114
+ "ld(id)"-th derivative of a function at 0.
1115
+
1116
+ When the series does not converge the result is undefined.
1117
+
1118
+ ld(id) is used to represent the derivative order in expr, which
1119
+ means that the given expression will be evaluated multiple times
1120
+ with various input values that the expression can access through
1121
+ "ld(id)". If id is not specified then 0 is assumed.
1122
+
1123
+ Note, when you have the derivatives at y instead of 0,
1124
+ "taylor(expr, x-y)" can be used.
1125
+
1126
+ time(0)
1127
+ Return the current (wallclock) time in seconds.
1128
+
1129
+ trunc(expr)
1130
+ Round the value of expression expr towards zero to the nearest
1131
+ integer. For example, "trunc(-1.5)" is "-1.0".
1132
+
1133
+ while(cond, expr)
1134
+ Evaluate expression expr while the expression cond is non-zero, and
1135
+ returns the value of the last expr evaluation, or NAN if cond was
1136
+ always false.
1137
+
1138
+ The following constants are available:
1139
+
1140
+ PI area of the unit disc, approximately 3.14
1141
+
1142
+ E exp(1) (Euler's number), approximately 2.718
1143
+
1144
+ PHI golden ratio (1+sqrt(5))/2, approximately 1.618
1145
+
1146
+ Assuming that an expression is considered "true" if it has a non-zero
1147
+ value, note that:
1148
+
1149
+ "*" works like AND
1150
+
1151
+ "+" works like OR
1152
+
1153
+ For example the construct:
1154
+
1155
+ if (A AND B) then C
1156
+
1157
+ is equivalent to:
1158
+
1159
+ if(A*B, C)
1160
+
1161
+ In your C code, you can extend the list of unary and binary functions,
1162
+ and define recognized constants, so that they are available for your
1163
+ expressions.
1164
+
1165
+ The evaluator also recognizes the International System unit prefixes.
1166
+ If 'i' is appended after the prefix, binary prefixes are used, which
1167
+ are based on powers of 1024 instead of powers of 1000. The 'B' postfix
1168
+ multiplies the value by 8, and can be appended after a unit prefix or
1169
+ used alone. This allows using for example 'KB', 'MiB', 'G' and 'B' as
1170
+ number postfix.
1171
+
1172
+ The list of available International System prefixes follows, with
1173
+ indication of the corresponding powers of 10 and of 2.
1174
+
1175
+ y 10^-24 / 2^-80
1176
+
1177
+ z 10^-21 / 2^-70
1178
+
1179
+ a 10^-18 / 2^-60
1180
+
1181
+ f 10^-15 / 2^-50
1182
+
1183
+ p 10^-12 / 2^-40
1184
+
1185
+ n 10^-9 / 2^-30
1186
+
1187
+ u 10^-6 / 2^-20
1188
+
1189
+ m 10^-3 / 2^-10
1190
+
1191
+ c 10^-2
1192
+
1193
+ d 10^-1
1194
+
1195
+ h 10^2
1196
+
1197
+ k 10^3 / 2^10
1198
+
1199
+ K 10^3 / 2^10
1200
+
1201
+ M 10^6 / 2^20
1202
+
1203
+ G 10^9 / 2^30
1204
+
1205
+ T 10^12 / 2^40
1206
+
1207
+ P 10^15 / 2^40
1208
+
1209
+ E 10^18 / 2^50
1210
+
1211
+ Z 10^21 / 2^60
1212
+
1213
+ Y 10^24 / 2^70
1214
+
1215
+ SEE ALSO
1216
+ ffmpeg(1), ffplay(1), ffprobe(1), libavutil(3)
1217
+
1218
+ AUTHORS
1219
+ The FFmpeg developers.
1220
+
1221
+ For details about the authorship, see the Git history of the project
1222
+ (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
1223
+ the FFmpeg source directory, or browsing the online repository at
1224
+ <http://source.ffmpeg.org>.
1225
+
1226
+ Maintainers for the specific components are listed in the file
1227
+ MAINTAINERS in the source code tree.
1228
+
1229
+ FFMPEG-UTILS(1)
ffmpeg-4.4-amd64-static/manpages/ffmpeg.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-4.4-amd64-static/manpages/ffprobe.txt ADDED
@@ -0,0 +1,954 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FFPROBE(1) FFPROBE(1)
2
+
3
+ NAME
4
+ ffprobe - ffprobe media prober
5
+
6
+ SYNOPSIS
7
+ ffprobe [options] [input_url]
8
+
9
+ DESCRIPTION
10
+ ffprobe gathers information from multimedia streams and prints it in
11
+ human- and machine-readable fashion.
12
+
13
+ For example it can be used to check the format of the container used by
14
+ a multimedia stream and the format and type of each media stream
15
+ contained in it.
16
+
17
+ If a url is specified in input, ffprobe will try to open and probe the
18
+ url content. If the url cannot be opened or recognized as a multimedia
19
+ file, a positive exit code is returned.
20
+
21
+ ffprobe may be employed both as a standalone application or in
22
+ combination with a textual filter, which may perform more sophisticated
23
+ processing, e.g. statistical processing or plotting.
24
+
25
+ Options are used to list some of the formats supported by ffprobe or
26
+ for specifying which information to display, and for setting how
27
+ ffprobe will show it.
28
+
29
+ ffprobe output is designed to be easily parsable by a textual filter,
30
+ and consists of one or more sections of a form defined by the selected
31
+ writer, which is specified by the print_format option.
32
+
33
+ Sections may contain other nested sections, and are identified by a
34
+ name (which may be shared by other sections), and an unique name. See
35
+ the output of sections.
36
+
37
+ Metadata tags stored in the container or in the streams are recognized
38
+ and printed in the corresponding "FORMAT", "STREAM" or "PROGRAM_STREAM"
39
+ section.
40
+
41
+ OPTIONS
42
+ All the numerical options, if not specified otherwise, accept a string
43
+ representing a number as input, which may be followed by one of the SI
44
+ unit prefixes, for example: 'K', 'M', or 'G'.
45
+
46
+ If 'i' is appended to the SI unit prefix, the complete prefix will be
47
+ interpreted as a unit prefix for binary multiples, which are based on
48
+ powers of 1024 instead of powers of 1000. Appending 'B' to the SI unit
49
+ prefix multiplies the value by 8. This allows using, for example: 'KB',
50
+ 'MiB', 'G' and 'B' as number suffixes.
51
+
52
+ Options which do not take arguments are boolean options, and set the
53
+ corresponding value to true. They can be set to false by prefixing the
54
+ option name with "no". For example using "-nofoo" will set the boolean
55
+ option with name "foo" to false.
56
+
57
+ Stream specifiers
58
+ Some options are applied per-stream, e.g. bitrate or codec. Stream
59
+ specifiers are used to precisely specify which stream(s) a given option
60
+ belongs to.
61
+
62
+ A stream specifier is a string generally appended to the option name
63
+ and separated from it by a colon. E.g. "-codec:a:1 ac3" contains the
64
+ "a:1" stream specifier, which matches the second audio stream.
65
+ Therefore, it would select the ac3 codec for the second audio stream.
66
+
67
+ A stream specifier can match several streams, so that the option is
68
+ applied to all of them. E.g. the stream specifier in "-b:a 128k"
69
+ matches all audio streams.
70
+
71
+ An empty stream specifier matches all streams. For example, "-codec
72
+ copy" or "-codec: copy" would copy all the streams without reencoding.
73
+
74
+ Possible forms of stream specifiers are:
75
+
76
+ stream_index
77
+ Matches the stream with this index. E.g. "-threads:1 4" would set
78
+ the thread count for the second stream to 4. If stream_index is
79
+ used as an additional stream specifier (see below), then it selects
80
+ stream number stream_index from the matching streams. Stream
81
+ numbering is based on the order of the streams as detected by
82
+ libavformat except when a program ID is also specified. In this
83
+ case it is based on the ordering of the streams in the program.
84
+
85
+ stream_type[:additional_stream_specifier]
86
+ stream_type is one of following: 'v' or 'V' for video, 'a' for
87
+ audio, 's' for subtitle, 'd' for data, and 't' for attachments. 'v'
88
+ matches all video streams, 'V' only matches video streams which are
89
+ not attached pictures, video thumbnails or cover arts. If
90
+ additional_stream_specifier is used, then it matches streams which
91
+ both have this type and match the additional_stream_specifier.
92
+ Otherwise, it matches all streams of the specified type.
93
+
94
+ p:program_id[:additional_stream_specifier]
95
+ Matches streams which are in the program with the id program_id. If
96
+ additional_stream_specifier is used, then it matches streams which
97
+ both are part of the program and match the
98
+ additional_stream_specifier.
99
+
100
+ #stream_id or i:stream_id
101
+ Match the stream by stream id (e.g. PID in MPEG-TS container).
102
+
103
+ m:key[:value]
104
+ Matches streams with the metadata tag key having the specified
105
+ value. If value is not given, matches streams that contain the
106
+ given tag with any value.
107
+
108
+ u Matches streams with usable configuration, the codec must be
109
+ defined and the essential information such as video dimension or
110
+ audio sample rate must be present.
111
+
112
+ Note that in ffmpeg, matching by metadata will only work properly
113
+ for input files.
114
+
115
+ Generic options
116
+ These options are shared amongst the ff* tools.
117
+
118
+ -L Show license.
119
+
120
+ -h, -?, -help, --help [arg]
121
+ Show help. An optional parameter may be specified to print help
122
+ about a specific item. If no argument is specified, only basic (non
123
+ advanced) tool options are shown.
124
+
125
+ Possible values of arg are:
126
+
127
+ long
128
+ Print advanced tool options in addition to the basic tool
129
+ options.
130
+
131
+ full
132
+ Print complete list of options, including shared and private
133
+ options for encoders, decoders, demuxers, muxers, filters, etc.
134
+
135
+ decoder=decoder_name
136
+ Print detailed information about the decoder named
137
+ decoder_name. Use the -decoders option to get a list of all
138
+ decoders.
139
+
140
+ encoder=encoder_name
141
+ Print detailed information about the encoder named
142
+ encoder_name. Use the -encoders option to get a list of all
143
+ encoders.
144
+
145
+ demuxer=demuxer_name
146
+ Print detailed information about the demuxer named
147
+ demuxer_name. Use the -formats option to get a list of all
148
+ demuxers and muxers.
149
+
150
+ muxer=muxer_name
151
+ Print detailed information about the muxer named muxer_name.
152
+ Use the -formats option to get a list of all muxers and
153
+ demuxers.
154
+
155
+ filter=filter_name
156
+ Print detailed information about the filter named filter_name.
157
+ Use the -filters option to get a list of all filters.
158
+
159
+ bsf=bitstream_filter_name
160
+ Print detailed information about the bitstream filter named
161
+ bitstream_filter_name. Use the -bsfs option to get a list of
162
+ all bitstream filters.
163
+
164
+ protocol=protocol_name
165
+ Print detailed information about the protocol named
166
+ protocol_name. Use the -protocols option to get a list of all
167
+ protocols.
168
+
169
+ -version
170
+ Show version.
171
+
172
+ -buildconf
173
+ Show the build configuration, one option per line.
174
+
175
+ -formats
176
+ Show available formats (including devices).
177
+
178
+ -demuxers
179
+ Show available demuxers.
180
+
181
+ -muxers
182
+ Show available muxers.
183
+
184
+ -devices
185
+ Show available devices.
186
+
187
+ -codecs
188
+ Show all codecs known to libavcodec.
189
+
190
+ Note that the term 'codec' is used throughout this documentation as
191
+ a shortcut for what is more correctly called a media bitstream
192
+ format.
193
+
194
+ -decoders
195
+ Show available decoders.
196
+
197
+ -encoders
198
+ Show all available encoders.
199
+
200
+ -bsfs
201
+ Show available bitstream filters.
202
+
203
+ -protocols
204
+ Show available protocols.
205
+
206
+ -filters
207
+ Show available libavfilter filters.
208
+
209
+ -pix_fmts
210
+ Show available pixel formats.
211
+
212
+ -sample_fmts
213
+ Show available sample formats.
214
+
215
+ -layouts
216
+ Show channel names and standard channel layouts.
217
+
218
+ -colors
219
+ Show recognized color names.
220
+
221
+ -sources device[,opt1=val1[,opt2=val2]...]
222
+ Show autodetected sources of the input device. Some devices may
223
+ provide system-dependent source names that cannot be autodetected.
224
+ The returned list cannot be assumed to be always complete.
225
+
226
+ ffmpeg -sources pulse,server=192.168.0.4
227
+
228
+ -sinks device[,opt1=val1[,opt2=val2]...]
229
+ Show autodetected sinks of the output device. Some devices may
230
+ provide system-dependent sink names that cannot be autodetected.
231
+ The returned list cannot be assumed to be always complete.
232
+
233
+ ffmpeg -sinks pulse,server=192.168.0.4
234
+
235
+ -loglevel [flags+]loglevel | -v [flags+]loglevel
236
+ Set logging level and flags used by the library.
237
+
238
+ The optional flags prefix can consist of the following values:
239
+
240
+ repeat
241
+ Indicates that repeated log output should not be compressed to
242
+ the first line and the "Last message repeated n times" line
243
+ will be omitted.
244
+
245
+ level
246
+ Indicates that log output should add a "[level]" prefix to each
247
+ message line. This can be used as an alternative to log
248
+ coloring, e.g. when dumping the log to file.
249
+
250
+ Flags can also be used alone by adding a '+'/'-' prefix to
251
+ set/reset a single flag without affecting other flags or changing
252
+ loglevel. When setting both flags and loglevel, a '+' separator is
253
+ expected between the last flags value and before loglevel.
254
+
255
+ loglevel is a string or a number containing one of the following
256
+ values:
257
+
258
+ quiet, -8
259
+ Show nothing at all; be silent.
260
+
261
+ panic, 0
262
+ Only show fatal errors which could lead the process to crash,
263
+ such as an assertion failure. This is not currently used for
264
+ anything.
265
+
266
+ fatal, 8
267
+ Only show fatal errors. These are errors after which the
268
+ process absolutely cannot continue.
269
+
270
+ error, 16
271
+ Show all errors, including ones which can be recovered from.
272
+
273
+ warning, 24
274
+ Show all warnings and errors. Any message related to possibly
275
+ incorrect or unexpected events will be shown.
276
+
277
+ info, 32
278
+ Show informative messages during processing. This is in
279
+ addition to warnings and errors. This is the default value.
280
+
281
+ verbose, 40
282
+ Same as "info", except more verbose.
283
+
284
+ debug, 48
285
+ Show everything, including debugging information.
286
+
287
+ trace, 56
288
+
289
+ For example to enable repeated log output, add the "level" prefix,
290
+ and set loglevel to "verbose":
291
+
292
+ ffmpeg -loglevel repeat+level+verbose -i input output
293
+
294
+ Another example that enables repeated log output without affecting
295
+ current state of "level" prefix flag or loglevel:
296
+
297
+ ffmpeg [...] -loglevel +repeat
298
+
299
+ By default the program logs to stderr. If coloring is supported by
300
+ the terminal, colors are used to mark errors and warnings. Log
301
+ coloring can be disabled setting the environment variable
302
+ AV_LOG_FORCE_NOCOLOR, or can be forced setting the environment
303
+ variable AV_LOG_FORCE_COLOR.
304
+
305
+ -report
306
+ Dump full command line and log output to a file named
307
+ "program-YYYYMMDD-HHMMSS.log" in the current directory. This file
308
+ can be useful for bug reports. It also implies "-loglevel debug".
309
+
310
+ Setting the environment variable FFREPORT to any value has the same
311
+ effect. If the value is a ':'-separated key=value sequence, these
312
+ options will affect the report; option values must be escaped if
313
+ they contain special characters or the options delimiter ':' (see
314
+ the ``Quoting and escaping'' section in the ffmpeg-utils manual).
315
+
316
+ The following options are recognized:
317
+
318
+ file
319
+ set the file name to use for the report; %p is expanded to the
320
+ name of the program, %t is expanded to a timestamp, "%%" is
321
+ expanded to a plain "%"
322
+
323
+ level
324
+ set the log verbosity level using a numerical value (see
325
+ "-loglevel").
326
+
327
+ For example, to output a report to a file named ffreport.log using
328
+ a log level of 32 (alias for log level "info"):
329
+
330
+ FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
331
+
332
+ Errors in parsing the environment variable are not fatal, and will
333
+ not appear in the report.
334
+
335
+ -hide_banner
336
+ Suppress printing banner.
337
+
338
+ All FFmpeg tools will normally show a copyright notice, build
339
+ options and library versions. This option can be used to suppress
340
+ printing this information.
341
+
342
+ -cpuflags flags (global)
343
+ Allows setting and clearing cpu flags. This option is intended for
344
+ testing. Do not use it unless you know what you're doing.
345
+
346
+ ffmpeg -cpuflags -sse+mmx ...
347
+ ffmpeg -cpuflags mmx ...
348
+ ffmpeg -cpuflags 0 ...
349
+
350
+ Possible flags for this option are:
351
+
352
+ x86
353
+ mmx
354
+ mmxext
355
+ sse
356
+ sse2
357
+ sse2slow
358
+ sse3
359
+ sse3slow
360
+ ssse3
361
+ atom
362
+ sse4.1
363
+ sse4.2
364
+ avx
365
+ avx2
366
+ xop
367
+ fma3
368
+ fma4
369
+ 3dnow
370
+ 3dnowext
371
+ bmi1
372
+ bmi2
373
+ cmov
374
+ ARM
375
+ armv5te
376
+ armv6
377
+ armv6t2
378
+ vfp
379
+ vfpv3
380
+ neon
381
+ setend
382
+ AArch64
383
+ armv8
384
+ vfp
385
+ neon
386
+ PowerPC
387
+ altivec
388
+ Specific Processors
389
+ pentium2
390
+ pentium3
391
+ pentium4
392
+ k6
393
+ k62
394
+ athlon
395
+ athlonxp
396
+ k8
397
+ -max_alloc bytes
398
+ Set the maximum size limit for allocating a block on the heap by
399
+ ffmpeg's family of malloc functions. Exercise extreme caution when
400
+ using this option. Don't use if you do not understand the full
401
+ consequence of doing so. Default is INT_MAX.
402
+
403
+ AVOptions
404
+ These options are provided directly by the libavformat, libavdevice and
405
+ libavcodec libraries. To see the list of available AVOptions, use the
406
+ -help option. They are separated into two categories:
407
+
408
+ generic
409
+ These options can be set for any container, codec or device.
410
+ Generic options are listed under AVFormatContext options for
411
+ containers/devices and under AVCodecContext options for codecs.
412
+
413
+ private
414
+ These options are specific to the given container, device or codec.
415
+ Private options are listed under their corresponding
416
+ containers/devices/codecs.
417
+
418
+ For example to write an ID3v2.3 header instead of a default ID3v2.4 to
419
+ an MP3 file, use the id3v2_version private option of the MP3 muxer:
420
+
421
+ ffmpeg -i input.flac -id3v2_version 3 out.mp3
422
+
423
+ All codec AVOptions are per-stream, and thus a stream specifier should
424
+ be attached to them:
425
+
426
+ ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
427
+
428
+ In the above example, a multichannel audio stream is mapped twice for
429
+ output. The first instance is encoded with codec ac3 and bitrate 640k.
430
+ The second instance is downmixed to 2 channels and encoded with codec
431
+ aac. A bitrate of 128k is specified for it using absolute index of the
432
+ output stream.
433
+
434
+ Note: the -nooption syntax cannot be used for boolean AVOptions, use
435
+ -option 0/-option 1.
436
+
437
+ Note: the old undocumented way of specifying per-stream AVOptions by
438
+ prepending v/a/s to the options name is now obsolete and will be
439
+ removed soon.
440
+
441
+ Main options
442
+ -f format
443
+ Force format to use.
444
+
445
+ -unit
446
+ Show the unit of the displayed values.
447
+
448
+ -prefix
449
+ Use SI prefixes for the displayed values. Unless the
450
+ "-byte_binary_prefix" option is used all the prefixes are decimal.
451
+
452
+ -byte_binary_prefix
453
+ Force the use of binary prefixes for byte values.
454
+
455
+ -sexagesimal
456
+ Use sexagesimal format HH:MM:SS.MICROSECONDS for time values.
457
+
458
+ -pretty
459
+ Prettify the format of the displayed values, it corresponds to the
460
+ options "-unit -prefix -byte_binary_prefix -sexagesimal".
461
+
462
+ -of, -print_format writer_name[=writer_options]
463
+ Set the output printing format.
464
+
465
+ writer_name specifies the name of the writer, and writer_options
466
+ specifies the options to be passed to the writer.
467
+
468
+ For example for printing the output in JSON format, specify:
469
+
470
+ -print_format json
471
+
472
+ For more details on the available output printing formats, see the
473
+ Writers section below.
474
+
475
+ -sections
476
+ Print sections structure and section information, and exit. The
477
+ output is not meant to be parsed by a machine.
478
+
479
+ -select_streams stream_specifier
480
+ Select only the streams specified by stream_specifier. This option
481
+ affects only the options related to streams (e.g. "show_streams",
482
+ "show_packets", etc.).
483
+
484
+ For example to show only audio streams, you can use the command:
485
+
486
+ ffprobe -show_streams -select_streams a INPUT
487
+
488
+ To show only video packets belonging to the video stream with index
489
+ 1:
490
+
491
+ ffprobe -show_packets -select_streams v:1 INPUT
492
+
493
+ -show_data
494
+ Show payload data, as a hexadecimal and ASCII dump. Coupled with
495
+ -show_packets, it will dump the packets' data. Coupled with
496
+ -show_streams, it will dump the codec extradata.
497
+
498
+ The dump is printed as the "data" field. It may contain newlines.
499
+
500
+ -show_data_hash algorithm
501
+ Show a hash of payload data, for packets with -show_packets and for
502
+ codec extradata with -show_streams.
503
+
504
+ -show_error
505
+ Show information about the error found when trying to probe the
506
+ input.
507
+
508
+ The error information is printed within a section with name
509
+ "ERROR".
510
+
511
+ -show_format
512
+ Show information about the container format of the input multimedia
513
+ stream.
514
+
515
+ All the container format information is printed within a section
516
+ with name "FORMAT".
517
+
518
+ -show_format_entry name
519
+ Like -show_format, but only prints the specified entry of the
520
+ container format information, rather than all. This option may be
521
+ given more than once, then all specified entries will be shown.
522
+
523
+ This option is deprecated, use "show_entries" instead.
524
+
525
+ -show_entries section_entries
526
+ Set list of entries to show.
527
+
528
+ Entries are specified according to the following syntax.
529
+ section_entries contains a list of section entries separated by
530
+ ":". Each section entry is composed by a section name (or unique
531
+ name), optionally followed by a list of entries local to that
532
+ section, separated by ",".
533
+
534
+ If section name is specified but is followed by no "=", all entries
535
+ are printed to output, together with all the contained sections.
536
+ Otherwise only the entries specified in the local section entries
537
+ list are printed. In particular, if "=" is specified but the list
538
+ of local entries is empty, then no entries will be shown for that
539
+ section.
540
+
541
+ Note that the order of specification of the local section entries
542
+ is not honored in the output, and the usual display order will be
543
+ retained.
544
+
545
+ The formal syntax is given by:
546
+
547
+ <LOCAL_SECTION_ENTRIES> ::= <SECTION_ENTRY_NAME>[,<LOCAL_SECTION_ENTRIES>]
548
+ <SECTION_ENTRY> ::= <SECTION_NAME>[=[<LOCAL_SECTION_ENTRIES>]]
549
+ <SECTION_ENTRIES> ::= <SECTION_ENTRY>[:<SECTION_ENTRIES>]
550
+
551
+ For example, to show only the index and type of each stream, and
552
+ the PTS time, duration time, and stream index of the packets, you
553
+ can specify the argument:
554
+
555
+ packet=pts_time,duration_time,stream_index : stream=index,codec_type
556
+
557
+ To show all the entries in the section "format", but only the codec
558
+ type in the section "stream", specify the argument:
559
+
560
+ format : stream=codec_type
561
+
562
+ To show all the tags in the stream and format sections:
563
+
564
+ stream_tags : format_tags
565
+
566
+ To show only the "title" tag (if available) in the stream sections:
567
+
568
+ stream_tags=title
569
+
570
+ -show_packets
571
+ Show information about each packet contained in the input
572
+ multimedia stream.
573
+
574
+ The information for each single packet is printed within a
575
+ dedicated section with name "PACKET".
576
+
577
+ -show_frames
578
+ Show information about each frame and subtitle contained in the
579
+ input multimedia stream.
580
+
581
+ The information for each single frame is printed within a dedicated
582
+ section with name "FRAME" or "SUBTITLE".
583
+
584
+ -show_log loglevel
585
+ Show logging information from the decoder about each frame
586
+ according to the value set in loglevel, (see "-loglevel"). This
587
+ option requires "-show_frames".
588
+
589
+ The information for each log message is printed within a dedicated
590
+ section with name "LOG".
591
+
592
+ -show_streams
593
+ Show information about each media stream contained in the input
594
+ multimedia stream.
595
+
596
+ Each media stream information is printed within a dedicated section
597
+ with name "STREAM".
598
+
599
+ -show_programs
600
+ Show information about programs and their streams contained in the
601
+ input multimedia stream.
602
+
603
+ Each media stream information is printed within a dedicated section
604
+ with name "PROGRAM_STREAM".
605
+
606
+ -show_chapters
607
+ Show information about chapters stored in the format.
608
+
609
+ Each chapter is printed within a dedicated section with name
610
+ "CHAPTER".
611
+
612
+ -count_frames
613
+ Count the number of frames per stream and report it in the
614
+ corresponding stream section.
615
+
616
+ -count_packets
617
+ Count the number of packets per stream and report it in the
618
+ corresponding stream section.
619
+
620
+ -read_intervals read_intervals
621
+ Read only the specified intervals. read_intervals must be a
622
+ sequence of interval specifications separated by ",". ffprobe will
623
+ seek to the interval starting point, and will continue reading from
624
+ that.
625
+
626
+ Each interval is specified by two optional parts, separated by "%".
627
+
628
+ The first part specifies the interval start position. It is
629
+ interpreted as an absolute position, or as a relative offset from
630
+ the current position if it is preceded by the "+" character. If
631
+ this first part is not specified, no seeking will be performed when
632
+ reading this interval.
633
+
634
+ The second part specifies the interval end position. It is
635
+ interpreted as an absolute position, or as a relative offset from
636
+ the current position if it is preceded by the "+" character. If the
637
+ offset specification starts with "#", it is interpreted as the
638
+ number of packets to read (not including the flushing packets) from
639
+ the interval start. If no second part is specified, the program
640
+ will read until the end of the input.
641
+
642
+ Note that seeking is not accurate, thus the actual interval start
643
+ point may be different from the specified position. Also, when an
644
+ interval duration is specified, the absolute end time will be
645
+ computed by adding the duration to the interval start point found
646
+ by seeking the file, rather than to the specified start value.
647
+
648
+ The formal syntax is given by:
649
+
650
+ <INTERVAL> ::= [<START>|+<START_OFFSET>][%[<END>|+<END_OFFSET>]]
651
+ <INTERVALS> ::= <INTERVAL>[,<INTERVALS>]
652
+
653
+ A few examples follow.
654
+
655
+ o Seek to time 10, read packets until 20 seconds after the found
656
+ seek point, then seek to position "01:30" (1 minute and thirty
657
+ seconds) and read packets until position "01:45".
658
+
659
+ 10%+20,01:30%01:45
660
+
661
+ o Read only 42 packets after seeking to position "01:23":
662
+
663
+ 01:23%+#42
664
+
665
+ o Read only the first 20 seconds from the start:
666
+
667
+ %+20
668
+
669
+ o Read from the start until position "02:30":
670
+
671
+ %02:30
672
+
673
+ -show_private_data, -private
674
+ Show private data, that is data depending on the format of the
675
+ particular shown element. This option is enabled by default, but
676
+ you may need to disable it for specific uses, for example when
677
+ creating XSD-compliant XML output.
678
+
679
+ -show_program_version
680
+ Show information related to program version.
681
+
682
+ Version information is printed within a section with name
683
+ "PROGRAM_VERSION".
684
+
685
+ -show_library_versions
686
+ Show information related to library versions.
687
+
688
+ Version information for each library is printed within a section
689
+ with name "LIBRARY_VERSION".
690
+
691
+ -show_versions
692
+ Show information related to program and library versions. This is
693
+ the equivalent of setting both -show_program_version and
694
+ -show_library_versions options.
695
+
696
+ -show_pixel_formats
697
+ Show information about all pixel formats supported by FFmpeg.
698
+
699
+ Pixel format information for each format is printed within a
700
+ section with name "PIXEL_FORMAT".
701
+
702
+ -bitexact
703
+ Force bitexact output, useful to produce output which is not
704
+ dependent on the specific build.
705
+
706
+ -i input_url
707
+ Read input_url.
708
+
709
+ WRITERS
710
+ A writer defines the output format adopted by ffprobe, and will be used
711
+ for printing all the parts of the output.
712
+
713
+ A writer may accept one or more arguments, which specify the options to
714
+ adopt. The options are specified as a list of key=value pairs,
715
+ separated by ":".
716
+
717
+ All writers support the following options:
718
+
719
+ string_validation, sv
720
+ Set string validation mode.
721
+
722
+ The following values are accepted.
723
+
724
+ fail
725
+ The writer will fail immediately in case an invalid string
726
+ (UTF-8) sequence or code point is found in the input. This is
727
+ especially useful to validate input metadata.
728
+
729
+ ignore
730
+ Any validation error will be ignored. This will result in
731
+ possibly broken output, especially with the json or xml writer.
732
+
733
+ replace
734
+ The writer will substitute invalid UTF-8 sequences or code
735
+ points with the string specified with the
736
+ string_validation_replacement.
737
+
738
+ Default value is replace.
739
+
740
+ string_validation_replacement, svr
741
+ Set replacement string to use in case string_validation is set to
742
+ replace.
743
+
744
+ In case the option is not specified, the writer will assume the
745
+ empty string, that is it will remove the invalid sequences from the
746
+ input strings.
747
+
748
+ A description of the currently available writers follows.
749
+
750
+ default
751
+ Default format.
752
+
753
+ Print each section in the form:
754
+
755
+ [SECTION]
756
+ key1=val1
757
+ ...
758
+ keyN=valN
759
+ [/SECTION]
760
+
761
+ Metadata tags are printed as a line in the corresponding FORMAT, STREAM
762
+ or PROGRAM_STREAM section, and are prefixed by the string "TAG:".
763
+
764
+ A description of the accepted options follows.
765
+
766
+ nokey, nk
767
+ If set to 1 specify not to print the key of each field. Default
768
+ value is 0.
769
+
770
+ noprint_wrappers, nw
771
+ If set to 1 specify not to print the section header and footer.
772
+ Default value is 0.
773
+
774
+ compact, csv
775
+ Compact and CSV format.
776
+
777
+ The "csv" writer is equivalent to "compact", but supports different
778
+ defaults.
779
+
780
+ Each section is printed on a single line. If no option is specified,
781
+ the output has the form:
782
+
783
+ section|key1=val1| ... |keyN=valN
784
+
785
+ Metadata tags are printed in the corresponding "format" or "stream"
786
+ section. A metadata tag key, if printed, is prefixed by the string
787
+ "tag:".
788
+
789
+ The description of the accepted options follows.
790
+
791
+ item_sep, s
792
+ Specify the character to use for separating fields in the output
793
+ line. It must be a single printable character, it is "|" by
794
+ default ("," for the "csv" writer).
795
+
796
+ nokey, nk
797
+ If set to 1 specify not to print the key of each field. Its default
798
+ value is 0 (1 for the "csv" writer).
799
+
800
+ escape, e
801
+ Set the escape mode to use, default to "c" ("csv" for the "csv"
802
+ writer).
803
+
804
+ It can assume one of the following values:
805
+
806
+ c Perform C-like escaping. Strings containing a newline (\n),
807
+ carriage return (\r), a tab (\t), a form feed (\f), the
808
+ escaping character (\) or the item separator character SEP are
809
+ escaped using C-like fashioned escaping, so that a newline is
810
+ converted to the sequence \n, a carriage return to \r, \ to \\
811
+ and the separator SEP is converted to \SEP.
812
+
813
+ csv Perform CSV-like escaping, as described in RFC4180. Strings
814
+ containing a newline (\n), a carriage return (\r), a double
815
+ quote ("), or SEP are enclosed in double-quotes.
816
+
817
+ none
818
+ Perform no escaping.
819
+
820
+ print_section, p
821
+ Print the section name at the beginning of each line if the value
822
+ is 1, disable it with value set to 0. Default value is 1.
823
+
824
+ flat
825
+ Flat format.
826
+
827
+ A free-form output where each line contains an explicit key=value, such
828
+ as "streams.stream.3.tags.foo=bar". The output is shell escaped, so it
829
+ can be directly embedded in sh scripts as long as the separator
830
+ character is an alphanumeric character or an underscore (see sep_char
831
+ option).
832
+
833
+ The description of the accepted options follows.
834
+
835
+ sep_char, s
836
+ Separator character used to separate the chapter, the section name,
837
+ IDs and potential tags in the printed field key.
838
+
839
+ Default value is ..
840
+
841
+ hierarchical, h
842
+ Specify if the section name specification should be hierarchical.
843
+ If set to 1, and if there is more than one section in the current
844
+ chapter, the section name will be prefixed by the name of the
845
+ chapter. A value of 0 will disable this behavior.
846
+
847
+ Default value is 1.
848
+
849
+ ini
850
+ INI format output.
851
+
852
+ Print output in an INI based format.
853
+
854
+ The following conventions are adopted:
855
+
856
+ o all key and values are UTF-8
857
+
858
+ o . is the subgroup separator
859
+
860
+ o newline, \t, \f, \b and the following characters are escaped
861
+
862
+ o \ is the escape character
863
+
864
+ o # is the comment indicator
865
+
866
+ o = is the key/value separator
867
+
868
+ o : is not used but usually parsed as key/value separator
869
+
870
+ This writer accepts options as a list of key=value pairs, separated by
871
+ :.
872
+
873
+ The description of the accepted options follows.
874
+
875
+ hierarchical, h
876
+ Specify if the section name specification should be hierarchical.
877
+ If set to 1, and if there is more than one section in the current
878
+ chapter, the section name will be prefixed by the name of the
879
+ chapter. A value of 0 will disable this behavior.
880
+
881
+ Default value is 1.
882
+
883
+ json
884
+ JSON based format.
885
+
886
+ Each section is printed using JSON notation.
887
+
888
+ The description of the accepted options follows.
889
+
890
+ compact, c
891
+ If set to 1 enable compact output, that is each section will be
892
+ printed on a single line. Default value is 0.
893
+
894
+ For more information about JSON, see <http://www.json.org/>.
895
+
896
+ xml
897
+ XML based format.
898
+
899
+ The XML output is described in the XML schema description file
900
+ ffprobe.xsd installed in the FFmpeg datadir.
901
+
902
+ An updated version of the schema can be retrieved at the url
903
+ <http://www.ffmpeg.org/schema/ffprobe.xsd>, which redirects to the
904
+ latest schema committed into the FFmpeg development source code tree.
905
+
906
+ Note that the output issued will be compliant to the ffprobe.xsd schema
907
+ only when no special global output options (unit, prefix,
908
+ byte_binary_prefix, sexagesimal etc.) are specified.
909
+
910
+ The description of the accepted options follows.
911
+
912
+ fully_qualified, q
913
+ If set to 1 specify if the output should be fully qualified.
914
+ Default value is 0. This is required for generating an XML file
915
+ which can be validated through an XSD file.
916
+
917
+ xsd_strict, x
918
+ If set to 1 perform more checks for ensuring that the output is XSD
919
+ compliant. Default value is 0. This option automatically sets
920
+ fully_qualified to 1.
921
+
922
+ For more information about the XML format, see
923
+ <https://www.w3.org/XML/>.
924
+
925
+ TIMECODE
926
+ ffprobe supports Timecode extraction:
927
+
928
+ o MPEG1/2 timecode is extracted from the GOP, and is available in the
929
+ video stream details (-show_streams, see timecode).
930
+
931
+ o MOV timecode is extracted from tmcd track, so is available in the
932
+ tmcd stream metadata (-show_streams, see TAG:timecode).
933
+
934
+ o DV, GXF and AVI timecodes are available in format metadata
935
+ (-show_format, see TAG:timecode).
936
+
937
+ SEE ALSO
938
+ ffprobe-all(1), ffmpeg(1), ffplay(1), ffmpeg-utils(1),
939
+ ffmpeg-scaler(1), ffmpeg-resampler(1), ffmpeg-codecs(1),
940
+ ffmpeg-bitstream-filters(1), ffmpeg-formats(1), ffmpeg-devices(1),
941
+ ffmpeg-protocols(1), ffmpeg-filters(1)
942
+
943
+ AUTHORS
944
+ The FFmpeg developers.
945
+
946
+ For details about the authorship, see the Git history of the project
947
+ (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
948
+ the FFmpeg source directory, or browsing the online repository at
949
+ <http://source.ffmpeg.org>.
950
+
951
+ Maintainers for the specific components are listed in the file
952
+ MAINTAINERS in the source code tree.
953
+
954
+ FFPROBE(1)
ffmpeg-4.4-amd64-static/model/000-PLEASE-README.TXT ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ The vmaf filter expects this directory of models to be preset at /usr/local/share/model
2
+
3
+ If you wish to use this filter, run "sudo cp -r model /usr/local/share/" from the directory
4
+ containing the static binaries. If not, you can ignore this and do nothing.
ffmpeg-4.4-amd64-static/model/other_models/model_V8a.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:047ff7bfd0b51bdd51c35a6623bebe07c7b925a537ca219c8efd2be80370d683
3
+ size 4715
ffmpeg-4.4-amd64-static/model/other_models/nflx_v1.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a69e3b12406ba1439e07d4918a32de41909936619c0a258269463d779c2dab53
3
+ size 705
ffmpeg-4.4-amd64-static/model/other_models/nflx_v1.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0d98da19846a7b9f820d5588370a1bff702f3f4857959258238babcfdf0a52b0
3
+ size 4940
ffmpeg-4.4-amd64-static/model/other_models/nflx_vmaff_rf_v1.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:013c46b7d0ac4ece0d91525f80e37569d8b8d351ed98c2f518cef52cf37d577b
3
+ size 385886
ffmpeg-4.4-amd64-static/model/other_models/nflx_vmaff_rf_v2.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b34534f10d8444c6025704225596e0afc2c8943f3115fc5443e4bb4f86c07ca8
3
+ size 192552
ffmpeg-4.4-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:de7c9c04a207e662e4257b82bc524708f1efabcc1964e8d06ebdc440b8cf3d04
3
+ size 788
ffmpeg-4.4-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:369d490de3c966186aad6eba0aad904cbf84b2c85933502d6cf1351bf72b7300
3
+ size 15701
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv1.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:de7c9c04a207e662e4257b82bc524708f1efabcc1964e8d06ebdc440b8cf3d04
3
+ size 788
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv1.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:369d490de3c966186aad6eba0aad904cbf84b2c85933502d6cf1351bf72b7300
3
+ size 15701
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv2.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0430132da296b6696eb996eaebe21c227bbd614645df5a8e5c124c4de231025f
3
+ size 1105
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv2.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:408f374472a5dbd88103ea79909f05e6710deea27900517b33cbad3c061e20b4
3
+ size 25331
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bd3d00d8916b08ed300d57c524e409b7ecc09c2bc57b4265a8ce849d7a471129
3
+ size 1013
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:85f930c5602904823d42e83a2be9ab45a67b1e6dca2be8cb1ffa9014bdde32e5
3
+ size 22118
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3a.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:df48f07628921ae552b7b12b25705e36020b70eb4efb8730233c8ed1fb247204
3
+ size 1015
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv3a.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:22a33f5f47f871ffd3c2352122c7b43fa1e0580593974355e3facd2cca040e02
3
+ size 22250
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv4.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:92f3eb338f49f4bb3363c54688a50c54bf7b717a09f633022bac0d83b8a2c962
3
+ size 1014
ffmpeg-4.4-amd64-static/model/other_models/nflxall_vmafv4.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:23aaacf213dcd8cf95f7ab37bbddf1d2a5bec217f89673d08f5d4c769ebce809
3
+ size 11707
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_libsvmnusvr_currentbest.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:637f3a630a376d3450c3ba50ba5b541f0315997042e11a40cb1dcf769c98cfd3
3
+ size 787
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_libsvmnusvr_currentbest.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:be5b081c755aec40d7d98d8b741cca4f71f16db944be23467d20ded915b6ec06
3
+ size 8064
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_norm_type_none.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2c122304ea88936ceced3545c0f1f0420428953aaa4bf86eceb54fc9b0415655
3
+ size 729
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_norm_type_none.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d49415be743e7a01265535cf00013487fac64f6bb46682baed9d100256910e75
3
+ size 11560
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv1.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:637f3a630a376d3450c3ba50ba5b541f0315997042e11a40cb1dcf769c98cfd3
3
+ size 787
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv1.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:be5b081c755aec40d7d98d8b741cca4f71f16db944be23467d20ded915b6ec06
3
+ size 8064
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv2.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e4edf91e70bd0088b0bb2d1c09c6974e9ebd2541e6039c354a7a1cbc8099910d
3
+ size 1104
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv2.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6ffc283d0d003eb0b79fea65cd9decfa8e2425e86dc4c2dd7625194fba1216d8
3
+ size 13949
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv3.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1b6c781e6f5dc0a1b7debe50825caa83bb9a72fc4263df93d7ff646886b3492f
3
+ size 1012
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv3.pkl.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:23a1b945898009571a9d6d6f22b8842197c244062896fd423b88f90850aaf117
3
+ size 11658
ffmpeg-4.4-amd64-static/model/other_models/nflxtrain_vmafv3a.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8b78477f3d569f526ef97fede71f9ce0e4943dfb36bbe11a61e9ba942a1e22f9
3
+ size 1011