kevinwang676 commited on
Commit
aff0286
·
verified ·
1 Parent(s): bc6dcc6

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 +3 -0
  2. .gitignore +10 -0
  3. LICENSE +21 -0
  4. README.md +286 -13
  5. Untitled.ipynb +93 -0
  6. assets/BBOX_SHIFT.md +26 -0
  7. assets/demo/man/man.png +3 -0
  8. assets/demo/monalisa/monalisa.png +0 -0
  9. assets/demo/musk/musk.png +0 -0
  10. assets/demo/sit/sit.jpeg +0 -0
  11. assets/demo/sun1/sun.png +0 -0
  12. assets/demo/sun2/sun.png +0 -0
  13. assets/demo/video1/video1.png +0 -0
  14. assets/demo/yongen/yongen.jpeg +0 -0
  15. assets/figs/landmark_ref.png +0 -0
  16. assets/figs/musetalk_arc.jpg +0 -0
  17. cmd.txt +1 -0
  18. configs/inference/my_conf.yaml +6 -0
  19. configs/inference/test.yaml +10 -0
  20. ffmpeg-6.1-amd64-static/GPLv3.txt +674 -0
  21. ffmpeg-6.1-amd64-static/ffmpeg +3 -0
  22. ffmpeg-6.1-amd64-static/ffprobe +3 -0
  23. ffmpeg-6.1-amd64-static/manpages/ffmpeg-all.txt +0 -0
  24. ffmpeg-6.1-amd64-static/manpages/ffmpeg-bitstream-filters.txt +863 -0
  25. ffmpeg-6.1-amd64-static/manpages/ffmpeg-codecs.txt +0 -0
  26. ffmpeg-6.1-amd64-static/manpages/ffmpeg-devices.txt +1904 -0
  27. ffmpeg-6.1-amd64-static/manpages/ffmpeg-filters.txt +0 -0
  28. ffmpeg-6.1-amd64-static/manpages/ffmpeg-formats.txt +0 -0
  29. ffmpeg-6.1-amd64-static/manpages/ffmpeg-protocols.txt +1960 -0
  30. ffmpeg-6.1-amd64-static/manpages/ffmpeg-resampler.txt +259 -0
  31. ffmpeg-6.1-amd64-static/manpages/ffmpeg-scaler.txt +156 -0
  32. ffmpeg-6.1-amd64-static/manpages/ffmpeg-utils.txt +1256 -0
  33. ffmpeg-6.1-amd64-static/manpages/ffmpeg.txt +0 -0
  34. ffmpeg-6.1-amd64-static/manpages/ffprobe.txt +976 -0
  35. ffmpeg-6.1-amd64-static/model/000-PLEASE-README.TXT +4 -0
  36. ffmpeg-6.1-amd64-static/model/other_models/model_V8a.model +3 -0
  37. ffmpeg-6.1-amd64-static/model/other_models/nflx_v1.json +42 -0
  38. ffmpeg-6.1-amd64-static/model/other_models/nflx_v1.pkl +3 -0
  39. ffmpeg-6.1-amd64-static/model/other_models/nflx_v1.pkl.model +3 -0
  40. ffmpeg-6.1-amd64-static/model/other_models/nflx_vmaff_rf_v1.pkl +3 -0
  41. ffmpeg-6.1-amd64-static/model/other_models/nflx_vmaff_rf_v2.pkl +3 -0
  42. ffmpeg-6.1-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl +3 -0
  43. ffmpeg-6.1-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl.model +3 -0
  44. ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv1.pkl +3 -0
  45. ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv1.pkl.model +3 -0
  46. ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv2.pkl +3 -0
  47. ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv2.pkl.model +3 -0
  48. ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv3.pkl +3 -0
  49. ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv3.pkl.model +3 -0
  50. ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv3a.pkl +3 -0
.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/demo/man/man.png filter=lfs diff=lfs merge=lfs -text
37
+ ffmpeg-6.1-amd64-static/ffmpeg filter=lfs diff=lfs merge=lfs -text
38
+ ffmpeg-6.1-amd64-static/ffprobe filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ .DS_Store
2
+ *.log
3
+ .idea/
4
+ .vscode/
5
+ *.pyc
6
+ .ipynb_checkpoints
7
+ models
8
+ results/
9
+ data/audio/*.wav
10
+ data/video/*.mp4
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2024 TMElyralab
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md CHANGED
@@ -1,13 +1,286 @@
1
- ---
2
- title: MuseTalk
3
- emoji: 🌖
4
- colorFrom: indigo
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 4.26.0
8
- app_file: app.py
9
- pinned: false
10
- license: mit
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # MuseTalk
2
+
3
+ MuseTalk: Real-Time High Quality Lip Synchronization with Latent Space Inpainting
4
+ </br>
5
+ Yue Zhang <sup>\*</sup>,
6
+ Minhao Liu<sup>\*</sup>,
7
+ Zhaokang Chen,
8
+ Bin Wu<sup>†</sup>,
9
+ Yingjie He,
10
+ Chao Zhan,
11
+ Wenjiang Zhou
12
+ (<sup>*</sup>Equal Contribution, <sup>†</sup>Corresponding Author, [email protected])
13
+
14
+ **[github](https://github.com/TMElyralab/MuseTalk)** **[huggingface](https://huggingface.co/TMElyralab/MuseTalk)** **Project (comming soon)** **Technical report (comming soon)**
15
+
16
+ We introduce `MuseTalk`, a **real-time high quality** lip-syncing model (30fps+ on an NVIDIA Tesla V100). MuseTalk can be applied with input videos, e.g., generated by [MuseV](https://github.com/TMElyralab/MuseV), as a complete virtual human solution.
17
+
18
+ # Overview
19
+ `MuseTalk` is a real-time high quality audio-driven lip-syncing model trained in the latent space of `ft-mse-vae`, which
20
+
21
+ 1. modifies an unseen face according to the input audio, with a size of face region of `256 x 256`.
22
+ 1. supports audio in various languages, such as Chinese, English, and Japanese.
23
+ 1. supports real-time inference with 30fps+ on an NVIDIA Tesla V100.
24
+ 1. supports modification of the center point of the face region proposes, which **SIGNIFICANTLY** affects generation results.
25
+ 1. checkpoint available trained on the HDTF dataset.
26
+ 1. training codes (comming soon).
27
+
28
+ # News
29
+ - [04/02/2024] Released MuseTalk project and pretrained models.
30
+
31
+ ## Model
32
+ ![Model Structure](assets/figs/musetalk_arc.jpg)
33
+ MuseTalk was trained in latent spaces, where the images were encoded by a freezed VAE. The audio was encoded by a freezed `whisper-tiny` model. The architecture of the generation network was borrowed from the UNet of the `stable-diffusion-v1-4`, where the audio embeddings were fused to the image embeddings by cross-attention.
34
+
35
+ ## Cases
36
+ ### MuseV + MuseTalk make human photos alive!
37
+ <table class="center">
38
+ <tr style="font-weight: bolder;text-align:center;">
39
+ <td width="33%">Image</td>
40
+ <td width="33%">MuseV</td>
41
+ <td width="33%">+MuseTalk</td>
42
+ </tr>
43
+ <tr>
44
+ <td>
45
+ <img src=assets/demo/musk/musk.png width="95%">
46
+ </td>
47
+ <td >
48
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/4a4bb2d1-9d14-4ca9-85c8-7f19c39f712e controls preload></video>
49
+ </td>
50
+ <td >
51
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/b2a879c2-e23a-4d39-911d-51f0343218e4 controls preload></video>
52
+ </td>
53
+ </tr>
54
+ <tr>
55
+ <td>
56
+ <img src=assets/demo/yongen/yongen.jpeg width="95%">
57
+ </td>
58
+ <td >
59
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/57ef9dee-a9fd-4dc8-839b-3fbbbf0ff3f4 controls preload></video>
60
+ </td>
61
+ <td >
62
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/94d8dcba-1bcd-4b54-9d1d-8b6fc53228f0 controls preload></video>
63
+ </td>
64
+ </tr>
65
+ <tr>
66
+ <td>
67
+ <img src=assets/demo/sit/sit.jpeg width="95%">
68
+ </td>
69
+ <td >
70
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/5fbab81b-d3f2-4c75-abb5-14c76e51769e controls preload></video>
71
+ </td>
72
+ <td >
73
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/f8100f4a-3df8-4151-8de2-291b09269f66 controls preload></video>
74
+ </td>
75
+ </tr>
76
+ <tr>
77
+ <td>
78
+ <img src=assets/demo/man/man.png width="95%">
79
+ </td>
80
+ <td >
81
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/a6e7d431-5643-4745-9868-8b423a454153 controls preload></video>
82
+ </td>
83
+ <td >
84
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/6ccf7bc7-cb48-42de-85bd-076d5ee8a623 controls preload></video>
85
+ </td>
86
+ </tr>
87
+ <tr>
88
+ <td>
89
+ <img src=assets/demo/monalisa/monalisa.png width="95%">
90
+ </td>
91
+ <td >
92
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/1568f604-a34f-4526-a13a-7d282aa2e773 controls preload></video>
93
+ </td>
94
+ <td >
95
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/a40784fc-a885-4c1f-9b7e-8f87b7caf4e0 controls preload></video>
96
+ </td>
97
+ </tr>
98
+ <tr>
99
+ <td>
100
+ <img src=assets/demo/sun1/sun.png width="95%">
101
+ </td>
102
+ <td >
103
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/37a3a666-7b90-4244-8d3a-058cb0e44107 controls preload></video>
104
+ </td>
105
+ <td >
106
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/172f4ff1-d432-45bd-a5a7-a07dec33a26b controls preload></video>
107
+ </td>
108
+ </tr>
109
+ <tr>
110
+ <td>
111
+ <img src=assets/demo/sun2/sun.png width="95%">
112
+ </td>
113
+ <td >
114
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/37a3a666-7b90-4244-8d3a-058cb0e44107 controls preload></video>
115
+ </td>
116
+ <td >
117
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/85a6873d-a028-4cce-af2b-6c59a1f2971d controls preload></video>
118
+ </td>
119
+ </tr>
120
+ </table >
121
+
122
+ * The character of the last two rows, `Xinying Sun`, is a supermodel KOL. You can follow her on [douyin](https://www.douyin.com/user/MS4wLjABAAAAWDThbMPN_6Xmm_JgXexbOii1K-httbu2APdG8DvDyM8).
123
+
124
+ ## Video dubbing
125
+ <table class="center">
126
+ <tr style="font-weight: bolder;text-align:center;">
127
+ <td width="70%">MuseTalk</td>
128
+ <td width="30%">Original videos</td>
129
+ </tr>
130
+ <tr>
131
+ <td>
132
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/4d7c5fa1-3550-4d52-8ed2-52f158150f24 controls preload></video>
133
+ </td>
134
+ <td>
135
+ <a href="//www.bilibili.com/video/BV1wT411b7HU">Link</a>
136
+ <href src=""></href>
137
+ </td>
138
+ </tr>
139
+ </table>
140
+
141
+ * For video dubbing, we applied a self-developed tool which can detect the talking person.
142
+
143
+ ## Some interesting videos!
144
+ <table class="center">
145
+ <tr style="font-weight: bolder;text-align:center;">
146
+ <td width="50%">Image</td>
147
+ <td width="50%">MuseV + MuseTalk</td>
148
+ </tr>
149
+ <tr>
150
+ <td>
151
+ <img src=assets/demo/video1/video1.png width="95%">
152
+ </td>
153
+ <td>
154
+ <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/1f02f9c6-8b98-475e-86b8-82ebee82fe0d controls preload></video>
155
+ </td>
156
+ </tr>
157
+ </table>
158
+
159
+ # TODO:
160
+ - [x] trained models and inference codes.
161
+ - [ ] technical report.
162
+ - [ ] training codes.
163
+ - [ ] online UI.
164
+ - [ ] a better model (may take longer).
165
+
166
+
167
+ # Getting Started
168
+ We provide a detailed tutorial about the installation and the basic usage of MuseTalk for new users:
169
+ ## Installation
170
+ To prepare the Python environment and install additional packages such as opencv, diffusers, mmcv, etc., please follow the steps below:
171
+ ### Build environment
172
+
173
+ We recommend a python version >=3.10 and cuda version =11.7. Then build environment as follows:
174
+
175
+ ```shell
176
+ pip install -r requirements.txt
177
+ ```
178
+
179
+ ### mmlab packages
180
+ ```bash
181
+ pip install --no-cache-dir -U openmim
182
+ mim install mmengine
183
+ mim install "mmcv>=2.0.1"
184
+ mim install "mmdet>=3.1.0"
185
+ mim install "mmpose>=1.1.0"
186
+ ```
187
+
188
+ ### Download ffmpeg-static
189
+ Download the ffmpeg-static and
190
+ ```
191
+ export FFMPEG_PATH=/path/to/ffmpeg
192
+ ```
193
+ for example:
194
+ ```
195
+ export FFMPEG_PATH=/musetalk/ffmpeg-4.4-amd64-static
196
+ ```
197
+ ### Download weights
198
+ You can download weights manually as follows:
199
+
200
+ 1. Download our trained [weights](https://huggingface.co/TMElyralab/MuseTalk).
201
+
202
+ 2. Download the weights of other components:
203
+ - [sd-vae-ft-mse](https://huggingface.co/stabilityai/sd-vae-ft-mse)
204
+ - [whisper](https://openaipublic.azureedge.net/main/whisper/models/65147644a518d12f04e32d6f3b26facc3f8dd46e5390956a9424a650c0ce22b9/tiny.pt)
205
+ - [dwpose](https://huggingface.co/yzd-v/DWPose/tree/main)
206
+ - [face-parse-bisent](https://github.com/zllrunning/face-parsing.PyTorch)
207
+ - [resnet18](https://download.pytorch.org/models/resnet18-5c106cde.pth)
208
+
209
+
210
+ Finally, these weights should be organized in `models` as follows:
211
+ ```
212
+ ./models/
213
+ ├── musetalk
214
+ │ └── musetalk.json
215
+ │ └── pytorch_model.bin
216
+ ├── dwpose
217
+ │ └── dw-ll_ucoco_384.pth
218
+ ├── face-parse-bisent
219
+ │ ├── 79999_iter.pth
220
+ │ └── resnet18-5c106cde.pth
221
+ ├── sd-vae-ft-mse
222
+ │ ├── config.json
223
+ │ └── diffusion_pytorch_model.bin
224
+ └── whisper
225
+ └── tiny.pt
226
+ ```
227
+ ## Quickstart
228
+
229
+ ### Inference
230
+ Here, we provide the inference script.
231
+ ```
232
+ python -m scripts.inference --inference_config configs/inference/test.yaml
233
+ ```
234
+ configs/inference/test.yaml is the path to the inference configuration file, including video_path and audio_path.
235
+ The video_path should be either a video file or a directory of images.
236
+
237
+ #### Use of bbox_shift to have adjustable results
238
+ :mag_right: We have found that upper-bound of the mask has an important impact on mouth openness. Thus, to control the mask region, we suggest using the `bbox_shift` parameter. Positive values (moving towards the lower half) increase mouth openness, while negative values (moving towards the upper half) decrease mouth openness.
239
+
240
+ You can start by running with the default configuration to obtain the adjustable value range, and then re-run the script within this range.
241
+
242
+ For example, in the case of `Xinying Sun`, after running the default configuration, it shows that the adjustable value rage is [-9, 9]. Then, to decrease the mouth openness, we set the value to be `-7`.
243
+ ```
244
+ python -m scripts.inference --inference_config configs/inference/test.yaml --bbox_shift -7
245
+ ```
246
+ :pushpin: More technical details can be found in [bbox_shift](assets/BBOX_SHIFT.md).
247
+
248
+ #### Combining MuseV and MuseTalk
249
+
250
+ As a complete solution to virtual human generation, you are suggested to first apply [MuseV](https://github.com/TMElyralab/MuseV) to generate a video (text-to-video, image-to-video or pose-to-video) by referring [this](https://github.com/TMElyralab/MuseV?tab=readme-ov-file#text2video). Then, you can use `MuseTalk` to generate a lip-sync video by referring [this](https://github.com/TMElyralab/MuseTalk?tab=readme-ov-file#inference).
251
+
252
+ # Note
253
+
254
+ If you want to launch online video chats, you are suggested to generate videos using MuseV and apply necessary pre-processing such as face detection and face parsing in advance. During online chatting, only UNet and the VAE decoder are involved, which makes MuseTalk real-time.
255
+
256
+
257
+ # Acknowledgement
258
+ 1. We thank open-source components like [whisper](https://github.com/openai/whisper), [dwpose](https://github.com/IDEA-Research/DWPose), [face-alignment](https://github.com/1adrianb/face-alignment), [face-parsing](https://github.com/zllrunning/face-parsing.PyTorch), [S3FD](https://github.com/yxlijun/S3FD.pytorch).
259
+ 1. MuseTalk has referred much to [diffusers](https://github.com/huggingface/diffusers) and [isaacOnline/whisper](https://github.com/isaacOnline/whisper/tree/extract-embeddings).
260
+ 1. MuseTalk has been built on [HDTF](https://github.com/MRzzm/HDTF) datasets.
261
+
262
+ Thanks for open-sourcing!
263
+
264
+ # Limitations
265
+ - Resolution: Though MuseTalk uses a face region size of 256 x 256, which make it better than other open-source methods, it has not yet reached the theoretical resolution bound. We will continue to deal with this problem.
266
+ If you need higher resolution, you could apply super resolution models such as [GFPGAN](https://github.com/TencentARC/GFPGAN) in combination with MuseTalk.
267
+
268
+ - Identity preservation: Some details of the original face are not well preserved, such as mustache, lip shape and color.
269
+
270
+ - Jitter: There exists some jitter as the current pipeline adopts single-frame generation.
271
+
272
+ # Citation
273
+ ```bib
274
+ @article{musetalk,
275
+ title={MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting},
276
+ author={Zhang, Yue and Liu, Minhao and Chen, Zhaokang and Wu, Bin and He, Yingjie and Zhan, Chao and Zhou, Wenjiang},
277
+ journal={arxiv},
278
+ year={2024}
279
+ }
280
+ ```
281
+ # Disclaimer/License
282
+ 1. `code`: The code of MuseTalk is released under the MIT License. There is no limitation for both academic and commercial usage.
283
+ 1. `model`: The trained model are available for any purpose, even commercially.
284
+ 1. `other opensource model`: Other open-source models used must comply with their license, such as `whisper`, `ft-mse-vae`, `dwpose`, `S3FD`, etc..
285
+ 1. The testdata are collected from internet, which are available for non-commercial research purposes only.
286
+ 1. `AIGC`: This project strives to impact the domain of AI-driven video generation positively. Users are granted the freedom to create videos using this tool, but they are expected to comply with local laws and utilize it responsibly. The developers do not assume any responsibility for potential misuse by users.
Untitled.ipynb ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "f41437ec-ce1b-4acb-bc47-9c44eb5fdb4d",
7
+ "metadata": {},
8
+ "outputs": [
9
+ {
10
+ "name": "stdout",
11
+ "output_type": "stream",
12
+ "text": [
13
+ "Looking in indexes: http://mirrors.aliyun.com/pypi/simple\n",
14
+ "Collecting huggingface\n",
15
+ " Downloading http://mirrors.aliyun.com/pypi/packages/f4/8c/e61fbc39c0a37140e1d4941c4af29e2d53bacf9f4559e3de24d8f4e484f0/huggingface-0.0.1-py3-none-any.whl (2.5 kB)\n",
16
+ "Installing collected packages: huggingface\n",
17
+ "Successfully installed huggingface-0.0.1\n",
18
+ "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
19
+ "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n"
20
+ ]
21
+ }
22
+ ],
23
+ "source": [
24
+ "pip install huggingface"
25
+ ]
26
+ },
27
+ {
28
+ "cell_type": "code",
29
+ "execution_count": 6,
30
+ "id": "bd8448cc-31a3-4f70-bf0f-4d0fdd817c20",
31
+ "metadata": {},
32
+ "outputs": [],
33
+ "source": [
34
+ "\n",
35
+ "import subprocess\n",
36
+ "import os\n",
37
+ "\n",
38
+ "result = subprocess.run('bash -c \"source /etc/network_turbo && env | grep proxy\"', shell=True, capture_output=True, text=True)\n",
39
+ "output = result.stdout\n",
40
+ "for line in output.splitlines():\n",
41
+ " if '=' in line:\n",
42
+ " var, value = line.split('=', 1)\n",
43
+ " os.environ[var] = value"
44
+ ]
45
+ },
46
+ {
47
+ "cell_type": "code",
48
+ "execution_count": null,
49
+ "id": "7636af72-782b-4aaf-9f86-8412aa965405",
50
+ "metadata": {},
51
+ "outputs": [],
52
+ "source": [
53
+ "from huggingface_hub import HfApi\n",
54
+ "api = HfApi()\n",
55
+ "\n",
56
+ "api.upload_folder(\n",
57
+ " folder_path=\"\",\n",
58
+ " repo_id=\"kevinwang676/MuseTalk\",\n",
59
+ " repo_type=\"space\",\n",
60
+ ")"
61
+ ]
62
+ },
63
+ {
64
+ "cell_type": "code",
65
+ "execution_count": null,
66
+ "id": "fe75559a-a4ae-435b-87f8-c7e25b0b6852",
67
+ "metadata": {},
68
+ "outputs": [],
69
+ "source": []
70
+ }
71
+ ],
72
+ "metadata": {
73
+ "kernelspec": {
74
+ "display_name": "Python 3 (ipykernel)",
75
+ "language": "python",
76
+ "name": "python3"
77
+ },
78
+ "language_info": {
79
+ "codemirror_mode": {
80
+ "name": "ipython",
81
+ "version": 3
82
+ },
83
+ "file_extension": ".py",
84
+ "mimetype": "text/x-python",
85
+ "name": "python",
86
+ "nbconvert_exporter": "python",
87
+ "pygments_lexer": "ipython3",
88
+ "version": "3.10.8"
89
+ }
90
+ },
91
+ "nbformat": 4,
92
+ "nbformat_minor": 5
93
+ }
assets/BBOX_SHIFT.md ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Why is there a "bbox_shift" parameter?
2
+ When processing training data, we utilize the combination of face detection results (bbox) and facial landmarks to determine the region of the head segmentation box. Specifically, we use the upper bound of the bbox as the upper boundary of the segmentation box, the maximum y value of the facial landmarks coordinates as the lower boundary of the segmentation box, and the minimum and maximum x values of the landmarks coordinates as the left and right boundaries of the segmentation box. By processing the dataset in this way, we can ensure the integrity of the face.
3
+
4
+ However, we have observed that the masked ratio on the face varies across different images due to the varying face shapes of subjects. Furthermore, we found that the upper-bound of the mask mainly lies close to the landmark28, landmark29 and landmark30 landmark points (as shown in Fig.1), which correspond to proportions of 15%, 63%, and 22% in the dataset, respectively.
5
+
6
+ During the inference process, we discover that as the upper-bound of the mask gets closer to the mouth (near landmark30), the audio features contribute more to lip movements. Conversely, as the upper-bound of the mask moves away from the mouth (near landmark28), the audio features contribute more to generating details of facial appearance. Hence, we define this characteristic as a parameter that can adjust the contribution of audio features to generating lip movements, which users can modify according to their specific needs in practical scenarios.
7
+
8
+ ![landmark](figs/landmark_ref.png)
9
+
10
+ Fig.1. Facial landmarks
11
+ ### Step 0.
12
+ Running with the default configuration to obtain the adjustable value range.
13
+ ```
14
+ python -m scripts.inference --inference_config configs/inference/test.yaml
15
+ ```
16
+ ```
17
+ ********************************************bbox_shift parameter adjustment**********************************************************
18
+ Total frame:「838」 Manually adjust range : [ -9~9 ] , the current value: 0
19
+ *************************************************************************************************************************************
20
+ ```
21
+ ### Step 1.
22
+ Re-run the script within the above range.
23
+ ```
24
+ python -m scripts.inference --inference_config configs/inference/test.yaml --bbox_shift xx # where xx is in [-9, 9].
25
+ ```
26
+ In our experimental observations, we found that positive values (moving towards the lower half) generally increase mouth openness, while negative values (moving towards the upper half) generally decrease mouth openness. However, it's important to note that this is not an absolute rule, and users may need to adjust the parameter according to their specific needs and the desired effect.
assets/demo/man/man.png ADDED

Git LFS Details

  • SHA256: c3d01bb4244e5f8b98d2359e6b19e9973193a15b49dff3dc0d5a9edb8666b2e7
  • Pointer size: 132 Bytes
  • Size of remote file: 3.09 MB
assets/demo/monalisa/monalisa.png ADDED
assets/demo/musk/musk.png ADDED
assets/demo/sit/sit.jpeg ADDED
assets/demo/sun1/sun.png ADDED
assets/demo/sun2/sun.png ADDED
assets/demo/video1/video1.png ADDED
assets/demo/yongen/yongen.jpeg ADDED
assets/figs/landmark_ref.png ADDED
assets/figs/musetalk_arc.jpg ADDED
cmd.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ python -m scripts.inference --inference_config configs/inference/my_conf.yaml
configs/inference/my_conf.yaml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ task_0:
2
+ video_path: "data/video/poyo.mp4"
3
+ audio_path: "data/audio/zuiai.wav"
4
+ bbox_shift: -0
5
+
6
+
configs/inference/test.yaml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ task_0:
2
+ video_path: "data/video/yongen.mp4"
3
+ audio_path: "data/audio/yongen.wav"
4
+
5
+ task_1:
6
+ video_path: "data/video/sun.mp4"
7
+ audio_path: "data/audio/sun.wav"
8
+ bbox_shift: -7
9
+
10
+
ffmpeg-6.1-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-6.1-amd64-static/ffmpeg ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a0082b064cc83f5606554fa2cc5b07194ade90f6669b1fcfd6499b29861ca403
3
+ size 78937568
ffmpeg-6.1-amd64-static/ffprobe ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c2b0313686684e48f5dedbe29e510d56e70dead57a5e4219d32c6db32455c32a
3
+ size 78811552
ffmpeg-6.1-amd64-static/manpages/ffmpeg-all.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-6.1-amd64-static/manpages/ffmpeg-bitstream-filters.txt ADDED
@@ -0,0 +1,863 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 (time_scale / num_units_in_display_tick) 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
+ dv_error_marker
130
+ Blocks in DV which are marked as damaged are replaced by blocks of the
131
+ specified color.
132
+
133
+ color
134
+ The color to replace damaged blocks by
135
+
136
+ sta A 16 bit mask which specifies which of the 16 possible error status
137
+ values are to be replaced by colored blocks. 0xFFFE is the default
138
+ which replaces all non 0 error status values.
139
+
140
+ ok No error, no concealment
141
+
142
+ err Error, No concealment
143
+
144
+ res Reserved
145
+
146
+ notok
147
+ Error or concealment
148
+
149
+ notres
150
+ Not reserved
151
+
152
+ Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru
153
+ The specific error status code
154
+
155
+ see page 44-46 or section 5.5 of
156
+ <http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf>
157
+
158
+ eac3_core
159
+ Extract the core from a E-AC-3 stream, dropping extra channels.
160
+
161
+ extract_extradata
162
+ Extract the in-band extradata.
163
+
164
+ Certain codecs allow the long-term headers (e.g. MPEG-2 sequence
165
+ headers, or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-
166
+ band" (i.e. as a part of the bitstream containing the coded frames) or
167
+ "out of band" (e.g. on the container level). This latter form is called
168
+ "extradata" in FFmpeg terminology.
169
+
170
+ This bitstream filter detects the in-band headers and makes them
171
+ available as extradata.
172
+
173
+ remove
174
+ When this option is enabled, the long-term headers are removed from
175
+ the bitstream after extraction.
176
+
177
+ filter_units
178
+ Remove units with types in or not in a given set from the stream.
179
+
180
+ pass_types
181
+ List of unit types or ranges of unit types to pass through while
182
+ removing all others. This is specified as a '|'-separated list of
183
+ unit type values or ranges of values with '-'.
184
+
185
+ remove_types
186
+ Identical to pass_types, except the units in the given set removed
187
+ and all others passed through.
188
+
189
+ Extradata is unchanged by this transformation, but note that if the
190
+ stream contains inline parameter sets then the output may be unusable
191
+ if they are removed.
192
+
193
+ For example, to remove all non-VCL NAL units from an H.264 stream:
194
+
195
+ ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
196
+
197
+ To remove all AUDs, SEI and filler from an H.265 stream:
198
+
199
+ ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
200
+
201
+ hapqa_extract
202
+ Extract Rgb or Alpha part of an HAPQA file, without recompression, in
203
+ order to create an HAPQ or an HAPAlphaOnly file.
204
+
205
+ texture
206
+ Specifies the texture to keep.
207
+
208
+ color
209
+ alpha
210
+
211
+ Convert HAPQA to HAPQ
212
+
213
+ 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
214
+
215
+ Convert HAPQA to HAPAlphaOnly
216
+
217
+ 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
218
+
219
+ h264_metadata
220
+ Modify metadata embedded in an H.264 stream.
221
+
222
+ aud Insert or remove AUD NAL units in all access units of the stream.
223
+
224
+ pass
225
+ insert
226
+ remove
227
+
228
+ Default is pass.
229
+
230
+ sample_aspect_ratio
231
+ Set the sample aspect ratio of the stream in the VUI parameters.
232
+ See H.264 table E-1.
233
+
234
+ overscan_appropriate_flag
235
+ Set whether the stream is suitable for display using overscan or
236
+ not (see H.264 section E.2.1).
237
+
238
+ video_format
239
+ video_full_range_flag
240
+ Set the video format in the stream (see H.264 section E.2.1 and
241
+ table E-2).
242
+
243
+ colour_primaries
244
+ transfer_characteristics
245
+ matrix_coefficients
246
+ Set the colour description in the stream (see H.264 section E.2.1
247
+ and tables E-3, E-4 and E-5).
248
+
249
+ chroma_sample_loc_type
250
+ Set the chroma sample location in the stream (see H.264 section
251
+ E.2.1 and figure E-1).
252
+
253
+ tick_rate
254
+ Set the tick rate (time_scale / num_units_in_tick) in the VUI
255
+ parameters. This is the smallest time unit representable in the
256
+ stream, and in many cases represents the field rate of the stream
257
+ (double the frame rate).
258
+
259
+ fixed_frame_rate_flag
260
+ Set whether the stream has fixed framerate - typically this
261
+ indicates that the framerate is exactly half the tick rate, but the
262
+ exact meaning is dependent on interlacing and the picture structure
263
+ (see H.264 section E.2.1 and table E-6).
264
+
265
+ zero_new_constraint_set_flags
266
+ Zero constraint_set4_flag and constraint_set5_flag in the SPS.
267
+ These bits were reserved in a previous version of the H.264 spec,
268
+ and thus some hardware decoders require these to be zero. The
269
+ result of zeroing this is still a valid bitstream.
270
+
271
+ crop_left
272
+ crop_right
273
+ crop_top
274
+ crop_bottom
275
+ Set the frame cropping offsets in the SPS. These values will
276
+ replace the current ones if the stream is already cropped.
277
+
278
+ These fields are set in pixels. Note that some sizes may not be
279
+ representable if the chroma is subsampled or the stream is
280
+ interlaced (see H.264 section 7.4.2.1.1).
281
+
282
+ sei_user_data
283
+ Insert a string as SEI unregistered user data. The argument must
284
+ be of the form UUID+string, where the UUID is as hex digits
285
+ possibly separated by hyphens, and the string can be anything.
286
+
287
+ For example, 086f3693-b7b3-4f2c-9653-21492feee5b8+hello will insert
288
+ the string ``hello'' associated with the given UUID.
289
+
290
+ delete_filler
291
+ Deletes both filler NAL units and filler SEI messages.
292
+
293
+ display_orientation
294
+ Insert, extract or remove Display orientation SEI messages. See
295
+ H.264 section D.1.27 and D.2.27 for syntax and semantics.
296
+
297
+ pass
298
+ insert
299
+ remove
300
+ extract
301
+
302
+ Default is pass.
303
+
304
+ Insert mode works in conjunction with "rotate" and "flip" options.
305
+ Any pre-existing Display orientation messages will be removed in
306
+ insert or remove mode. Extract mode attaches the display matrix to
307
+ the packet as side data.
308
+
309
+ rotate
310
+ Set rotation in display orientation SEI (anticlockwise angle in
311
+ degrees). Range is -360 to +360. Default is NaN.
312
+
313
+ flip
314
+ Set flip in display orientation SEI.
315
+
316
+ horizontal
317
+ vertical
318
+
319
+ Default is unset.
320
+
321
+ level
322
+ Set the level in the SPS. Refer to H.264 section A.3 and tables
323
+ A-1 to A-5.
324
+
325
+ The argument must be the name of a level (for example, 4.2), a
326
+ level_idc value (for example, 42), or the special name auto
327
+ indicating that the filter should attempt to guess the level from
328
+ the input stream properties.
329
+
330
+ h264_mp4toannexb
331
+ Convert an H.264 bitstream from length prefixed mode to start code
332
+ prefixed mode (as defined in the Annex B of the ITU-T H.264
333
+ specification).
334
+
335
+ This is required by some streaming formats, typically the MPEG-2
336
+ transport stream format (muxer "mpegts").
337
+
338
+ For example to remux an MP4 file containing an H.264 stream to mpegts
339
+ format with ffmpeg, you can use the command:
340
+
341
+ ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
342
+
343
+ Please note that this filter is auto-inserted for MPEG-TS (muxer
344
+ "mpegts") and raw H.264 (muxer "h264") output formats.
345
+
346
+ h264_redundant_pps
347
+ This applies a specific fixup to some Blu-ray streams which contain
348
+ redundant PPSs modifying irrelevant parameters of the stream which
349
+ confuse other transformations which require correct extradata.
350
+
351
+ hevc_metadata
352
+ Modify metadata embedded in an HEVC stream.
353
+
354
+ aud Insert or remove AUD NAL units in all access units of the stream.
355
+
356
+ insert
357
+ remove
358
+ sample_aspect_ratio
359
+ Set the sample aspect ratio in the stream in the VUI parameters.
360
+
361
+ video_format
362
+ video_full_range_flag
363
+ Set the video format in the stream (see H.265 section E.3.1 and
364
+ table E.2).
365
+
366
+ colour_primaries
367
+ transfer_characteristics
368
+ matrix_coefficients
369
+ Set the colour description in the stream (see H.265 section E.3.1
370
+ and tables E.3, E.4 and E.5).
371
+
372
+ chroma_sample_loc_type
373
+ Set the chroma sample location in the stream (see H.265 section
374
+ E.3.1 and figure E.1).
375
+
376
+ tick_rate
377
+ Set the tick rate in the VPS and VUI parameters (time_scale /
378
+ num_units_in_tick). Combined with num_ticks_poc_diff_one, this can
379
+ set a constant framerate in the stream. Note that it is likely to
380
+ be overridden by container parameters when the stream is in a
381
+ container.
382
+
383
+ num_ticks_poc_diff_one
384
+ Set poc_proportional_to_timing_flag in VPS and VUI and use this
385
+ value to set num_ticks_poc_diff_one_minus1 (see H.265 sections
386
+ 7.4.3.1 and E.3.1). Ignored if tick_rate is not also set.
387
+
388
+ crop_left
389
+ crop_right
390
+ crop_top
391
+ crop_bottom
392
+ Set the conformance window cropping offsets in the SPS. These
393
+ values will replace the current ones if the stream is already
394
+ cropped.
395
+
396
+ These fields are set in pixels. Note that some sizes may not be
397
+ representable if the chroma is subsampled (H.265 section
398
+ 7.4.3.2.1).
399
+
400
+ level
401
+ Set the level in the VPS and SPS. See H.265 section A.4 and tables
402
+ A.6 and A.7.
403
+
404
+ The argument must be the name of a level (for example, 5.1), a
405
+ general_level_idc value (for example, 153 for level 5.1), or the
406
+ special name auto indicating that the filter should attempt to
407
+ guess the level from the input stream properties.
408
+
409
+ hevc_mp4toannexb
410
+ Convert an HEVC/H.265 bitstream from length prefixed mode to start code
411
+ prefixed mode (as defined in the Annex B of the ITU-T H.265
412
+ specification).
413
+
414
+ This is required by some streaming formats, typically the MPEG-2
415
+ transport stream format (muxer "mpegts").
416
+
417
+ For example to remux an MP4 file containing an HEVC stream to mpegts
418
+ format with ffmpeg, you can use the command:
419
+
420
+ ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
421
+
422
+ Please note that this filter is auto-inserted for MPEG-TS (muxer
423
+ "mpegts") and raw HEVC/H.265 (muxer "h265" or "hevc") output formats.
424
+
425
+ imxdump
426
+ Modifies the bitstream to fit in MOV and to be usable by the Final Cut
427
+ Pro decoder. This filter only applies to the mpeg2video codec, and is
428
+ likely not needed for Final Cut Pro 7 and newer with the appropriate
429
+ -tag:v.
430
+
431
+ For example, to remux 30 MB/sec NTSC IMX to MOV:
432
+
433
+ ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
434
+
435
+ mjpeg2jpeg
436
+ Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
437
+
438
+ MJPEG is a video codec wherein each video frame is essentially a JPEG
439
+ image. The individual frames can be extracted without loss, e.g. by
440
+
441
+ ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
442
+
443
+ Unfortunately, these chunks are incomplete JPEG images, because they
444
+ lack the DHT segment required for decoding. Quoting from
445
+ <http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml>:
446
+
447
+ Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
448
+ commented that "MJPEG, or at least the MJPEG in AVIs having the MJPG
449
+ fourcc, is restricted JPEG with a fixed -- and *omitted* -- Huffman
450
+ table. The JPEG must be YCbCr colorspace, it must be 4:2:2, and it must
451
+ use basic Huffman encoding, not arithmetic or progressive. . . . You
452
+ can indeed extract the MJPEG frames and decode them with a regular JPEG
453
+ decoder, but you have to prepend the DHT segment to them, or else the
454
+ decoder won't have any idea how to decompress the data. The exact table
455
+ necessary is given in the OpenDML spec."
456
+
457
+ This bitstream filter patches the header of frames extracted from an
458
+ MJPEG stream (carrying the AVI1 header ID and lacking a DHT segment) to
459
+ produce fully qualified JPEG images.
460
+
461
+ ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
462
+ exiftran -i -9 frame*.jpg
463
+ ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
464
+
465
+ mjpegadump
466
+ Add an MJPEG A header to the bitstream, to enable decoding by
467
+ Quicktime.
468
+
469
+ mov2textsub
470
+ Extract a representable text file from MOV subtitles, stripping the
471
+ metadata header from each subtitle packet.
472
+
473
+ See also the text2movsub filter.
474
+
475
+ mp3decomp
476
+ Decompress non-standard compressed MP3 audio headers.
477
+
478
+ mpeg2_metadata
479
+ Modify metadata embedded in an MPEG-2 stream.
480
+
481
+ display_aspect_ratio
482
+ Set the display aspect ratio in the stream.
483
+
484
+ The following fixed values are supported:
485
+
486
+ 4/3
487
+ 16/9
488
+ 221/100
489
+
490
+ Any other value will result in square pixels being signalled
491
+ instead (see H.262 section 6.3.3 and table 6-3).
492
+
493
+ frame_rate
494
+ Set the frame rate in the stream. This is constructed from a table
495
+ of known values combined with a small multiplier and divisor - if
496
+ the supplied value is not exactly representable, the nearest
497
+ representable value will be used instead (see H.262 section 6.3.3
498
+ and table 6-4).
499
+
500
+ video_format
501
+ Set the video format in the stream (see H.262 section 6.3.6 and
502
+ table 6-6).
503
+
504
+ colour_primaries
505
+ transfer_characteristics
506
+ matrix_coefficients
507
+ Set the colour description in the stream (see H.262 section 6.3.6
508
+ and tables 6-7, 6-8 and 6-9).
509
+
510
+ mpeg4_unpack_bframes
511
+ Unpack DivX-style packed B-frames.
512
+
513
+ DivX-style packed B-frames are not valid MPEG-4 and were only a
514
+ workaround for the broken Video for Windows subsystem. They use more
515
+ space, can cause minor AV sync issues, require more CPU power to decode
516
+ (unless the player has some decoded picture queue to compensate the
517
+ 2,0,2,0 frame per packet style) and cause trouble if copied into a
518
+ standard container like mp4 or mpeg-ps/ts, because MPEG-4 decoders may
519
+ not be able to decode them, since they are not valid MPEG-4.
520
+
521
+ For example to fix an AVI file containing an MPEG-4 stream with DivX-
522
+ style packed B-frames using ffmpeg, you can use the command:
523
+
524
+ ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
525
+
526
+ noise
527
+ Damages the contents of packets or simply drops them without damaging
528
+ the container. Can be used for fuzzing or testing error
529
+ resilience/concealment.
530
+
531
+ Parameters:
532
+
533
+ amount
534
+ Accepts an expression whose evaluation per-packet determines how
535
+ often bytes in that packet will be modified. A value below 0 will
536
+ result in a variable frequency. Default is 0 which results in no
537
+ modification. However, if neither amount nor drop is specified,
538
+ amount will be set to -1. See below for accepted variables.
539
+
540
+ drop
541
+ Accepts an expression evaluated per-packet whose value determines
542
+ whether that packet is dropped. Evaluation to a positive value
543
+ results in the packet being dropped. Evaluation to a negative value
544
+ results in a variable chance of it being dropped, roughly inverse
545
+ in proportion to the magnitude of the value. Default is 0 which
546
+ results in no drops. See below for accepted variables.
547
+
548
+ dropamount
549
+ Accepts a non-negative integer, which assigns a variable chance of
550
+ it being dropped, roughly inverse in proportion to the value.
551
+ Default is 0 which results in no drops. This option is kept for
552
+ backwards compatibility and is equivalent to setting drop to a
553
+ negative value with the same magnitude i.e. "dropamount=4" is the
554
+ same as "drop=-4". Ignored if drop is also specified.
555
+
556
+ Both "amount" and "drop" accept expressions containing the following
557
+ variables:
558
+
559
+ n The index of the packet, starting from zero.
560
+
561
+ tb The timebase for packet timestamps.
562
+
563
+ pts Packet presentation timestamp.
564
+
565
+ dts Packet decoding timestamp.
566
+
567
+ nopts
568
+ Constant representing AV_NOPTS_VALUE.
569
+
570
+ startpts
571
+ First non-AV_NOPTS_VALUE PTS seen in the stream.
572
+
573
+ startdts
574
+ First non-AV_NOPTS_VALUE DTS seen in the stream.
575
+
576
+ duration
577
+ d Packet duration, in timebase units.
578
+
579
+ pos Packet position in input; may be -1 when unknown or not set.
580
+
581
+ size
582
+ Packet size, in bytes.
583
+
584
+ key Whether packet is marked as a keyframe.
585
+
586
+ state
587
+ A pseudo random integer, primarily derived from the content of
588
+ packet payload.
589
+
590
+ Examples
591
+
592
+ Apply modification to every byte but don't drop any packets.
593
+
594
+ ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
595
+
596
+ Drop every video packet not marked as a keyframe after timestamp 30s
597
+ but do not modify any of the remaining packets.
598
+
599
+ ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
600
+
601
+ Drop one second of audio every 10 seconds and add some random noise to
602
+ the rest.
603
+
604
+ ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
605
+
606
+ null
607
+ This bitstream filter passes the packets through unchanged.
608
+
609
+ pcm_rechunk
610
+ Repacketize PCM audio to a fixed number of samples per packet or a
611
+ fixed packet rate per second. This is similar to the asetnsamples audio
612
+ filter but works on audio packets instead of audio frames.
613
+
614
+ nb_out_samples, n
615
+ Set the number of samples per each output audio packet. The number
616
+ is intended as the number of samples per each channel. Default
617
+ value is 1024.
618
+
619
+ pad, p
620
+ If set to 1, the filter will pad the last audio packet with
621
+ silence, so that it will contain the same number of samples (or
622
+ roughly the same number of samples, see frame_rate) as the previous
623
+ ones. Default value is 1.
624
+
625
+ frame_rate, r
626
+ This option makes the filter output a fixed number of packets per
627
+ second instead of a fixed number of samples per packet. If the
628
+ audio sample rate is not divisible by the frame rate then the
629
+ number of samples will not be constant but will vary slightly so
630
+ that each packet will start as close to the frame boundary as
631
+ possible. Using this option has precedence over nb_out_samples.
632
+
633
+ You can generate the well known 1602-1601-1602-1601-1602 pattern of
634
+ 48kHz audio for NTSC frame rate using the frame_rate option.
635
+
636
+ ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
637
+
638
+ pgs_frame_merge
639
+ Merge a sequence of PGS Subtitle segments ending with an "end of
640
+ display set" segment into a single packet.
641
+
642
+ This is required by some containers that support PGS subtitles (muxer
643
+ "matroska").
644
+
645
+ prores_metadata
646
+ Modify color property metadata embedded in prores stream.
647
+
648
+ color_primaries
649
+ Set the color primaries. Available values are:
650
+
651
+ auto
652
+ Keep the same color primaries property (default).
653
+
654
+ unknown
655
+ bt709
656
+ bt470bg
657
+ BT601 625
658
+
659
+ smpte170m
660
+ BT601 525
661
+
662
+ bt2020
663
+ smpte431
664
+ DCI P3
665
+
666
+ smpte432
667
+ P3 D65
668
+
669
+ transfer_characteristics
670
+ Set the color transfer. Available values are:
671
+
672
+ auto
673
+ Keep the same transfer characteristics property (default).
674
+
675
+ unknown
676
+ bt709
677
+ BT 601, BT 709, BT 2020
678
+
679
+ smpte2084
680
+ SMPTE ST 2084
681
+
682
+ arib-std-b67
683
+ ARIB STD-B67
684
+
685
+ matrix_coefficients
686
+ Set the matrix coefficient. Available values are:
687
+
688
+ auto
689
+ Keep the same colorspace property (default).
690
+
691
+ unknown
692
+ bt709
693
+ smpte170m
694
+ BT 601
695
+
696
+ bt2020nc
697
+
698
+ Set Rec709 colorspace for each frame of the file
699
+
700
+ ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
701
+
702
+ Set Hybrid Log-Gamma parameters for each frame of the file
703
+
704
+ ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
705
+
706
+ remove_extra
707
+ Remove extradata from packets.
708
+
709
+ It accepts the following parameter:
710
+
711
+ freq
712
+ Set which frame types to remove extradata from.
713
+
714
+ k Remove extradata from non-keyframes only.
715
+
716
+ keyframe
717
+ Remove extradata from keyframes only.
718
+
719
+ e, all
720
+ Remove extradata from all frames.
721
+
722
+ setts
723
+ Set PTS and DTS in packets.
724
+
725
+ It accepts the following parameters:
726
+
727
+ ts
728
+ pts
729
+ dts Set expressions for PTS, DTS or both.
730
+
731
+ duration
732
+ Set expression for duration.
733
+
734
+ time_base
735
+ Set output time base.
736
+
737
+ The expressions are evaluated through the eval API and can contain the
738
+ following constants:
739
+
740
+ N The count of the input packet. Starting from 0.
741
+
742
+ TS The demux timestamp in input in case of "ts" or "dts" option or
743
+ presentation timestamp in case of "pts" option.
744
+
745
+ POS The original position in the file of the packet, or undefined if
746
+ undefined for the current packet
747
+
748
+ DTS The demux timestamp in input.
749
+
750
+ PTS The presentation timestamp in input.
751
+
752
+ DURATION
753
+ The duration in input.
754
+
755
+ STARTDTS
756
+ The DTS of the first packet.
757
+
758
+ STARTPTS
759
+ The PTS of the first packet.
760
+
761
+ PREV_INDTS
762
+ The previous input DTS.
763
+
764
+ PREV_INPTS
765
+ The previous input PTS.
766
+
767
+ PREV_INDURATION
768
+ The previous input duration.
769
+
770
+ PREV_OUTDTS
771
+ The previous output DTS.
772
+
773
+ PREV_OUTPTS
774
+ The previous output PTS.
775
+
776
+ PREV_OUTDURATION
777
+ The previous output duration.
778
+
779
+ NEXT_DTS
780
+ The next input DTS.
781
+
782
+ NEXT_PTS
783
+ The next input PTS.
784
+
785
+ NEXT_DURATION
786
+ The next input duration.
787
+
788
+ TB The timebase of stream packet belongs.
789
+
790
+ TB_OUT
791
+ The output timebase.
792
+
793
+ SR The sample rate of stream packet belongs.
794
+
795
+ NOPTS
796
+ The AV_NOPTS_VALUE constant.
797
+
798
+ text2movsub
799
+ Convert text subtitles to MOV subtitles (as used by the "mov_text"
800
+ codec) with metadata headers.
801
+
802
+ See also the mov2textsub filter.
803
+
804
+ trace_headers
805
+ Log trace output containing all syntax elements in the coded stream
806
+ headers (everything above the level of individual coded blocks). This
807
+ can be useful for debugging low-level stream issues.
808
+
809
+ Supports AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending on
810
+ the build only a subset of these may be available.
811
+
812
+ truehd_core
813
+ Extract the core from a TrueHD stream, dropping ATMOS data.
814
+
815
+ vp9_metadata
816
+ Modify metadata embedded in a VP9 stream.
817
+
818
+ color_space
819
+ Set the color space value in the frame header. Note that any frame
820
+ set to RGB will be implicitly set to PC range and that RGB is
821
+ incompatible with profiles 0 and 2.
822
+
823
+ unknown
824
+ bt601
825
+ bt709
826
+ smpte170
827
+ smpte240
828
+ bt2020
829
+ rgb
830
+ color_range
831
+ Set the color range value in the frame header. Note that any value
832
+ imposed by the color space will take precedence over this value.
833
+
834
+ tv
835
+ pc
836
+
837
+ vp9_superframe
838
+ Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This
839
+ fixes merging of split/segmented VP9 streams where the alt-ref frame
840
+ was split from its visible counterpart.
841
+
842
+ vp9_superframe_split
843
+ Split VP9 superframes into single frames.
844
+
845
+ vp9_raw_reorder
846
+ Given a VP9 stream with correct timestamps but possibly out of order,
847
+ insert additional show-existing-frame packets to correct the ordering.
848
+
849
+ SEE ALSO
850
+ ffmpeg(1), ffplay(1), ffprobe(1), libavcodec(3)
851
+
852
+ AUTHORS
853
+ The FFmpeg developers.
854
+
855
+ For details about the authorship, see the Git history of the project
856
+ (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
857
+ the FFmpeg source directory, or browsing the online repository at
858
+ <https://git.ffmpeg.org/ffmpeg>.
859
+
860
+ Maintainers for the specific components are listed in the file
861
+ MAINTAINERS in the source code tree.
862
+
863
+ FFMPEG-BITSTREAM-FILTERS(1)
ffmpeg-6.1-amd64-static/manpages/ffmpeg-codecs.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-6.1-amd64-static/manpages/ffmpeg-devices.txt ADDED
@@ -0,0 +1,1904 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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/profile mode. Must be unset, half,
320
+ full, one_sub_device_full, one_sub_device_half,
321
+ two_sub_device_full, four_sub_device_half Defaults to unset.
322
+
323
+ Note: DeckLink SDK 11.0 have replaced the duplex property by a
324
+ profile property. For the DeckLink Duo 2 and DeckLink Quad 2, a
325
+ profile is shared between any 2 sub-devices that utilize the same
326
+ connectors. For the DeckLink 8K Pro, a profile is shared between
327
+ all 4 sub-devices. So DeckLink 8K Pro support four profiles.
328
+
329
+ Valid profile modes for DeckLink 8K Pro(with DeckLink SDK >= 11.0):
330
+ one_sub_device_full, one_sub_device_half, two_sub_device_full,
331
+ four_sub_device_half
332
+
333
+ Valid profile modes for DeckLink Quad 2 and DeckLink Duo 2: half,
334
+ full
335
+
336
+ timecode_format
337
+ Timecode type to include in the frame and video stream metadata.
338
+ Must be none, rp188vitc, rp188vitc2, rp188ltc, rp188hfr, rp188any,
339
+ vitc, vitc2, or serial. Defaults to none (not included).
340
+
341
+ In order to properly support 50/60 fps timecodes, the ordering of
342
+ the queried timecode types for rp188any is HFR, VITC1, VITC2 and
343
+ LTC for >30 fps content. Note that this is slightly different to
344
+ the ordering used by the DeckLink API, which is HFR, VITC1, LTC,
345
+ VITC2.
346
+
347
+ video_input
348
+ Sets the video input source. Must be unset, sdi, hdmi, optical_sdi,
349
+ component, composite or s_video. Defaults to unset.
350
+
351
+ audio_input
352
+ Sets the audio input source. Must be unset, embedded, aes_ebu,
353
+ analog, analog_xlr, analog_rca or microphone. Defaults to unset.
354
+
355
+ video_pts
356
+ Sets the video packet timestamp source. Must be video, audio,
357
+ reference, wallclock or abs_wallclock. Defaults to video.
358
+
359
+ audio_pts
360
+ Sets the audio packet timestamp source. Must be video, audio,
361
+ reference, wallclock or abs_wallclock. Defaults to audio.
362
+
363
+ draw_bars
364
+ If set to true, color bars are drawn in the event of a signal loss.
365
+ Defaults to true.
366
+
367
+ queue_size
368
+ Sets maximum input buffer size in bytes. If the buffering reaches
369
+ this value, incoming frames will be dropped. Defaults to
370
+ 1073741824.
371
+
372
+ audio_depth
373
+ Sets the audio sample bit depth. Must be 16 or 32. Defaults to 16.
374
+
375
+ decklink_copyts
376
+ If set to true, timestamps are forwarded as they are without
377
+ removing the initial offset. Defaults to false.
378
+
379
+ timestamp_align
380
+ Capture start time alignment in seconds. If set to nonzero, input
381
+ frames are dropped till the system timestamp aligns with configured
382
+ value. Alignment difference of up to one frame duration is
383
+ tolerated. This is useful for maintaining input synchronization
384
+ across N different hardware devices deployed for 'N-way'
385
+ redundancy. The system time of different hardware devices should be
386
+ synchronized with protocols such as NTP or PTP, before using this
387
+ option. Note that this method is not foolproof. In some border
388
+ cases input synchronization may not happen due to thread scheduling
389
+ jitters in the OS. Either sync could go wrong by 1 frame or in a
390
+ rarer case timestamp_align seconds. Defaults to 0.
391
+
392
+ wait_for_tc (bool)
393
+ Drop frames till a frame with timecode is received. Sometimes
394
+ serial timecode isn't received with the first input frame. If that
395
+ happens, the stored stream timecode will be inaccurate. If this
396
+ option is set to true, input frames are dropped till a frame with
397
+ timecode is received. Option timecode_format must be specified.
398
+ Defaults to false.
399
+
400
+ enable_klv(bool)
401
+ If set to true, extracts KLV data from VANC and outputs KLV
402
+ packets. KLV VANC packets are joined based on MID and PSC fields
403
+ and aggregated into one KLV packet. Defaults to false.
404
+
405
+ Examples
406
+
407
+ o List input devices:
408
+
409
+ ffmpeg -sources decklink
410
+
411
+ o List supported formats:
412
+
413
+ ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
414
+
415
+ o Capture video clip at 1080i50:
416
+
417
+ ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
418
+
419
+ o Capture video clip at 1080i50 10 bit:
420
+
421
+ ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
422
+
423
+ o Capture video clip at 1080i50 with 16 audio channels:
424
+
425
+ ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
426
+
427
+ dshow
428
+ Windows DirectShow input device.
429
+
430
+ DirectShow support is enabled when FFmpeg is built with the mingw-w64
431
+ project. Currently only audio and video devices are supported.
432
+
433
+ Multiple devices may be opened as separate inputs, but they may also be
434
+ opened on the same input, which should improve synchronism between
435
+ them.
436
+
437
+ The input name should be in the format:
438
+
439
+ <TYPE>=<NAME>[:<TYPE>=<NAME>]
440
+
441
+ where TYPE can be either audio or video, and NAME is the device's name
442
+ or alternative name..
443
+
444
+ Options
445
+
446
+ If no options are specified, the device's defaults are used. If the
447
+ device does not support the requested options, it will fail to open.
448
+
449
+ video_size
450
+ Set the video size in the captured video.
451
+
452
+ framerate
453
+ Set the frame rate in the captured video.
454
+
455
+ sample_rate
456
+ Set the sample rate (in Hz) of the captured audio.
457
+
458
+ sample_size
459
+ Set the sample size (in bits) of the captured audio.
460
+
461
+ channels
462
+ Set the number of channels in the captured audio.
463
+
464
+ list_devices
465
+ If set to true, print a list of devices and exit.
466
+
467
+ list_options
468
+ If set to true, print a list of selected device's options and exit.
469
+
470
+ video_device_number
471
+ Set video device number for devices with the same name (starts at
472
+ 0, defaults to 0).
473
+
474
+ audio_device_number
475
+ Set audio device number for devices with the same name (starts at
476
+ 0, defaults to 0).
477
+
478
+ pixel_format
479
+ Select pixel format to be used by DirectShow. This may only be set
480
+ when the video codec is not set or set to rawvideo.
481
+
482
+ audio_buffer_size
483
+ Set audio device buffer size in milliseconds (which can directly
484
+ impact latency, depending on the device). Defaults to using the
485
+ audio device's default buffer size (typically some multiple of
486
+ 500ms). Setting this value too low can degrade performance. See
487
+ also
488
+ <http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx>
489
+
490
+ video_pin_name
491
+ Select video capture pin to use by name or alternative name.
492
+
493
+ audio_pin_name
494
+ Select audio capture pin to use by name or alternative name.
495
+
496
+ crossbar_video_input_pin_number
497
+ Select video input pin number for crossbar device. This will be
498
+ routed to the crossbar device's Video Decoder output pin. Note
499
+ that changing this value can affect future invocations (sets a new
500
+ default) until system reboot occurs.
501
+
502
+ crossbar_audio_input_pin_number
503
+ Select audio input pin number for crossbar device. This will be
504
+ routed to the crossbar device's Audio Decoder output pin. Note
505
+ that changing this value can affect future invocations (sets a new
506
+ default) until system reboot occurs.
507
+
508
+ show_video_device_dialog
509
+ If set to true, before capture starts, popup a display dialog to
510
+ the end user, allowing them to change video filter properties and
511
+ configurations manually. Note that for crossbar devices, adjusting
512
+ values in this dialog may be needed at times to toggle between PAL
513
+ (25 fps) and NTSC (29.97) input frame rates, sizes, interlacing,
514
+ etc. Changing these values can enable different scan rates/frame
515
+ rates and avoiding green bars at the bottom, flickering scan lines,
516
+ etc. Note that with some devices, changing these properties can
517
+ also affect future invocations (sets new defaults) until system
518
+ reboot occurs.
519
+
520
+ show_audio_device_dialog
521
+ If set to true, before capture starts, popup a display dialog to
522
+ the end user, allowing them to change audio filter properties and
523
+ configurations manually.
524
+
525
+ show_video_crossbar_connection_dialog
526
+ If set to true, before capture starts, popup a display dialog to
527
+ the end user, allowing them to manually modify crossbar pin
528
+ routings, when it opens a video device.
529
+
530
+ show_audio_crossbar_connection_dialog
531
+ If set to true, before capture starts, popup a display dialog to
532
+ the end user, allowing them to manually modify crossbar pin
533
+ routings, when it opens an audio device.
534
+
535
+ show_analog_tv_tuner_dialog
536
+ If set to true, before capture starts, popup a display dialog to
537
+ the end user, allowing them to manually modify TV channels and
538
+ frequencies.
539
+
540
+ show_analog_tv_tuner_audio_dialog
541
+ If set to true, before capture starts, popup a display dialog to
542
+ the end user, allowing them to manually modify TV audio (like mono
543
+ vs. stereo, Language A,B or C).
544
+
545
+ audio_device_load
546
+ Load an audio capture filter device from file instead of searching
547
+ it by name. It may load additional parameters too, if the filter
548
+ supports the serialization of its properties to. To use this an
549
+ audio capture source has to be specified, but it can be anything
550
+ even fake one.
551
+
552
+ audio_device_save
553
+ Save the currently used audio capture filter device and its
554
+ parameters (if the filter supports it) to a file. If a file with
555
+ the same name exists it will be overwritten.
556
+
557
+ video_device_load
558
+ Load a video capture filter device from file instead of searching
559
+ it by name. It may load additional parameters too, if the filter
560
+ supports the serialization of its properties to. To use this a
561
+ video capture source has to be specified, but it can be anything
562
+ even fake one.
563
+
564
+ video_device_save
565
+ Save the currently used video capture filter device and its
566
+ parameters (if the filter supports it) to a file. If a file with
567
+ the same name exists it will be overwritten.
568
+
569
+ use_video_device_timestamps
570
+ If set to false, the timestamp for video frames will be derived
571
+ from the wallclock instead of the timestamp provided by the capture
572
+ device. This allows working around devices that provide unreliable
573
+ timestamps.
574
+
575
+ Examples
576
+
577
+ o Print the list of DirectShow supported devices and exit:
578
+
579
+ $ ffmpeg -list_devices true -f dshow -i dummy
580
+
581
+ o Open video device Camera:
582
+
583
+ $ ffmpeg -f dshow -i video="Camera"
584
+
585
+ o Open second video device with name Camera:
586
+
587
+ $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
588
+
589
+ o Open video device Camera and audio device Microphone:
590
+
591
+ $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
592
+
593
+ o Print the list of supported options in selected device and exit:
594
+
595
+ $ ffmpeg -list_options true -f dshow -i video="Camera"
596
+
597
+ o Specify pin names to capture by name or alternative name, specify
598
+ alternative device name:
599
+
600
+ $ 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"
601
+
602
+ o Configure a crossbar device, specifying crossbar pins, allow user
603
+ to adjust video capture properties at startup:
604
+
605
+ $ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0
606
+ -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
607
+
608
+ fbdev
609
+ Linux framebuffer input device.
610
+
611
+ The Linux framebuffer is a graphic hardware-independent abstraction
612
+ layer to show graphics on a computer monitor, typically on the console.
613
+ It is accessed through a file device node, usually /dev/fb0.
614
+
615
+ For more detailed information read the file
616
+ Documentation/fb/framebuffer.txt included in the Linux source tree.
617
+
618
+ See also <http://linux-fbdev.sourceforge.net/>, and fbset(1).
619
+
620
+ To record from the framebuffer device /dev/fb0 with ffmpeg:
621
+
622
+ ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi
623
+
624
+ You can take a single screenshot image with the command:
625
+
626
+ ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg
627
+
628
+ Options
629
+
630
+ framerate
631
+ Set the frame rate. Default is 25.
632
+
633
+ gdigrab
634
+ Win32 GDI-based screen capture device.
635
+
636
+ This device allows you to capture a region of the display on Windows.
637
+
638
+ There are two options for the input filename:
639
+
640
+ desktop
641
+
642
+ or
643
+
644
+ title=<window_title>
645
+
646
+ The first option will capture the entire desktop, or a fixed region of
647
+ the desktop. The second option will instead capture the contents of a
648
+ single window, regardless of its position on the screen.
649
+
650
+ For example, to grab the entire desktop using ffmpeg:
651
+
652
+ ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
653
+
654
+ Grab a 640x480 region at position "10,20":
655
+
656
+ ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg
657
+
658
+ Grab the contents of the window named "Calculator"
659
+
660
+ ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg
661
+
662
+ Options
663
+
664
+ draw_mouse
665
+ Specify whether to draw the mouse pointer. Use the value 0 to not
666
+ draw the pointer. Default value is 1.
667
+
668
+ framerate
669
+ Set the grabbing frame rate. Default value is "ntsc", corresponding
670
+ to a frame rate of "30000/1001".
671
+
672
+ show_region
673
+ Show grabbed region on screen.
674
+
675
+ If show_region is specified with 1, then the grabbing region will
676
+ be indicated on screen. With this option, it is easy to know what
677
+ is being grabbed if only a portion of the screen is grabbed.
678
+
679
+ Note that show_region is incompatible with grabbing the contents of
680
+ a single window.
681
+
682
+ For example:
683
+
684
+ ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
685
+
686
+ video_size
687
+ Set the video frame size. The default is to capture the full screen
688
+ if desktop is selected, or the full window size if
689
+ title=window_title is selected.
690
+
691
+ offset_x
692
+ When capturing a region with video_size, set the distance from the
693
+ left edge of the screen or desktop.
694
+
695
+ Note that the offset calculation is from the top left corner of the
696
+ primary monitor on Windows. If you have a monitor positioned to the
697
+ left of your primary monitor, you will need to use a negative
698
+ offset_x value to move the region to that monitor.
699
+
700
+ offset_y
701
+ When capturing a region with video_size, set the distance from the
702
+ top edge of the screen or desktop.
703
+
704
+ Note that the offset calculation is from the top left corner of the
705
+ primary monitor on Windows. If you have a monitor positioned above
706
+ your primary monitor, you will need to use a negative offset_y
707
+ value to move the region to that monitor.
708
+
709
+ iec61883
710
+ FireWire DV/HDV input device using libiec61883.
711
+
712
+ To enable this input device, you need libiec61883, libraw1394 and
713
+ libavc1394 installed on your system. Use the configure option
714
+ "--enable-libiec61883" to compile with the device enabled.
715
+
716
+ The iec61883 capture device supports capturing from a video device
717
+ connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
718
+ FireWire stack (juju). This is the default DV/HDV input method in Linux
719
+ Kernel 2.6.37 and later, since the old FireWire stack was removed.
720
+
721
+ Specify the FireWire port to be used as input file, or "auto" to choose
722
+ the first port connected.
723
+
724
+ Options
725
+
726
+ dvtype
727
+ Override autodetection of DV/HDV. This should only be used if auto
728
+ detection does not work, or if usage of a different device type
729
+ should be prohibited. Treating a DV device as HDV (or vice versa)
730
+ will not work and result in undefined behavior. The values auto,
731
+ dv and hdv are supported.
732
+
733
+ dvbuffer
734
+ Set maximum size of buffer for incoming data, in frames. For DV,
735
+ this is an exact value. For HDV, it is not frame exact, since HDV
736
+ does not have a fixed frame size.
737
+
738
+ dvguid
739
+ Select the capture device by specifying its GUID. Capturing will
740
+ only be performed from the specified device and fails if no device
741
+ with the given GUID is found. This is useful to select the input if
742
+ multiple devices are connected at the same time. Look at
743
+ /sys/bus/firewire/devices to find out the GUIDs.
744
+
745
+ Examples
746
+
747
+ o Grab and show the input of a FireWire DV/HDV device.
748
+
749
+ ffplay -f iec61883 -i auto
750
+
751
+ o Grab and record the input of a FireWire DV/HDV device, using a
752
+ packet buffer of 100000 packets if the source is HDV.
753
+
754
+ ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
755
+
756
+ jack
757
+ JACK input device.
758
+
759
+ To enable this input device during configuration you need libjack
760
+ installed on your system.
761
+
762
+ A JACK input device creates one or more JACK writable clients, one for
763
+ each audio channel, with name client_name:input_N, where client_name is
764
+ the name provided by the application, and N is a number which
765
+ identifies the channel. Each writable client will send the acquired
766
+ data to the FFmpeg input device.
767
+
768
+ Once you have created one or more JACK readable clients, you need to
769
+ connect them to one or more JACK writable clients.
770
+
771
+ To connect or disconnect JACK clients you can use the jack_connect and
772
+ jack_disconnect programs, or do it through a graphical interface, for
773
+ example with qjackctl.
774
+
775
+ To list the JACK clients and their properties you can invoke the
776
+ command jack_lsp.
777
+
778
+ Follows an example which shows how to capture a JACK readable client
779
+ with ffmpeg.
780
+
781
+ # Create a JACK writable client with name "ffmpeg".
782
+ $ ffmpeg -f jack -i ffmpeg -y out.wav
783
+
784
+ # Start the sample jack_metro readable client.
785
+ $ jack_metro -b 120 -d 0.2 -f 4000
786
+
787
+ # List the current JACK clients.
788
+ $ jack_lsp -c
789
+ system:capture_1
790
+ system:capture_2
791
+ system:playback_1
792
+ system:playback_2
793
+ ffmpeg:input_1
794
+ metro:120_bpm
795
+
796
+ # Connect metro to the ffmpeg writable client.
797
+ $ jack_connect metro:120_bpm ffmpeg:input_1
798
+
799
+ For more information read: <http://jackaudio.org/>
800
+
801
+ Options
802
+
803
+ channels
804
+ Set the number of channels. Default is 2.
805
+
806
+ kmsgrab
807
+ KMS video input device.
808
+
809
+ Captures the KMS scanout framebuffer associated with a specified CRTC
810
+ or plane as a DRM object that can be passed to other hardware
811
+ functions.
812
+
813
+ Requires either DRM master or CAP_SYS_ADMIN to run.
814
+
815
+ If you don't understand what all of that means, you probably don't want
816
+ this. Look at x11grab instead.
817
+
818
+ Options
819
+
820
+ device
821
+ DRM device to capture on. Defaults to /dev/dri/card0.
822
+
823
+ format
824
+ Pixel format of the framebuffer. This can be autodetected if you
825
+ are running Linux 5.7 or later, but needs to be provided for
826
+ earlier versions. Defaults to bgr0, which is the most common
827
+ format used by the Linux console and Xorg X server.
828
+
829
+ format_modifier
830
+ Format modifier to signal on output frames. This is necessary to
831
+ import correctly into some APIs. It can be autodetected if you are
832
+ running Linux 5.7 or later, but will need to be provided explicitly
833
+ when needed in earlier versions. See the libdrm documentation for
834
+ possible values.
835
+
836
+ crtc_id
837
+ KMS CRTC ID to define the capture source. The first active plane
838
+ on the given CRTC will be used.
839
+
840
+ plane_id
841
+ KMS plane ID to define the capture source. Defaults to the first
842
+ active plane found if neither crtc_id nor plane_id are specified.
843
+
844
+ framerate
845
+ Framerate to capture at. This is not synchronised to any page
846
+ flipping or framebuffer changes - it just defines the interval at
847
+ which the framebuffer is sampled. Sampling faster than the
848
+ framebuffer update rate will generate independent frames with the
849
+ same content. Defaults to 30.
850
+
851
+ Examples
852
+
853
+ o Capture from the first active plane, download the result to normal
854
+ frames and encode. This will only work if the framebuffer is both
855
+ linear and mappable - if not, the result may be scrambled or fail
856
+ to download.
857
+
858
+ ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
859
+
860
+ o Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert
861
+ to NV12 and encode as H.264.
862
+
863
+ 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
864
+
865
+ o To capture only part of a plane the output can be cropped - this
866
+ can be used to capture a single window, as long as it has a known
867
+ absolute position and size. For example, to capture and encode the
868
+ middle quarter of a 1920x1080 plane:
869
+
870
+ 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
871
+
872
+ lavfi
873
+ Libavfilter input virtual device.
874
+
875
+ This input device reads data from the open output pads of a libavfilter
876
+ filtergraph.
877
+
878
+ For each filtergraph open output, the input device will create a
879
+ corresponding stream which is mapped to the generated output. The
880
+ filtergraph is specified through the option graph.
881
+
882
+ Options
883
+
884
+ graph
885
+ Specify the filtergraph to use as input. Each video open output
886
+ must be labelled by a unique string of the form "outN", where N is
887
+ a number starting from 0 corresponding to the mapped input stream
888
+ generated by the device. The first unlabelled output is
889
+ automatically assigned to the "out0" label, but all the others need
890
+ to be specified explicitly.
891
+
892
+ The suffix "+subcc" can be appended to the output label to create
893
+ an extra stream with the closed captions packets attached to that
894
+ output (experimental; only for EIA-608 / CEA-708 for now). The
895
+ subcc streams are created after all the normal streams, in the
896
+ order of the corresponding stream. For example, if there is
897
+ "out19+subcc", "out7+subcc" and up to "out42", the stream #43 is
898
+ subcc for stream #7 and stream #44 is subcc for stream #19.
899
+
900
+ If not specified defaults to the filename specified for the input
901
+ device.
902
+
903
+ graph_file
904
+ Set the filename of the filtergraph to be read and sent to the
905
+ other filters. Syntax of the filtergraph is the same as the one
906
+ specified by the option graph.
907
+
908
+ dumpgraph
909
+ Dump graph to stderr.
910
+
911
+ Examples
912
+
913
+ o Create a color video stream and play it back with ffplay:
914
+
915
+ ffplay -f lavfi -graph "color=c=pink [out0]" dummy
916
+
917
+ o As the previous example, but use filename for specifying the graph
918
+ description, and omit the "out0" label:
919
+
920
+ ffplay -f lavfi color=c=pink
921
+
922
+ o Create three different video test filtered sources and play them:
923
+
924
+ ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
925
+
926
+ o Read an audio stream from a file using the amovie source and play
927
+ it back with ffplay:
928
+
929
+ ffplay -f lavfi "amovie=test.wav"
930
+
931
+ o Read an audio stream and a video stream and play it back with
932
+ ffplay:
933
+
934
+ ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
935
+
936
+ o Dump decoded frames to images and closed captions to a file
937
+ (experimental):
938
+
939
+ ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rawvideo subcc.bin
940
+
941
+ libcdio
942
+ Audio-CD input device based on libcdio.
943
+
944
+ To enable this input device during configuration you need libcdio
945
+ installed on your system. It requires the configure option
946
+ "--enable-libcdio".
947
+
948
+ This device allows playing and grabbing from an Audio-CD.
949
+
950
+ For example to copy with ffmpeg the entire Audio-CD in /dev/sr0, you
951
+ may run the command:
952
+
953
+ ffmpeg -f libcdio -i /dev/sr0 cd.wav
954
+
955
+ Options
956
+
957
+ speed
958
+ Set drive reading speed. Default value is 0.
959
+
960
+ The speed is specified CD-ROM speed units. The speed is set through
961
+ the libcdio "cdio_cddap_speed_set" function. On many CD-ROM drives,
962
+ specifying a value too large will result in using the fastest
963
+ speed.
964
+
965
+ paranoia_mode
966
+ Set paranoia recovery mode flags. It accepts one of the following
967
+ values:
968
+
969
+ disable
970
+ verify
971
+ overlap
972
+ neverskip
973
+ full
974
+
975
+ Default value is disable.
976
+
977
+ For more information about the available recovery modes, consult
978
+ the paranoia project documentation.
979
+
980
+ libdc1394
981
+ IIDC1394 input device, based on libdc1394 and libraw1394.
982
+
983
+ Requires the configure option "--enable-libdc1394".
984
+
985
+ Options
986
+
987
+ framerate
988
+ Set the frame rate. Default is "ntsc", corresponding to a frame
989
+ rate of "30000/1001".
990
+
991
+ pixel_format
992
+ Select the pixel format. Default is "uyvy422".
993
+
994
+ video_size
995
+ Set the video size given as a string such as "640x480" or "hd720".
996
+ Default is "qvga".
997
+
998
+ openal
999
+ The OpenAL input device provides audio capture on all systems with a
1000
+ working OpenAL 1.1 implementation.
1001
+
1002
+ To enable this input device during configuration, you need OpenAL
1003
+ headers and libraries installed on your system, and need to configure
1004
+ FFmpeg with "--enable-openal".
1005
+
1006
+ OpenAL headers and libraries should be provided as part of your OpenAL
1007
+ implementation, or as an additional download (an SDK). Depending on
1008
+ your installation you may need to specify additional flags via the
1009
+ "--extra-cflags" and "--extra-ldflags" for allowing the build system to
1010
+ locate the OpenAL headers and libraries.
1011
+
1012
+ An incomplete list of OpenAL implementations follows:
1013
+
1014
+ Creative
1015
+ The official Windows implementation, providing hardware
1016
+ acceleration with supported devices and software fallback. See
1017
+ <http://openal.org/>.
1018
+
1019
+ OpenAL Soft
1020
+ Portable, open source (LGPL) software implementation. Includes
1021
+ backends for the most common sound APIs on the Windows, Linux,
1022
+ Solaris, and BSD operating systems. See
1023
+ <http://kcat.strangesoft.net/openal.html>.
1024
+
1025
+ Apple
1026
+ OpenAL is part of Core Audio, the official Mac OS X Audio
1027
+ interface. See
1028
+ <http://developer.apple.com/technologies/mac/audio-and-video.html>
1029
+
1030
+ This device allows one to capture from an audio input device handled
1031
+ through OpenAL.
1032
+
1033
+ You need to specify the name of the device to capture in the provided
1034
+ filename. If the empty string is provided, the device will
1035
+ automatically select the default device. You can get the list of the
1036
+ supported devices by using the option list_devices.
1037
+
1038
+ Options
1039
+
1040
+ channels
1041
+ Set the number of channels in the captured audio. Only the values 1
1042
+ (monaural) and 2 (stereo) are currently supported. Defaults to 2.
1043
+
1044
+ sample_size
1045
+ Set the sample size (in bits) of the captured audio. Only the
1046
+ values 8 and 16 are currently supported. Defaults to 16.
1047
+
1048
+ sample_rate
1049
+ Set the sample rate (in Hz) of the captured audio. Defaults to
1050
+ 44.1k.
1051
+
1052
+ list_devices
1053
+ If set to true, print a list of devices and exit. Defaults to
1054
+ false.
1055
+
1056
+ Examples
1057
+
1058
+ Print the list of OpenAL supported devices and exit:
1059
+
1060
+ $ ffmpeg -list_devices true -f openal -i dummy out.ogg
1061
+
1062
+ Capture from the OpenAL device DR-BT101 via PulseAudio:
1063
+
1064
+ $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
1065
+
1066
+ Capture from the default device (note the empty string '' as filename):
1067
+
1068
+ $ ffmpeg -f openal -i '' out.ogg
1069
+
1070
+ Capture from two devices simultaneously, writing to two different
1071
+ files, within the same ffmpeg command:
1072
+
1073
+ $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
1074
+
1075
+ Note: not all OpenAL implementations support multiple simultaneous
1076
+ capture - try the latest OpenAL Soft if the above does not work.
1077
+
1078
+ oss
1079
+ Open Sound System input device.
1080
+
1081
+ The filename to provide to the input device is the device node
1082
+ representing the OSS input device, and is usually set to /dev/dsp.
1083
+
1084
+ For example to grab from /dev/dsp using ffmpeg use the command:
1085
+
1086
+ ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
1087
+
1088
+ For more information about OSS see:
1089
+ <http://manuals.opensound.com/usersguide/dsp.html>
1090
+
1091
+ Options
1092
+
1093
+ sample_rate
1094
+ Set the sample rate in Hz. Default is 48000.
1095
+
1096
+ channels
1097
+ Set the number of channels. Default is 2.
1098
+
1099
+ pulse
1100
+ PulseAudio input device.
1101
+
1102
+ To enable this output device you need to configure FFmpeg with
1103
+ "--enable-libpulse".
1104
+
1105
+ The filename to provide to the input device is a source device or the
1106
+ string "default"
1107
+
1108
+ To list the PulseAudio source devices and their properties you can
1109
+ invoke the command pactl list sources.
1110
+
1111
+ More information about PulseAudio can be found on
1112
+ <http://www.pulseaudio.org>.
1113
+
1114
+ Options
1115
+
1116
+ server
1117
+ Connect to a specific PulseAudio server, specified by an IP
1118
+ address. Default server is used when not provided.
1119
+
1120
+ name
1121
+ Specify the application name PulseAudio will use when showing
1122
+ active clients, by default it is the "LIBAVFORMAT_IDENT" string.
1123
+
1124
+ stream_name
1125
+ Specify the stream name PulseAudio will use when showing active
1126
+ streams, by default it is "record".
1127
+
1128
+ sample_rate
1129
+ Specify the samplerate in Hz, by default 48kHz is used.
1130
+
1131
+ channels
1132
+ Specify the channels in use, by default 2 (stereo) is set.
1133
+
1134
+ frame_size
1135
+ This option does nothing and is deprecated.
1136
+
1137
+ fragment_size
1138
+ Specify the size in bytes of the minimal buffering fragment in
1139
+ PulseAudio, it will affect the audio latency. By default it is set
1140
+ to 50 ms amount of data.
1141
+
1142
+ wallclock
1143
+ Set the initial PTS using the current time. Default is 1.
1144
+
1145
+ Examples
1146
+
1147
+ Record a stream from default device:
1148
+
1149
+ ffmpeg -f pulse -i default /tmp/pulse.wav
1150
+
1151
+ sndio
1152
+ sndio input device.
1153
+
1154
+ To enable this input device during configuration you need libsndio
1155
+ installed on your system.
1156
+
1157
+ The filename to provide to the input device is the device node
1158
+ representing the sndio input device, and is usually set to /dev/audio0.
1159
+
1160
+ For example to grab from /dev/audio0 using ffmpeg use the command:
1161
+
1162
+ ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
1163
+
1164
+ Options
1165
+
1166
+ sample_rate
1167
+ Set the sample rate in Hz. Default is 48000.
1168
+
1169
+ channels
1170
+ Set the number of channels. Default is 2.
1171
+
1172
+ video4linux2, v4l2
1173
+ Video4Linux2 input video device.
1174
+
1175
+ "v4l2" can be used as alias for "video4linux2".
1176
+
1177
+ If FFmpeg is built with v4l-utils support (by using the
1178
+ "--enable-libv4l2" configure option), it is possible to use it with the
1179
+ "-use_libv4l2" input device option.
1180
+
1181
+ The name of the device to grab is a file device node, usually Linux
1182
+ systems tend to automatically create such nodes when the device (e.g.
1183
+ an USB webcam) is plugged into the system, and has a name of the kind
1184
+ /dev/videoN, where N is a number associated to the device.
1185
+
1186
+ Video4Linux2 devices usually support a limited set of widthxheight
1187
+ sizes and frame rates. You can check which are supported using
1188
+ -list_formats all for Video4Linux2 devices. Some devices, like TV
1189
+ cards, support one or more standards. It is possible to list all the
1190
+ supported standards using -list_standards all.
1191
+
1192
+ The time base for the timestamps is 1 microsecond. Depending on the
1193
+ kernel version and configuration, the timestamps may be derived from
1194
+ the real time clock (origin at the Unix Epoch) or the monotonic clock
1195
+ (origin usually at boot time, unaffected by NTP or manual changes to
1196
+ the clock). The -timestamps abs or -ts abs option can be used to force
1197
+ conversion into the real time clock.
1198
+
1199
+ Some usage examples of the video4linux2 device with ffmpeg and ffplay:
1200
+
1201
+ o List supported formats for a video4linux2 device:
1202
+
1203
+ ffplay -f video4linux2 -list_formats all /dev/video0
1204
+
1205
+ o Grab and show the input of a video4linux2 device:
1206
+
1207
+ ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
1208
+
1209
+ o Grab and record the input of a video4linux2 device, leave the frame
1210
+ rate and size as previously set:
1211
+
1212
+ ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
1213
+
1214
+ For more information about Video4Linux, check <http://linuxtv.org/>.
1215
+
1216
+ Options
1217
+
1218
+ standard
1219
+ Set the standard. Must be the name of a supported standard. To get
1220
+ a list of the supported standards, use the list_standards option.
1221
+
1222
+ channel
1223
+ Set the input channel number. Default to -1, which means using the
1224
+ previously selected channel.
1225
+
1226
+ video_size
1227
+ Set the video frame size. The argument must be a string in the form
1228
+ WIDTHxHEIGHT or a valid size abbreviation.
1229
+
1230
+ pixel_format
1231
+ Select the pixel format (only valid for raw video input).
1232
+
1233
+ input_format
1234
+ Set the preferred pixel format (for raw video) or a codec name.
1235
+ This option allows one to select the input format, when several are
1236
+ available.
1237
+
1238
+ framerate
1239
+ Set the preferred video frame rate.
1240
+
1241
+ list_formats
1242
+ List available formats (supported pixel formats, codecs, and frame
1243
+ sizes) and exit.
1244
+
1245
+ Available values are:
1246
+
1247
+ all Show all available (compressed and non-compressed) formats.
1248
+
1249
+ raw Show only raw video (non-compressed) formats.
1250
+
1251
+ compressed
1252
+ Show only compressed formats.
1253
+
1254
+ list_standards
1255
+ List supported standards and exit.
1256
+
1257
+ Available values are:
1258
+
1259
+ all Show all supported standards.
1260
+
1261
+ timestamps, ts
1262
+ Set type of timestamps for grabbed frames.
1263
+
1264
+ Available values are:
1265
+
1266
+ default
1267
+ Use timestamps from the kernel.
1268
+
1269
+ abs Use absolute timestamps (wall clock).
1270
+
1271
+ mono2abs
1272
+ Force conversion from monotonic to absolute timestamps.
1273
+
1274
+ Default value is "default".
1275
+
1276
+ use_libv4l2
1277
+ Use libv4l2 (v4l-utils) conversion functions. Default is 0.
1278
+
1279
+ vfwcap
1280
+ VfW (Video for Windows) capture input device.
1281
+
1282
+ The filename passed as input is the capture driver number, ranging from
1283
+ 0 to 9. You may use "list" as filename to print a list of drivers. Any
1284
+ other filename will be interpreted as device number 0.
1285
+
1286
+ Options
1287
+
1288
+ video_size
1289
+ Set the video frame size.
1290
+
1291
+ framerate
1292
+ Set the grabbing frame rate. Default value is "ntsc", corresponding
1293
+ to a frame rate of "30000/1001".
1294
+
1295
+ x11grab
1296
+ X11 video input device.
1297
+
1298
+ To enable this input device during configuration you need libxcb
1299
+ installed on your system. It will be automatically detected during
1300
+ configuration.
1301
+
1302
+ This device allows one to capture a region of an X11 display.
1303
+
1304
+ The filename passed as input has the syntax:
1305
+
1306
+ [<hostname>]:<display_number>.<screen_number>[+<x_offset>,<y_offset>]
1307
+
1308
+ hostname:display_number.screen_number specifies the X11 display name of
1309
+ the screen to grab from. hostname can be omitted, and defaults to
1310
+ "localhost". The environment variable DISPLAY contains the default
1311
+ display name.
1312
+
1313
+ x_offset and y_offset specify the offsets of the grabbed area with
1314
+ respect to the top-left border of the X11 screen. They default to 0.
1315
+
1316
+ Check the X11 documentation (e.g. man X) for more detailed information.
1317
+
1318
+ Use the xdpyinfo program for getting basic information about the
1319
+ properties of your X11 display (e.g. grep for "name" or "dimensions").
1320
+
1321
+ For example to grab from :0.0 using ffmpeg:
1322
+
1323
+ ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
1324
+
1325
+ Grab at position "10,20":
1326
+
1327
+ ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
1328
+
1329
+ Options
1330
+
1331
+ select_region
1332
+ Specify whether to select the grabbing area graphically using the
1333
+ pointer. A value of 1 prompts the user to select the grabbing area
1334
+ graphically by clicking and dragging. A single click with no
1335
+ dragging will select the whole screen. A region with zero width or
1336
+ height will also select the whole screen. This option overwrites
1337
+ the video_size, grab_x, and grab_y options. Default value is 0.
1338
+
1339
+ draw_mouse
1340
+ Specify whether to draw the mouse pointer. A value of 0 specifies
1341
+ not to draw the pointer. Default value is 1.
1342
+
1343
+ follow_mouse
1344
+ Make the grabbed area follow the mouse. The argument can be
1345
+ "centered" or a number of pixels PIXELS.
1346
+
1347
+ When it is specified with "centered", the grabbing region follows
1348
+ the mouse pointer and keeps the pointer at the center of region;
1349
+ otherwise, the region follows only when the mouse pointer reaches
1350
+ within PIXELS (greater than zero) to the edge of region.
1351
+
1352
+ For example:
1353
+
1354
+ ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
1355
+
1356
+ To follow only when the mouse pointer reaches within 100 pixels to
1357
+ edge:
1358
+
1359
+ ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
1360
+
1361
+ framerate
1362
+ Set the grabbing frame rate. Default value is "ntsc", corresponding
1363
+ to a frame rate of "30000/1001".
1364
+
1365
+ show_region
1366
+ Show grabbed region on screen.
1367
+
1368
+ If show_region is specified with 1, then the grabbing region will
1369
+ be indicated on screen. With this option, it is easy to know what
1370
+ is being grabbed if only a portion of the screen is grabbed.
1371
+
1372
+ region_border
1373
+ Set the region border thickness if -show_region 1 is used. Range
1374
+ is 1 to 128 and default is 3 (XCB-based x11grab only).
1375
+
1376
+ For example:
1377
+
1378
+ ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
1379
+
1380
+ With follow_mouse:
1381
+
1382
+ ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
1383
+
1384
+ window_id
1385
+ Grab this window, instead of the whole screen. Default value is 0,
1386
+ which maps to the whole screen (root window).
1387
+
1388
+ The id of a window can be found using the xwininfo program,
1389
+ possibly with options -tree and -root.
1390
+
1391
+ If the window is later enlarged, the new area is not recorded.
1392
+ Video ends when the window is closed, unmapped (i.e., iconified) or
1393
+ shrunk beyond the video size (which defaults to the initial window
1394
+ size).
1395
+
1396
+ This option disables options follow_mouse and select_region.
1397
+
1398
+ video_size
1399
+ Set the video frame size. Default is the full desktop or window.
1400
+
1401
+ grab_x
1402
+ grab_y
1403
+ Set the grabbing region coordinates. They are expressed as offset
1404
+ from the top left corner of the X11 window and correspond to the
1405
+ x_offset and y_offset parameters in the device name. The default
1406
+ value for both options is 0.
1407
+
1408
+ OUTPUT DEVICES
1409
+ Output devices are configured elements in FFmpeg that can write
1410
+ multimedia data to an output device attached to your system.
1411
+
1412
+ When you configure your FFmpeg build, all the supported output devices
1413
+ are enabled by default. You can list all available ones using the
1414
+ configure option "--list-outdevs".
1415
+
1416
+ You can disable all the output devices using the configure option
1417
+ "--disable-outdevs", and selectively enable an output device using the
1418
+ option "--enable-outdev=OUTDEV", or you can disable a particular input
1419
+ device using the option "--disable-outdev=OUTDEV".
1420
+
1421
+ The option "-devices" of the ff* tools will display the list of enabled
1422
+ output devices.
1423
+
1424
+ A description of the currently available output devices follows.
1425
+
1426
+ alsa
1427
+ ALSA (Advanced Linux Sound Architecture) output device.
1428
+
1429
+ Examples
1430
+
1431
+ o Play a file on default ALSA device:
1432
+
1433
+ ffmpeg -i INPUT -f alsa default
1434
+
1435
+ o Play a file on soundcard 1, audio device 7:
1436
+
1437
+ ffmpeg -i INPUT -f alsa hw:1,7
1438
+
1439
+ AudioToolbox
1440
+ AudioToolbox output device.
1441
+
1442
+ Allows native output to CoreAudio devices on OSX.
1443
+
1444
+ The output filename can be empty (or "-") to refer to the default
1445
+ system output device or a number that refers to the device index as
1446
+ shown using: "-list_devices true".
1447
+
1448
+ Alternatively, the audio input device can be chosen by index using the
1449
+
1450
+ B<-audio_device_index E<lt>INDEXE<gt>>
1451
+
1452
+ , overriding any device name or index given in the input filename.
1453
+
1454
+ All available devices can be enumerated by using -list_devices true,
1455
+ listing all device names, UIDs and corresponding indices.
1456
+
1457
+ Options
1458
+
1459
+ AudioToolbox supports the following options:
1460
+
1461
+ -audio_device_index <INDEX>
1462
+ Specify the audio device by its index. Overrides anything given in
1463
+ the output filename.
1464
+
1465
+ Examples
1466
+
1467
+ o Print the list of supported devices and output a sine wave to the
1468
+ default device:
1469
+
1470
+ $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
1471
+
1472
+ o Output a sine wave to the device with the index 2, overriding any
1473
+ output filename:
1474
+
1475
+ $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
1476
+
1477
+ caca
1478
+ CACA output device.
1479
+
1480
+ This output device allows one to show a video stream in CACA window.
1481
+ Only one CACA window is allowed per application, so you can have only
1482
+ one instance of this output device in an application.
1483
+
1484
+ To enable this output device you need to configure FFmpeg with
1485
+ "--enable-libcaca". libcaca is a graphics library that outputs text
1486
+ instead of pixels.
1487
+
1488
+ For more information about libcaca, check:
1489
+ <http://caca.zoy.org/wiki/libcaca>
1490
+
1491
+ Options
1492
+
1493
+ window_title
1494
+ Set the CACA window title, if not specified default to the filename
1495
+ specified for the output device.
1496
+
1497
+ window_size
1498
+ Set the CACA window size, can be a string of the form widthxheight
1499
+ or a video size abbreviation. If not specified it defaults to the
1500
+ size of the input video.
1501
+
1502
+ driver
1503
+ Set display driver.
1504
+
1505
+ algorithm
1506
+ Set dithering algorithm. Dithering is necessary because the picture
1507
+ being rendered has usually far more colours than the available
1508
+ palette. The accepted values are listed with "-list_dither
1509
+ algorithms".
1510
+
1511
+ antialias
1512
+ Set antialias method. Antialiasing smoothens the rendered image and
1513
+ avoids the commonly seen staircase effect. The accepted values are
1514
+ listed with "-list_dither antialiases".
1515
+
1516
+ charset
1517
+ Set which characters are going to be used when rendering text. The
1518
+ accepted values are listed with "-list_dither charsets".
1519
+
1520
+ color
1521
+ Set color to be used when rendering text. The accepted values are
1522
+ listed with "-list_dither colors".
1523
+
1524
+ list_drivers
1525
+ If set to true, print a list of available drivers and exit.
1526
+
1527
+ list_dither
1528
+ List available dither options related to the argument. The
1529
+ argument must be one of "algorithms", "antialiases", "charsets",
1530
+ "colors".
1531
+
1532
+ Examples
1533
+
1534
+ o The following command shows the ffmpeg output is an CACA window,
1535
+ forcing its size to 80x25:
1536
+
1537
+ ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
1538
+
1539
+ o Show the list of available drivers and exit:
1540
+
1541
+ ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
1542
+
1543
+ o Show the list of available dither colors and exit:
1544
+
1545
+ ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
1546
+
1547
+ decklink
1548
+ The decklink output device provides playback capabilities for
1549
+ Blackmagic DeckLink devices.
1550
+
1551
+ To enable this output device, you need the Blackmagic DeckLink SDK and
1552
+ you need to configure with the appropriate "--extra-cflags" and
1553
+ "--extra-ldflags". On Windows, you need to run the IDL files through
1554
+ widl.
1555
+
1556
+ DeckLink is very picky about the formats it supports. Pixel format is
1557
+ always uyvy422, framerate, field order and video size must be
1558
+ determined for your device with -list_formats 1. Audio sample rate is
1559
+ always 48 kHz.
1560
+
1561
+ Options
1562
+
1563
+ list_devices
1564
+ If set to true, print a list of devices and exit. Defaults to
1565
+ false. This option is deprecated, please use the "-sinks" option of
1566
+ ffmpeg to list the available output devices.
1567
+
1568
+ list_formats
1569
+ If set to true, print a list of supported formats and exit.
1570
+ Defaults to false.
1571
+
1572
+ preroll
1573
+ Amount of time to preroll video in seconds. Defaults to 0.5.
1574
+
1575
+ duplex_mode
1576
+ Sets the decklink device duplex/profile mode. Must be unset, half,
1577
+ full, one_sub_device_full, one_sub_device_half,
1578
+ two_sub_device_full, four_sub_device_half Defaults to unset.
1579
+
1580
+ Note: DeckLink SDK 11.0 have replaced the duplex property by a
1581
+ profile property. For the DeckLink Duo 2 and DeckLink Quad 2, a
1582
+ profile is shared between any 2 sub-devices that utilize the same
1583
+ connectors. For the DeckLink 8K Pro, a profile is shared between
1584
+ all 4 sub-devices. So DeckLink 8K Pro support four profiles.
1585
+
1586
+ Valid profile modes for DeckLink 8K Pro(with DeckLink SDK >= 11.0):
1587
+ one_sub_device_full, one_sub_device_half, two_sub_device_full,
1588
+ four_sub_device_half
1589
+
1590
+ Valid profile modes for DeckLink Quad 2 and DeckLink Duo 2: half,
1591
+ full
1592
+
1593
+ timing_offset
1594
+ Sets the genlock timing pixel offset on the used output. Defaults
1595
+ to unset.
1596
+
1597
+ link
1598
+ Sets the SDI video link configuration on the used output. Must be
1599
+ unset, single link SDI, dual link SDI or quad link SDI. Defaults
1600
+ to unset.
1601
+
1602
+ sqd Enable Square Division Quad Split mode for Quad-link SDI output.
1603
+ Must be unset, true or false. Defaults to unset.
1604
+
1605
+ level_a
1606
+ Enable SMPTE Level A mode on the used output. Must be unset, true
1607
+ or false. Defaults to unset.
1608
+
1609
+ vanc_queue_size
1610
+ Sets maximum output buffer size in bytes for VANC data. If the
1611
+ buffering reaches this value, outgoing VANC data will be dropped.
1612
+ Defaults to 1048576.
1613
+
1614
+ Examples
1615
+
1616
+ o List output devices:
1617
+
1618
+ ffmpeg -sinks decklink
1619
+
1620
+ o List supported formats:
1621
+
1622
+ ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
1623
+
1624
+ o Play video clip:
1625
+
1626
+ ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
1627
+
1628
+ o Play video clip with non-standard framerate or video size:
1629
+
1630
+ ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
1631
+
1632
+ fbdev
1633
+ Linux framebuffer output device.
1634
+
1635
+ The Linux framebuffer is a graphic hardware-independent abstraction
1636
+ layer to show graphics on a computer monitor, typically on the console.
1637
+ It is accessed through a file device node, usually /dev/fb0.
1638
+
1639
+ For more detailed information read the file
1640
+ Documentation/fb/framebuffer.txt included in the Linux source tree.
1641
+
1642
+ Options
1643
+
1644
+ xoffset
1645
+ yoffset
1646
+ Set x/y coordinate of top left corner. Default is 0.
1647
+
1648
+ Examples
1649
+
1650
+ Play a file on framebuffer device /dev/fb0. Required pixel format
1651
+ depends on current framebuffer settings.
1652
+
1653
+ ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0
1654
+
1655
+ See also <http://linux-fbdev.sourceforge.net/>, and fbset(1).
1656
+
1657
+ opengl
1658
+ OpenGL output device.
1659
+
1660
+ To enable this output device you need to configure FFmpeg with
1661
+ "--enable-opengl".
1662
+
1663
+ This output device allows one to render to OpenGL context. Context may
1664
+ be provided by application or default SDL window is created.
1665
+
1666
+ When device renders to external context, application must implement
1667
+ handlers for following messages: "AV_DEV_TO_APP_CREATE_WINDOW_BUFFER" -
1668
+ create OpenGL context on current thread.
1669
+ "AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER" - make OpenGL context current.
1670
+ "AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER" - swap buffers.
1671
+ "AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER" - destroy OpenGL context.
1672
+ Application is also required to inform a device about current
1673
+ resolution by sending "AV_APP_TO_DEV_WINDOW_SIZE" message.
1674
+
1675
+ Options
1676
+
1677
+ background
1678
+ Set background color. Black is a default.
1679
+
1680
+ no_window
1681
+ Disables default SDL window when set to non-zero value.
1682
+ Application must provide OpenGL context and both "window_size_cb"
1683
+ and "window_swap_buffers_cb" callbacks when set.
1684
+
1685
+ window_title
1686
+ Set the SDL window title, if not specified default to the filename
1687
+ specified for the output device. Ignored when no_window is set.
1688
+
1689
+ window_size
1690
+ Set preferred window size, can be a string of the form widthxheight
1691
+ or a video size abbreviation. If not specified it defaults to the
1692
+ size of the input video, downscaled according to the aspect ratio.
1693
+ Mostly usable when no_window is not set.
1694
+
1695
+ Examples
1696
+
1697
+ Play a file on SDL window using OpenGL rendering:
1698
+
1699
+ ffmpeg -i INPUT -f opengl "window title"
1700
+
1701
+ oss
1702
+ OSS (Open Sound System) output device.
1703
+
1704
+ pulse
1705
+ PulseAudio output device.
1706
+
1707
+ To enable this output device you need to configure FFmpeg with
1708
+ "--enable-libpulse".
1709
+
1710
+ More information about PulseAudio can be found on
1711
+ <http://www.pulseaudio.org>
1712
+
1713
+ Options
1714
+
1715
+ server
1716
+ Connect to a specific PulseAudio server, specified by an IP
1717
+ address. Default server is used when not provided.
1718
+
1719
+ name
1720
+ Specify the application name PulseAudio will use when showing
1721
+ active clients, by default it is the "LIBAVFORMAT_IDENT" string.
1722
+
1723
+ stream_name
1724
+ Specify the stream name PulseAudio will use when showing active
1725
+ streams, by default it is set to the specified output name.
1726
+
1727
+ device
1728
+ Specify the device to use. Default device is used when not
1729
+ provided. List of output devices can be obtained with command
1730
+ pactl list sinks.
1731
+
1732
+ buffer_size
1733
+ buffer_duration
1734
+ Control the size and duration of the PulseAudio buffer. A small
1735
+ buffer gives more control, but requires more frequent updates.
1736
+
1737
+ buffer_size specifies size in bytes while buffer_duration specifies
1738
+ duration in milliseconds.
1739
+
1740
+ When both options are provided then the highest value is used
1741
+ (duration is recalculated to bytes using stream parameters). If
1742
+ they are set to 0 (which is default), the device will use the
1743
+ default PulseAudio duration value. By default PulseAudio set buffer
1744
+ duration to around 2 seconds.
1745
+
1746
+ prebuf
1747
+ Specify pre-buffering size in bytes. The server does not start with
1748
+ playback before at least prebuf bytes are available in the buffer.
1749
+ By default this option is initialized to the same value as
1750
+ buffer_size or buffer_duration (whichever is bigger).
1751
+
1752
+ minreq
1753
+ Specify minimum request size in bytes. The server does not request
1754
+ less than minreq bytes from the client, instead waits until the
1755
+ buffer is free enough to request more bytes at once. It is
1756
+ recommended to not set this option, which will initialize this to a
1757
+ value that is deemed sensible by the server.
1758
+
1759
+ Examples
1760
+
1761
+ Play a file on default device on default server:
1762
+
1763
+ ffmpeg -i INPUT -f pulse "stream name"
1764
+
1765
+ sdl
1766
+ SDL (Simple DirectMedia Layer) output device.
1767
+
1768
+ "sdl2" can be used as alias for "sdl".
1769
+
1770
+ This output device allows one to show a video stream in an SDL window.
1771
+ Only one SDL window is allowed per application, so you can have only
1772
+ one instance of this output device in an application.
1773
+
1774
+ To enable this output device you need libsdl installed on your system
1775
+ when configuring your build.
1776
+
1777
+ For more information about SDL, check: <http://www.libsdl.org/>
1778
+
1779
+ Options
1780
+
1781
+ window_borderless
1782
+ Set SDL window border off. Default value is 0 (enable window
1783
+ border).
1784
+
1785
+ window_enable_quit
1786
+ Enable quit action (using window button or keyboard key) when non-
1787
+ zero value is provided. Default value is 1 (enable quit action).
1788
+
1789
+ window_fullscreen
1790
+ Set fullscreen mode when non-zero value is provided. Default value
1791
+ is zero.
1792
+
1793
+ window_size
1794
+ Set the SDL window size, can be a string of the form widthxheight
1795
+ or a video size abbreviation. If not specified it defaults to the
1796
+ size of the input video, downscaled according to the aspect ratio.
1797
+
1798
+ window_title
1799
+ Set the SDL window title, if not specified default to the filename
1800
+ specified for the output device.
1801
+
1802
+ window_x
1803
+ window_y
1804
+ Set the position of the window on the screen.
1805
+
1806
+ Interactive commands
1807
+
1808
+ The window created by the device can be controlled through the
1809
+ following interactive commands.
1810
+
1811
+ q, ESC
1812
+ Quit the device immediately.
1813
+
1814
+ Examples
1815
+
1816
+ The following command shows the ffmpeg output is an SDL window, forcing
1817
+ its size to the qcif format:
1818
+
1819
+ ffmpeg -i INPUT -c:v rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output"
1820
+
1821
+ sndio
1822
+ sndio audio output device.
1823
+
1824
+ v4l2
1825
+ Video4Linux2 output device.
1826
+
1827
+ xv
1828
+ XV (XVideo) output device.
1829
+
1830
+ This output device allows one to show a video stream in a X Window
1831
+ System window.
1832
+
1833
+ Options
1834
+
1835
+ display_name
1836
+ Specify the hardware display name, which determines the display and
1837
+ communications domain to be used.
1838
+
1839
+ The display name or DISPLAY environment variable can be a string in
1840
+ the format hostname[:number[.screen_number]].
1841
+
1842
+ hostname specifies the name of the host machine on which the
1843
+ display is physically attached. number specifies the number of the
1844
+ display server on that host machine. screen_number specifies the
1845
+ screen to be used on that server.
1846
+
1847
+ If unspecified, it defaults to the value of the DISPLAY environment
1848
+ variable.
1849
+
1850
+ For example, "dual-headed:0.1" would specify screen 1 of display 0
1851
+ on the machine named ``dual-headed''.
1852
+
1853
+ Check the X11 specification for more detailed information about the
1854
+ display name format.
1855
+
1856
+ window_id
1857
+ When set to non-zero value then device doesn't create new window,
1858
+ but uses existing one with provided window_id. By default this
1859
+ options is set to zero and device creates its own window.
1860
+
1861
+ window_size
1862
+ Set the created window size, can be a string of the form
1863
+ widthxheight or a video size abbreviation. If not specified it
1864
+ defaults to the size of the input video. Ignored when window_id is
1865
+ set.
1866
+
1867
+ window_x
1868
+ window_y
1869
+ Set the X and Y window offsets for the created window. They are
1870
+ both set to 0 by default. The values may be ignored by the window
1871
+ manager. Ignored when window_id is set.
1872
+
1873
+ window_title
1874
+ Set the window title, if not specified default to the filename
1875
+ specified for the output device. Ignored when window_id is set.
1876
+
1877
+ For more information about XVideo see <http://www.x.org/>.
1878
+
1879
+ Examples
1880
+
1881
+ o Decode, display and encode video input with ffmpeg at the same
1882
+ time:
1883
+
1884
+ ffmpeg -i INPUT OUTPUT -f xv display
1885
+
1886
+ o Decode and display the input video to multiple X11 windows:
1887
+
1888
+ ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
1889
+
1890
+ SEE ALSO
1891
+ ffmpeg(1), ffplay(1), ffprobe(1), libavdevice(3)
1892
+
1893
+ AUTHORS
1894
+ The FFmpeg developers.
1895
+
1896
+ For details about the authorship, see the Git history of the project
1897
+ (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
1898
+ the FFmpeg source directory, or browsing the online repository at
1899
+ <https://git.ffmpeg.org/ffmpeg>.
1900
+
1901
+ Maintainers for the specific components are listed in the file
1902
+ MAINTAINERS in the source code tree.
1903
+
1904
+ FFMPEG-DEVICES(1)
ffmpeg-6.1-amd64-static/manpages/ffmpeg-filters.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-6.1-amd64-static/manpages/ffmpeg-formats.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-6.1-amd64-static/manpages/ffmpeg-protocols.txt ADDED
@@ -0,0 +1,1960 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ concatf
195
+ Physical concatenation protocol using a line break delimited list of
196
+ resources.
197
+
198
+ Read and seek from many resources in sequence as if they were a unique
199
+ resource.
200
+
201
+ A URL accepted by this protocol has the syntax:
202
+
203
+ concatf:<URL>
204
+
205
+ where URL is the url containing a line break delimited list of
206
+ resources to be concatenated, each one possibly specifying a distinct
207
+ protocol. Special characters must be escaped with backslash or single
208
+ quotes. See the "Quoting and escaping" section in the ffmpeg-utils(1)
209
+ manual.
210
+
211
+ For example to read a sequence of files split1.mpeg, split2.mpeg,
212
+ split3.mpeg listed in separate lines within a file split.txt with
213
+ ffplay use the command:
214
+
215
+ ffplay concatf:split.txt
216
+
217
+ Where split.txt contains the lines:
218
+
219
+ split1.mpeg
220
+ split2.mpeg
221
+ split3.mpeg
222
+
223
+ crypto
224
+ AES-encrypted stream reading protocol.
225
+
226
+ The accepted options are:
227
+
228
+ key Set the AES decryption key binary block from given hexadecimal
229
+ representation.
230
+
231
+ iv Set the AES decryption initialization vector binary block from
232
+ given hexadecimal representation.
233
+
234
+ Accepted URL formats:
235
+
236
+ crypto:<URL>
237
+ crypto+<URL>
238
+
239
+ data
240
+ Data in-line in the URI. See
241
+ <http://en.wikipedia.org/wiki/Data_URI_scheme>.
242
+
243
+ For example, to convert a GIF file given inline with ffmpeg:
244
+
245
+ ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
246
+
247
+ fd
248
+ File descriptor access protocol.
249
+
250
+ The accepted syntax is:
251
+
252
+ fd: -fd <file_descriptor>
253
+
254
+ If fd is not specified, by default the stdout file descriptor will be
255
+ used for writing, stdin for reading. Unlike the pipe protocol, fd
256
+ protocol has seek support if it corresponding to a regular file. fd
257
+ protocol doesn't support pass file descriptor via URL for security.
258
+
259
+ This protocol accepts the following options:
260
+
261
+ blocksize
262
+ Set I/O operation maximum block size, in bytes. Default value is
263
+ "INT_MAX", which results in not limiting the requested block size.
264
+ Setting this value reasonably low improves user termination request
265
+ reaction time, which is valuable if data transmission is slow.
266
+
267
+ fd Set file descriptor.
268
+
269
+ file
270
+ File access protocol.
271
+
272
+ Read from or write to a file.
273
+
274
+ A file URL can have the form:
275
+
276
+ file:<filename>
277
+
278
+ where filename is the path of the file to read.
279
+
280
+ An URL that does not have a protocol prefix will be assumed to be a
281
+ file URL. Depending on the build, an URL that looks like a Windows path
282
+ with the drive letter at the beginning will also be assumed to be a
283
+ file URL (usually not the case in builds for unix-like systems).
284
+
285
+ For example to read from a file input.mpeg with ffmpeg use the command:
286
+
287
+ ffmpeg -i file:input.mpeg output.mpeg
288
+
289
+ This protocol accepts the following options:
290
+
291
+ truncate
292
+ Truncate existing files on write, if set to 1. A value of 0
293
+ prevents truncating. Default value is 1.
294
+
295
+ blocksize
296
+ Set I/O operation maximum block size, in bytes. Default value is
297
+ "INT_MAX", which results in not limiting the requested block size.
298
+ Setting this value reasonably low improves user termination request
299
+ reaction time, which is valuable for files on slow medium.
300
+
301
+ follow
302
+ If set to 1, the protocol will retry reading at the end of the
303
+ file, allowing reading files that still are being written. In order
304
+ for this to terminate, you either need to use the rw_timeout
305
+ option, or use the interrupt callback (for API users).
306
+
307
+ seekable
308
+ Controls if seekability is advertised on the file. 0 means non-
309
+ seekable, -1 means auto (seekable for normal files, non-seekable
310
+ for named pipes).
311
+
312
+ Many demuxers handle seekable and non-seekable resources
313
+ differently, overriding this might speed up opening certain files
314
+ at the cost of losing some features (e.g. accurate seeking).
315
+
316
+ ftp
317
+ FTP (File Transfer Protocol).
318
+
319
+ Read from or write to remote resources using FTP protocol.
320
+
321
+ Following syntax is required.
322
+
323
+ ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
324
+
325
+ This protocol accepts the following options.
326
+
327
+ timeout
328
+ Set timeout in microseconds of socket I/O operations used by the
329
+ underlying low level operation. By default it is set to -1, which
330
+ means that the timeout is not specified.
331
+
332
+ ftp-user
333
+ Set a user to be used for authenticating to the FTP server. This is
334
+ overridden by the user in the FTP URL.
335
+
336
+ ftp-password
337
+ Set a password to be used for authenticating to the FTP server.
338
+ This is overridden by the password in the FTP URL, or by ftp-
339
+ anonymous-password if no user is set.
340
+
341
+ ftp-anonymous-password
342
+ Password used when login as anonymous user. Typically an e-mail
343
+ address should be used.
344
+
345
+ ftp-write-seekable
346
+ Control seekability of connection during encoding. If set to 1 the
347
+ resource is supposed to be seekable, if set to 0 it is assumed not
348
+ to be seekable. Default value is 0.
349
+
350
+ NOTE: Protocol can be used as output, but it is recommended to not do
351
+ it, unless special care is taken (tests, customized server
352
+ configuration etc.). Different FTP servers behave in different way
353
+ during seek operation. ff* tools may produce incomplete content due to
354
+ server limitations.
355
+
356
+ gopher
357
+ Gopher protocol.
358
+
359
+ gophers
360
+ Gophers protocol.
361
+
362
+ The Gopher protocol with TLS encapsulation.
363
+
364
+ hls
365
+ Read Apple HTTP Live Streaming compliant segmented stream as a uniform
366
+ one. The M3U8 playlists describing the segments can be remote HTTP
367
+ resources or local files, accessed using the standard file protocol.
368
+ The nested protocol is declared by specifying "+proto" after the hls
369
+ URI scheme name, where proto is either "file" or "http".
370
+
371
+ hls+http://host/path/to/remote/resource.m3u8
372
+ hls+file://path/to/local/resource.m3u8
373
+
374
+ Using this protocol is discouraged - the hls demuxer should work just
375
+ as well (if not, please report the issues) and is more complete. To
376
+ use the hls demuxer instead, simply use the direct URLs to the m3u8
377
+ files.
378
+
379
+ http
380
+ HTTP (Hyper Text Transfer Protocol).
381
+
382
+ This protocol accepts the following options:
383
+
384
+ seekable
385
+ Control seekability of connection. If set to 1 the resource is
386
+ supposed to be seekable, if set to 0 it is assumed not to be
387
+ seekable, if set to -1 it will try to autodetect if it is seekable.
388
+ Default value is -1.
389
+
390
+ chunked_post
391
+ If set to 1 use chunked Transfer-Encoding for posts, default is 1.
392
+
393
+ content_type
394
+ Set a specific content type for the POST messages or for listen
395
+ mode.
396
+
397
+ http_proxy
398
+ set HTTP proxy to tunnel through e.g. http://example.com:1234
399
+
400
+ headers
401
+ Set custom HTTP headers, can override built in default headers. The
402
+ value must be a string encoding the headers.
403
+
404
+ multiple_requests
405
+ Use persistent connections if set to 1, default is 0.
406
+
407
+ post_data
408
+ Set custom HTTP post data.
409
+
410
+ referer
411
+ Set the Referer header. Include 'Referer: URL' header in HTTP
412
+ request.
413
+
414
+ user_agent
415
+ Override the User-Agent header. If not specified the protocol will
416
+ use a string describing the libavformat build. ("Lavf/<version>")
417
+
418
+ reconnect_at_eof
419
+ If set then eof is treated like an error and causes reconnection,
420
+ this is useful for live / endless streams.
421
+
422
+ reconnect_streamed
423
+ If set then even streamed/non seekable streams will be reconnected
424
+ on errors.
425
+
426
+ reconnect_on_network_error
427
+ Reconnect automatically in case of TCP/TLS errors during connect.
428
+
429
+ reconnect_on_http_error
430
+ A comma separated list of HTTP status codes to reconnect on. The
431
+ list can include specific status codes (e.g. '503') or the strings
432
+ '4xx' / '5xx'.
433
+
434
+ reconnect_delay_max
435
+ Sets the maximum delay in seconds after which to give up
436
+ reconnecting
437
+
438
+ mime_type
439
+ Export the MIME type.
440
+
441
+ http_version
442
+ Exports the HTTP response version number. Usually "1.0" or "1.1".
443
+
444
+ icy If set to 1 request ICY (SHOUTcast) metadata from the server. If
445
+ the server supports this, the metadata has to be retrieved by the
446
+ application by reading the icy_metadata_headers and
447
+ icy_metadata_packet options. The default is 1.
448
+
449
+ icy_metadata_headers
450
+ If the server supports ICY metadata, this contains the ICY-specific
451
+ HTTP reply headers, separated by newline characters.
452
+
453
+ icy_metadata_packet
454
+ If the server supports ICY metadata, and icy was set to 1, this
455
+ contains the last non-empty metadata packet sent by the server. It
456
+ should be polled in regular intervals by applications interested in
457
+ mid-stream metadata updates.
458
+
459
+ cookies
460
+ Set the cookies to be sent in future requests. The format of each
461
+ cookie is the same as the value of a Set-Cookie HTTP response
462
+ field. Multiple cookies can be delimited by a newline character.
463
+
464
+ offset
465
+ Set initial byte offset.
466
+
467
+ end_offset
468
+ Try to limit the request to bytes preceding this offset.
469
+
470
+ method
471
+ When used as a client option it sets the HTTP method for the
472
+ request.
473
+
474
+ When used as a server option it sets the HTTP method that is going
475
+ to be expected from the client(s). If the expected and the
476
+ received HTTP method do not match the client will be given a Bad
477
+ Request response. When unset the HTTP method is not checked for
478
+ now. This will be replaced by autodetection in the future.
479
+
480
+ listen
481
+ If set to 1 enables experimental HTTP server. This can be used to
482
+ send data when used as an output option, or read data from a client
483
+ with HTTP POST when used as an input option. If set to 2 enables
484
+ experimental multi-client HTTP server. This is not yet implemented
485
+ in ffmpeg.c and thus must not be used as a command line option.
486
+
487
+ # Server side (sending):
488
+ ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://<server>:<port>
489
+
490
+ # Client side (receiving):
491
+ ffmpeg -i http://<server>:<port> -c copy somefile.ogg
492
+
493
+ # Client can also be done with wget:
494
+ wget http://<server>:<port> -O somefile.ogg
495
+
496
+ # Server side (receiving):
497
+ ffmpeg -listen 1 -i http://<server>:<port> -c copy somefile.ogg
498
+
499
+ # Client side (sending):
500
+ ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://<server>:<port>
501
+
502
+ # Client can also be done with wget:
503
+ wget --post-file=somefile.ogg http://<server>:<port>
504
+
505
+ send_expect_100
506
+ Send an Expect: 100-continue header for POST. If set to 1 it will
507
+ send, if set to 0 it won't, if set to -1 it will try to send if it
508
+ is applicable. Default value is -1.
509
+
510
+ auth_type
511
+ Set HTTP authentication type. No option for Digest, since this
512
+ method requires getting nonce parameters from the server first and
513
+ can't be used straight away like Basic.
514
+
515
+ none
516
+ Choose the HTTP authentication type automatically. This is the
517
+ default.
518
+
519
+ basic
520
+ Choose the HTTP basic authentication.
521
+
522
+ Basic authentication sends a Base64-encoded string that
523
+ contains a user name and password for the client. Base64 is not
524
+ a form of encryption and should be considered the same as
525
+ sending the user name and password in clear text (Base64 is a
526
+ reversible encoding). If a resource needs to be protected,
527
+ strongly consider using an authentication scheme other than
528
+ basic authentication. HTTPS/TLS should be used with basic
529
+ authentication. Without these additional security
530
+ enhancements, basic authentication should not be used to
531
+ protect sensitive or valuable information.
532
+
533
+ HTTP Cookies
534
+
535
+ Some HTTP requests will be denied unless cookie values are passed in
536
+ with the request. The cookies option allows these cookies to be
537
+ specified. At the very least, each cookie must specify a value along
538
+ with a path and domain. HTTP requests that match both the domain and
539
+ path will automatically include the cookie value in the HTTP Cookie
540
+ header field. Multiple cookies can be delimited by a newline.
541
+
542
+ The required syntax to play a stream specifying a cookie is:
543
+
544
+ ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
545
+
546
+ Icecast
547
+ Icecast protocol (stream to Icecast servers)
548
+
549
+ This protocol accepts the following options:
550
+
551
+ ice_genre
552
+ Set the stream genre.
553
+
554
+ ice_name
555
+ Set the stream name.
556
+
557
+ ice_description
558
+ Set the stream description.
559
+
560
+ ice_url
561
+ Set the stream website URL.
562
+
563
+ ice_public
564
+ Set if the stream should be public. The default is 0 (not public).
565
+
566
+ user_agent
567
+ Override the User-Agent header. If not specified a string of the
568
+ form "Lavf/<version>" will be used.
569
+
570
+ password
571
+ Set the Icecast mountpoint password.
572
+
573
+ content_type
574
+ Set the stream content type. This must be set if it is different
575
+ from audio/mpeg.
576
+
577
+ legacy_icecast
578
+ This enables support for Icecast versions < 2.4.0, that do not
579
+ support the HTTP PUT method but the SOURCE method.
580
+
581
+ tls Establish a TLS (HTTPS) connection to Icecast.
582
+
583
+ icecast://[<username>[:<password>]@]<server>:<port>/<mountpoint>
584
+
585
+ ipfs
586
+ InterPlanetary File System (IPFS) protocol support. One can access
587
+ files stored on the IPFS network through so-called gateways. These are
588
+ http(s) endpoints. This protocol wraps the IPFS native protocols
589
+ (ipfs:// and ipns://) to be sent to such a gateway. Users can (and
590
+ should) host their own node which means this protocol will use one's
591
+ local gateway to access files on the IPFS network.
592
+
593
+ This protocol accepts the following options:
594
+
595
+ gateway
596
+ Defines the gateway to use. When not set, the protocol will first
597
+ try locating the local gateway by looking at $IPFS_GATEWAY,
598
+ $IPFS_PATH and "$HOME/.ipfs/", in that order.
599
+
600
+ One can use this protocol in 2 ways. Using IPFS:
601
+
602
+ ffplay ipfs://<hash>
603
+
604
+ Or the IPNS protocol (IPNS is mutable IPFS):
605
+
606
+ ffplay ipns://<hash>
607
+
608
+ mmst
609
+ MMS (Microsoft Media Server) protocol over TCP.
610
+
611
+ mmsh
612
+ MMS (Microsoft Media Server) protocol over HTTP.
613
+
614
+ The required syntax is:
615
+
616
+ mmsh://<server>[:<port>][/<app>][/<playpath>]
617
+
618
+ md5
619
+ MD5 output protocol.
620
+
621
+ Computes the MD5 hash of the data to be written, and on close writes
622
+ this to the designated output or stdout if none is specified. It can be
623
+ used to test muxers without writing an actual file.
624
+
625
+ Some examples follow.
626
+
627
+ # Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
628
+ ffmpeg -i input.flv -f avi -y md5:output.avi.md5
629
+
630
+ # Write the MD5 hash of the encoded AVI file to stdout.
631
+ ffmpeg -i input.flv -f avi -y md5:
632
+
633
+ Note that some formats (typically MOV) require the output protocol to
634
+ be seekable, so they will fail with the MD5 output protocol.
635
+
636
+ pipe
637
+ UNIX pipe access protocol.
638
+
639
+ Read and write from UNIX pipes.
640
+
641
+ The accepted syntax is:
642
+
643
+ pipe:[<number>]
644
+
645
+ If fd isn't specified, number is the number corresponding to the file
646
+ descriptor of the pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).
647
+ If number is not specified, by default the stdout file descriptor will
648
+ be used for writing, stdin for reading.
649
+
650
+ For example to read from stdin with ffmpeg:
651
+
652
+ cat test.wav | ffmpeg -i pipe:0
653
+ # ...this is the same as...
654
+ cat test.wav | ffmpeg -i pipe:
655
+
656
+ For writing to stdout with ffmpeg:
657
+
658
+ ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
659
+ # ...this is the same as...
660
+ ffmpeg -i test.wav -f avi pipe: | cat > test.avi
661
+
662
+ This protocol accepts the following options:
663
+
664
+ blocksize
665
+ Set I/O operation maximum block size, in bytes. Default value is
666
+ "INT_MAX", which results in not limiting the requested block size.
667
+ Setting this value reasonably low improves user termination request
668
+ reaction time, which is valuable if data transmission is slow.
669
+
670
+ fd Set file descriptor.
671
+
672
+ Note that some formats (typically MOV), require the output protocol to
673
+ be seekable, so they will fail with the pipe output protocol.
674
+
675
+ prompeg
676
+ Pro-MPEG Code of Practice #3 Release 2 FEC protocol.
677
+
678
+ The Pro-MPEG CoP#3 FEC is a 2D parity-check forward error correction
679
+ mechanism for MPEG-2 Transport Streams sent over RTP.
680
+
681
+ This protocol must be used in conjunction with the "rtp_mpegts" muxer
682
+ and the "rtp" protocol.
683
+
684
+ The required syntax is:
685
+
686
+ -f rtp_mpegts -fec prompeg=<option>=<val>... rtp://<hostname>:<port>
687
+
688
+ The destination UDP ports are "port + 2" for the column FEC stream and
689
+ "port + 4" for the row FEC stream.
690
+
691
+ This protocol accepts the following options:
692
+
693
+ l=n The number of columns (4-20, LxD <= 100)
694
+
695
+ d=n The number of rows (4-20, LxD <= 100)
696
+
697
+ Example usage:
698
+
699
+ -f rtp_mpegts -fec prompeg=l=8:d=4 rtp://<hostname>:<port>
700
+
701
+ rist
702
+ Reliable Internet Streaming Transport protocol
703
+
704
+ The accepted options are:
705
+
706
+ rist_profile
707
+ Supported values:
708
+
709
+ simple
710
+ main
711
+ This one is default.
712
+
713
+ advanced
714
+ buffer_size
715
+ Set internal RIST buffer size in milliseconds for retransmission of
716
+ data. Default value is 0 which means the librist default (1 sec).
717
+ Maximum value is 30 seconds.
718
+
719
+ fifo_size
720
+ Size of the librist receiver output fifo in number of packets. This
721
+ must be a power of 2. Defaults to 8192 (vs the librist default of
722
+ 1024).
723
+
724
+ overrun_nonfatal=1|0
725
+ Survive in case of librist fifo buffer overrun. Default value is 0.
726
+
727
+ pkt_size
728
+ Set maximum packet size for sending data. 1316 by default.
729
+
730
+ log_level
731
+ Set loglevel for RIST logging messages. You only need to set this
732
+ if you explicitly want to enable debug level messages or packet
733
+ loss simulation, otherwise the regular loglevel is respected.
734
+
735
+ secret
736
+ Set override of encryption secret, by default is unset.
737
+
738
+ encryption
739
+ Set encryption type, by default is disabled. Acceptable values are
740
+ 128 and 256.
741
+
742
+ rtmp
743
+ Real-Time Messaging Protocol.
744
+
745
+ The Real-Time Messaging Protocol (RTMP) is used for streaming
746
+ multimedia content across a TCP/IP network.
747
+
748
+ The required syntax is:
749
+
750
+ rtmp://[<username>:<password>@]<server>[:<port>][/<app>][/<instance>][/<playpath>]
751
+
752
+ The accepted parameters are:
753
+
754
+ username
755
+ An optional username (mostly for publishing).
756
+
757
+ password
758
+ An optional password (mostly for publishing).
759
+
760
+ server
761
+ The address of the RTMP server.
762
+
763
+ port
764
+ The number of the TCP port to use (by default is 1935).
765
+
766
+ app It is the name of the application to access. It usually corresponds
767
+ to the path where the application is installed on the RTMP server
768
+ (e.g. /ondemand/, /flash/live/, etc.). You can override the value
769
+ parsed from the URI through the "rtmp_app" option, too.
770
+
771
+ playpath
772
+ It is the path or name of the resource to play with reference to
773
+ the application specified in app, may be prefixed by "mp4:". You
774
+ can override the value parsed from the URI through the
775
+ "rtmp_playpath" option, too.
776
+
777
+ listen
778
+ Act as a server, listening for an incoming connection.
779
+
780
+ timeout
781
+ Maximum time to wait for the incoming connection. Implies listen.
782
+
783
+ Additionally, the following parameters can be set via command line
784
+ options (or in code via "AVOption"s):
785
+
786
+ rtmp_app
787
+ Name of application to connect on the RTMP server. This option
788
+ overrides the parameter specified in the URI.
789
+
790
+ rtmp_buffer
791
+ Set the client buffer time in milliseconds. The default is 3000.
792
+
793
+ rtmp_conn
794
+ Extra arbitrary AMF connection parameters, parsed from a string,
795
+ e.g. like "B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0". Each
796
+ value is prefixed by a single character denoting the type, B for
797
+ Boolean, N for number, S for string, O for object, or Z for null,
798
+ followed by a colon. For Booleans the data must be either 0 or 1
799
+ for FALSE or TRUE, respectively. Likewise for Objects the data
800
+ must be 0 or 1 to end or begin an object, respectively. Data items
801
+ in subobjects may be named, by prefixing the type with 'N' and
802
+ specifying the name before the value (i.e. "NB:myFlag:1"). This
803
+ option may be used multiple times to construct arbitrary AMF
804
+ sequences.
805
+
806
+ rtmp_enhanced_codecs
807
+ Specify the list of codecs the client advertises to support in an
808
+ enhanced RTMP stream. This option should be set to a comma
809
+ separated list of fourcc values, like "hvc1,av01,vp09" for multiple
810
+ codecs or "hvc1" for only one codec. The specified list will be
811
+ presented in the "fourCcLive" property of the Connect Command
812
+ Message.
813
+
814
+ rtmp_flashver
815
+ Version of the Flash plugin used to run the SWF player. The default
816
+ is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0
817
+ (compatible; <libavformat version>).)
818
+
819
+ rtmp_flush_interval
820
+ Number of packets flushed in the same request (RTMPT only). The
821
+ default is 10.
822
+
823
+ rtmp_live
824
+ Specify that the media is a live stream. No resuming or seeking in
825
+ live streams is possible. The default value is "any", which means
826
+ the subscriber first tries to play the live stream specified in the
827
+ playpath. If a live stream of that name is not found, it plays the
828
+ recorded stream. The other possible values are "live" and
829
+ "recorded".
830
+
831
+ rtmp_pageurl
832
+ URL of the web page in which the media was embedded. By default no
833
+ value will be sent.
834
+
835
+ rtmp_playpath
836
+ Stream identifier to play or to publish. This option overrides the
837
+ parameter specified in the URI.
838
+
839
+ rtmp_subscribe
840
+ Name of live stream to subscribe to. By default no value will be
841
+ sent. It is only sent if the option is specified or if rtmp_live
842
+ is set to live.
843
+
844
+ rtmp_swfhash
845
+ SHA256 hash of the decompressed SWF file (32 bytes).
846
+
847
+ rtmp_swfsize
848
+ Size of the decompressed SWF file, required for SWFVerification.
849
+
850
+ rtmp_swfurl
851
+ URL of the SWF player for the media. By default no value will be
852
+ sent.
853
+
854
+ rtmp_swfverify
855
+ URL to player swf file, compute hash/size automatically.
856
+
857
+ rtmp_tcurl
858
+ URL of the target stream. Defaults to proto://host[:port]/app.
859
+
860
+ tcp_nodelay=1|0
861
+ Set TCP_NODELAY to disable Nagle's algorithm. Default value is 0.
862
+
863
+ Remark: Writing to the socket is currently not optimized to
864
+ minimize system calls and reduces the efficiency / effect of
865
+ TCP_NODELAY.
866
+
867
+ For example to read with ffplay a multimedia resource named "sample"
868
+ from the application "vod" from an RTMP server "myserver":
869
+
870
+ ffplay rtmp://myserver/vod/sample
871
+
872
+ To publish to a password protected server, passing the playpath and app
873
+ names separately:
874
+
875
+ ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
876
+
877
+ rtmpe
878
+ Encrypted Real-Time Messaging Protocol.
879
+
880
+ The Encrypted Real-Time Messaging Protocol (RTMPE) is used for
881
+ streaming multimedia content within standard cryptographic primitives,
882
+ consisting of Diffie-Hellman key exchange and HMACSHA256, generating a
883
+ pair of RC4 keys.
884
+
885
+ rtmps
886
+ Real-Time Messaging Protocol over a secure SSL connection.
887
+
888
+ The Real-Time Messaging Protocol (RTMPS) is used for streaming
889
+ multimedia content across an encrypted connection.
890
+
891
+ rtmpt
892
+ Real-Time Messaging Protocol tunneled through HTTP.
893
+
894
+ The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used
895
+ for streaming multimedia content within HTTP requests to traverse
896
+ firewalls.
897
+
898
+ rtmpte
899
+ Encrypted Real-Time Messaging Protocol tunneled through HTTP.
900
+
901
+ The Encrypted Real-Time Messaging Protocol tunneled through HTTP
902
+ (RTMPTE) is used for streaming multimedia content within HTTP requests
903
+ to traverse firewalls.
904
+
905
+ rtmpts
906
+ Real-Time Messaging Protocol tunneled through HTTPS.
907
+
908
+ The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is
909
+ used for streaming multimedia content within HTTPS requests to traverse
910
+ firewalls.
911
+
912
+ libsmbclient
913
+ libsmbclient permits one to manipulate CIFS/SMB network resources.
914
+
915
+ Following syntax is required.
916
+
917
+ smb://[[domain:]user[:password@]]server[/share[/path[/file]]]
918
+
919
+ This protocol accepts the following options.
920
+
921
+ timeout
922
+ Set timeout in milliseconds of socket I/O operations used by the
923
+ underlying low level operation. By default it is set to -1, which
924
+ means that the timeout is not specified.
925
+
926
+ truncate
927
+ Truncate existing files on write, if set to 1. A value of 0
928
+ prevents truncating. Default value is 1.
929
+
930
+ workgroup
931
+ Set the workgroup used for making connections. By default workgroup
932
+ is not specified.
933
+
934
+ For more information see: <http://www.samba.org/>.
935
+
936
+ libssh
937
+ Secure File Transfer Protocol via libssh
938
+
939
+ Read from or write to remote resources using SFTP protocol.
940
+
941
+ Following syntax is required.
942
+
943
+ sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
944
+
945
+ This protocol accepts the following options.
946
+
947
+ timeout
948
+ Set timeout of socket I/O operations used by the underlying low
949
+ level operation. By default it is set to -1, which means that the
950
+ timeout is not specified.
951
+
952
+ truncate
953
+ Truncate existing files on write, if set to 1. A value of 0
954
+ prevents truncating. Default value is 1.
955
+
956
+ private_key
957
+ Specify the path of the file containing private key to use during
958
+ authorization. By default libssh searches for keys in the ~/.ssh/
959
+ directory.
960
+
961
+ Example: Play a file stored on remote server.
962
+
963
+ ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
964
+
965
+ librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte
966
+ Real-Time Messaging Protocol and its variants supported through
967
+ librtmp.
968
+
969
+ Requires the presence of the librtmp headers and library during
970
+ configuration. You need to explicitly configure the build with
971
+ "--enable-librtmp". If enabled this will replace the native RTMP
972
+ protocol.
973
+
974
+ This protocol provides most client functions and a few server functions
975
+ needed to support RTMP, RTMP tunneled in HTTP (RTMPT), encrypted RTMP
976
+ (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled variants of these
977
+ encrypted types (RTMPTE, RTMPTS).
978
+
979
+ The required syntax is:
980
+
981
+ <rtmp_proto>://<server>[:<port>][/<app>][/<playpath>] <options>
982
+
983
+ where rtmp_proto is one of the strings "rtmp", "rtmpt", "rtmpe",
984
+ "rtmps", "rtmpte", "rtmpts" corresponding to each RTMP variant, and
985
+ server, port, app and playpath have the same meaning as specified for
986
+ the RTMP native protocol. options contains a list of space-separated
987
+ options of the form key=val.
988
+
989
+ See the librtmp manual page (man 3 librtmp) for more information.
990
+
991
+ For example, to stream a file in real-time to an RTMP server using
992
+ ffmpeg:
993
+
994
+ ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
995
+
996
+ To play the same stream using ffplay:
997
+
998
+ ffplay "rtmp://myserver/live/mystream live=1"
999
+
1000
+ rtp
1001
+ Real-time Transport Protocol.
1002
+
1003
+ The required syntax for an RTP URL is:
1004
+ rtp://hostname[:port][?option=val...]
1005
+
1006
+ port specifies the RTP port to use.
1007
+
1008
+ The following URL options are supported:
1009
+
1010
+ ttl=n
1011
+ Set the TTL (Time-To-Live) value (for multicast only).
1012
+
1013
+ rtcpport=n
1014
+ Set the remote RTCP port to n.
1015
+
1016
+ localrtpport=n
1017
+ Set the local RTP port to n.
1018
+
1019
+ localrtcpport=n'
1020
+ Set the local RTCP port to n.
1021
+
1022
+ pkt_size=n
1023
+ Set max packet size (in bytes) to n.
1024
+
1025
+ buffer_size=size
1026
+ Set the maximum UDP socket buffer size in bytes.
1027
+
1028
+ connect=0|1
1029
+ Do a "connect()" on the UDP socket (if set to 1) or not (if set to
1030
+ 0).
1031
+
1032
+ sources=ip[,ip]
1033
+ List allowed source IP addresses.
1034
+
1035
+ block=ip[,ip]
1036
+ List disallowed (blocked) source IP addresses.
1037
+
1038
+ write_to_source=0|1
1039
+ Send packets to the source address of the latest received packet
1040
+ (if set to 1) or to a default remote address (if set to 0).
1041
+
1042
+ localport=n
1043
+ Set the local RTP port to n.
1044
+
1045
+ localaddr=addr
1046
+ Local IP address of a network interface used for sending packets or
1047
+ joining multicast groups.
1048
+
1049
+ timeout=n
1050
+ Set timeout (in microseconds) of socket I/O operations to n.
1051
+
1052
+ This is a deprecated option. Instead, localrtpport should be used.
1053
+
1054
+ Important notes:
1055
+
1056
+ 1. If rtcpport is not set the RTCP port will be set to the RTP port
1057
+ value plus 1.
1058
+
1059
+ 2. If localrtpport (the local RTP port) is not set any available port
1060
+ will be used for the local RTP and RTCP ports.
1061
+
1062
+ 3. If localrtcpport (the local RTCP port) is not set it will be set to
1063
+ the local RTP port value plus 1.
1064
+
1065
+ rtsp
1066
+ Real-Time Streaming Protocol.
1067
+
1068
+ RTSP is not technically a protocol handler in libavformat, it is a
1069
+ demuxer and muxer. The demuxer supports both normal RTSP (with data
1070
+ transferred over RTP; this is used by e.g. Apple and Microsoft) and
1071
+ Real-RTSP (with data transferred over RDT).
1072
+
1073
+ The muxer can be used to send a stream using RTSP ANNOUNCE to a server
1074
+ supporting it (currently Darwin Streaming Server and Mischa
1075
+ Spiegelmock's <https://github.com/revmischa/rtsp-server>).
1076
+
1077
+ The required syntax for a RTSP url is:
1078
+
1079
+ rtsp://<hostname>[:<port>]/<path>
1080
+
1081
+ Options can be set on the ffmpeg/ffplay command line, or set in code
1082
+ via "AVOption"s or in "avformat_open_input".
1083
+
1084
+ Muxer
1085
+
1086
+ The following options are supported.
1087
+
1088
+ rtsp_transport
1089
+ Set RTSP transport protocols.
1090
+
1091
+ It accepts the following values:
1092
+
1093
+ udp Use UDP as lower transport protocol.
1094
+
1095
+ tcp Use TCP (interleaving within the RTSP control channel) as lower
1096
+ transport protocol.
1097
+
1098
+ Default value is 0.
1099
+
1100
+ rtsp_flags
1101
+ Set RTSP flags.
1102
+
1103
+ The following values are accepted:
1104
+
1105
+ latm
1106
+ Use MP4A-LATM packetization instead of MPEG4-GENERIC for AAC.
1107
+
1108
+ rfc2190
1109
+ Use RFC 2190 packetization instead of RFC 4629 for H.263.
1110
+
1111
+ skip_rtcp
1112
+ Don't send RTCP sender reports.
1113
+
1114
+ h264_mode0
1115
+ Use mode 0 for H.264 in RTP.
1116
+
1117
+ send_bye
1118
+ Send RTCP BYE packets when finishing.
1119
+
1120
+ Default value is 0.
1121
+
1122
+ min_port
1123
+ Set minimum local UDP port. Default value is 5000.
1124
+
1125
+ max_port
1126
+ Set maximum local UDP port. Default value is 65000.
1127
+
1128
+ buffer_size
1129
+ Set the maximum socket buffer size in bytes.
1130
+
1131
+ pkt_size
1132
+ Set max send packet size (in bytes). Default value is 1472.
1133
+
1134
+ Demuxer
1135
+
1136
+ The following options are supported.
1137
+
1138
+ initial_pause
1139
+ Do not start playing the stream immediately if set to 1. Default
1140
+ value is 0.
1141
+
1142
+ rtsp_transport
1143
+ Set RTSP transport protocols.
1144
+
1145
+ It accepts the following values:
1146
+
1147
+ udp Use UDP as lower transport protocol.
1148
+
1149
+ tcp Use TCP (interleaving within the RTSP control channel) as lower
1150
+ transport protocol.
1151
+
1152
+ udp_multicast
1153
+ Use UDP multicast as lower transport protocol.
1154
+
1155
+ http
1156
+ Use HTTP tunneling as lower transport protocol, which is useful
1157
+ for passing proxies.
1158
+
1159
+ https
1160
+ Use HTTPs tunneling as lower transport protocol, which is
1161
+ useful for passing proxies and widely used for security
1162
+ consideration.
1163
+
1164
+ Multiple lower transport protocols may be specified, in that case
1165
+ they are tried one at a time (if the setup of one fails, the next
1166
+ one is tried). For the muxer, only the tcp and udp options are
1167
+ supported.
1168
+
1169
+ rtsp_flags
1170
+ Set RTSP flags.
1171
+
1172
+ The following values are accepted:
1173
+
1174
+ filter_src
1175
+ Accept packets only from negotiated peer address and port.
1176
+
1177
+ listen
1178
+ Act as a server, listening for an incoming connection.
1179
+
1180
+ prefer_tcp
1181
+ Try TCP for RTP transport first, if TCP is available as RTSP
1182
+ RTP transport.
1183
+
1184
+ satip_raw
1185
+ Export raw MPEG-TS stream instead of demuxing. The flag will
1186
+ simply write out the raw stream, with the original PAT/PMT/PIDs
1187
+ intact.
1188
+
1189
+ Default value is none.
1190
+
1191
+ allowed_media_types
1192
+ Set media types to accept from the server.
1193
+
1194
+ The following flags are accepted:
1195
+
1196
+ video
1197
+ audio
1198
+ data
1199
+ subtitle
1200
+
1201
+ By default it accepts all media types.
1202
+
1203
+ min_port
1204
+ Set minimum local UDP port. Default value is 5000.
1205
+
1206
+ max_port
1207
+ Set maximum local UDP port. Default value is 65000.
1208
+
1209
+ listen_timeout
1210
+ Set maximum timeout (in seconds) to establish an initial
1211
+ connection. Setting listen_timeout > 0 sets rtsp_flags to listen.
1212
+ Default is -1 which means an infinite timeout when listen mode is
1213
+ set.
1214
+
1215
+ reorder_queue_size
1216
+ Set number of packets to buffer for handling of reordered packets.
1217
+
1218
+ timeout
1219
+ Set socket TCP I/O timeout in microseconds.
1220
+
1221
+ user_agent
1222
+ Override User-Agent header. If not specified, it defaults to the
1223
+ libavformat identifier string.
1224
+
1225
+ buffer_size
1226
+ Set the maximum socket buffer size in bytes.
1227
+
1228
+ When receiving data over UDP, the demuxer tries to reorder received
1229
+ packets (since they may arrive out of order, or packets may get lost
1230
+ totally). This can be disabled by setting the maximum demuxing delay to
1231
+ zero (via the "max_delay" field of AVFormatContext).
1232
+
1233
+ When watching multi-bitrate Real-RTSP streams with ffplay, the streams
1234
+ to display can be chosen with "-vst" n and "-ast" n for video and audio
1235
+ respectively, and can be switched on the fly by pressing "v" and "a".
1236
+
1237
+ Examples
1238
+
1239
+ The following examples all make use of the ffplay and ffmpeg tools.
1240
+
1241
+ o Watch a stream over UDP, with a max reordering delay of 0.5
1242
+ seconds:
1243
+
1244
+ ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
1245
+
1246
+ o Watch a stream tunneled over HTTP:
1247
+
1248
+ ffplay -rtsp_transport http rtsp://server/video.mp4
1249
+
1250
+ o Send a stream in realtime to a RTSP server, for others to watch:
1251
+
1252
+ ffmpeg -re -i <input> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
1253
+
1254
+ o Receive a stream in realtime:
1255
+
1256
+ ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <output>
1257
+
1258
+ sap
1259
+ Session Announcement Protocol (RFC 2974). This is not technically a
1260
+ protocol handler in libavformat, it is a muxer and demuxer. It is used
1261
+ for signalling of RTP streams, by announcing the SDP for the streams
1262
+ regularly on a separate port.
1263
+
1264
+ Muxer
1265
+
1266
+ The syntax for a SAP url given to the muxer is:
1267
+
1268
+ sap://<destination>[:<port>][?<options>]
1269
+
1270
+ The RTP packets are sent to destination on port port, or to port 5004
1271
+ if no port is specified. options is a "&"-separated list. The
1272
+ following options are supported:
1273
+
1274
+ announce_addr=address
1275
+ Specify the destination IP address for sending the announcements
1276
+ to. If omitted, the announcements are sent to the commonly used
1277
+ SAP announcement multicast address 224.2.127.254 (sap.mcast.net),
1278
+ or ff0e::2:7ffe if destination is an IPv6 address.
1279
+
1280
+ announce_port=port
1281
+ Specify the port to send the announcements on, defaults to 9875 if
1282
+ not specified.
1283
+
1284
+ ttl=ttl
1285
+ Specify the time to live value for the announcements and RTP
1286
+ packets, defaults to 255.
1287
+
1288
+ same_port=0|1
1289
+ If set to 1, send all RTP streams on the same port pair. If zero
1290
+ (the default), all streams are sent on unique ports, with each
1291
+ stream on a port 2 numbers higher than the previous. VLC/Live555
1292
+ requires this to be set to 1, to be able to receive the stream.
1293
+ The RTP stack in libavformat for receiving requires all streams to
1294
+ be sent on unique ports.
1295
+
1296
+ Example command lines follow.
1297
+
1298
+ To broadcast a stream on the local subnet, for watching in VLC:
1299
+
1300
+ ffmpeg -re -i <input> -f sap sap://224.0.0.255?same_port=1
1301
+
1302
+ Similarly, for watching in ffplay:
1303
+
1304
+ ffmpeg -re -i <input> -f sap sap://224.0.0.255
1305
+
1306
+ And for watching in ffplay, over IPv6:
1307
+
1308
+ ffmpeg -re -i <input> -f sap sap://[ff0e::1:2:3:4]
1309
+
1310
+ Demuxer
1311
+
1312
+ The syntax for a SAP url given to the demuxer is:
1313
+
1314
+ sap://[<address>][:<port>]
1315
+
1316
+ address is the multicast address to listen for announcements on, if
1317
+ omitted, the default 224.2.127.254 (sap.mcast.net) is used. port is the
1318
+ port that is listened on, 9875 if omitted.
1319
+
1320
+ The demuxers listens for announcements on the given address and port.
1321
+ Once an announcement is received, it tries to receive that particular
1322
+ stream.
1323
+
1324
+ Example command lines follow.
1325
+
1326
+ To play back the first stream announced on the normal SAP multicast
1327
+ address:
1328
+
1329
+ ffplay sap://
1330
+
1331
+ To play back the first stream announced on one the default IPv6 SAP
1332
+ multicast address:
1333
+
1334
+ ffplay sap://[ff0e::2:7ffe]
1335
+
1336
+ sctp
1337
+ Stream Control Transmission Protocol.
1338
+
1339
+ The accepted URL syntax is:
1340
+
1341
+ sctp://<host>:<port>[?<options>]
1342
+
1343
+ The protocol accepts the following options:
1344
+
1345
+ listen
1346
+ If set to any value, listen for an incoming connection. Outgoing
1347
+ connection is done by default.
1348
+
1349
+ max_streams
1350
+ Set the maximum number of streams. By default no limit is set.
1351
+
1352
+ srt
1353
+ Haivision Secure Reliable Transport Protocol via libsrt.
1354
+
1355
+ The supported syntax for a SRT URL is:
1356
+
1357
+ srt://<hostname>:<port>[?<options>]
1358
+
1359
+ options contains a list of &-separated options of the form key=val.
1360
+
1361
+ or
1362
+
1363
+ <options> srt://<hostname>:<port>
1364
+
1365
+ options contains a list of '-key val' options.
1366
+
1367
+ This protocol accepts the following options.
1368
+
1369
+ connect_timeout=milliseconds
1370
+ Connection timeout; SRT cannot connect for RTT > 1500 msec (2
1371
+ handshake exchanges) with the default connect timeout of 3 seconds.
1372
+ This option applies to the caller and rendezvous connection modes.
1373
+ The connect timeout is 10 times the value set for the rendezvous
1374
+ mode (which can be used as a workaround for this connection problem
1375
+ with earlier versions).
1376
+
1377
+ ffs=bytes
1378
+ Flight Flag Size (Window Size), in bytes. FFS is actually an
1379
+ internal parameter and you should set it to not less than
1380
+ recv_buffer_size and mss. The default value is relatively large,
1381
+ therefore unless you set a very large receiver buffer, you do not
1382
+ need to change this option. Default value is 25600.
1383
+
1384
+ inputbw=bytes/seconds
1385
+ Sender nominal input rate, in bytes per seconds. Used along with
1386
+ oheadbw, when maxbw is set to relative (0), to calculate maximum
1387
+ sending rate when recovery packets are sent along with the main
1388
+ media stream: inputbw * (100 + oheadbw) / 100 if inputbw is not set
1389
+ while maxbw is set to relative (0), the actual input rate is
1390
+ evaluated inside the library. Default value is 0.
1391
+
1392
+ iptos=tos
1393
+ IP Type of Service. Applies to sender only. Default value is 0xB8.
1394
+
1395
+ ipttl=ttl
1396
+ IP Time To Live. Applies to sender only. Default value is 64.
1397
+
1398
+ latency=microseconds
1399
+ Timestamp-based Packet Delivery Delay. Used to absorb bursts of
1400
+ missed packet retransmissions. This flag sets both rcvlatency and
1401
+ peerlatency to the same value. Note that prior to version 1.3.0
1402
+ this is the only flag to set the latency, however this is
1403
+ effectively equivalent to setting peerlatency, when side is sender
1404
+ and rcvlatency when side is receiver, and the bidirectional stream
1405
+ sending is not supported.
1406
+
1407
+ listen_timeout=microseconds
1408
+ Set socket listen timeout.
1409
+
1410
+ maxbw=bytes/seconds
1411
+ Maximum sending bandwidth, in bytes per seconds. -1 infinite
1412
+ (CSRTCC limit is 30mbps) 0 relative to input rate (see inputbw) >0
1413
+ absolute limit value Default value is 0 (relative)
1414
+
1415
+ mode=caller|listener|rendezvous
1416
+ Connection mode. caller opens client connection. listener starts
1417
+ server to listen for incoming connections. rendezvous use Rendez-
1418
+ Vous connection mode. Default value is caller.
1419
+
1420
+ mss=bytes
1421
+ Maximum Segment Size, in bytes. Used for buffer allocation and rate
1422
+ calculation using a packet counter assuming fully filled packets.
1423
+ The smallest MSS between the peers is used. This is 1500 by default
1424
+ in the overall internet. This is the maximum size of the UDP
1425
+ packet and can be only decreased, unless you have some unusual
1426
+ dedicated network settings. Default value is 1500.
1427
+
1428
+ nakreport=1|0
1429
+ If set to 1, Receiver will send `UMSG_LOSSREPORT` messages
1430
+ periodically until a lost packet is retransmitted or intentionally
1431
+ dropped. Default value is 1.
1432
+
1433
+ oheadbw=percents
1434
+ Recovery bandwidth overhead above input rate, in percents. See
1435
+ inputbw. Default value is 25%.
1436
+
1437
+ passphrase=string
1438
+ HaiCrypt Encryption/Decryption Passphrase string, length from 10 to
1439
+ 79 characters. The passphrase is the shared secret between the
1440
+ sender and the receiver. It is used to generate the Key Encrypting
1441
+ Key using PBKDF2 (Password-Based Key Derivation Function). It is
1442
+ used only if pbkeylen is non-zero. It is used on the receiver only
1443
+ if the received data is encrypted. The configured passphrase
1444
+ cannot be recovered (write-only).
1445
+
1446
+ enforced_encryption=1|0
1447
+ If true, both connection parties must have the same password set
1448
+ (including empty, that is, with no encryption). If the password
1449
+ doesn't match or only one side is unencrypted, the connection is
1450
+ rejected. Default is true.
1451
+
1452
+ kmrefreshrate=packets
1453
+ The number of packets to be transmitted after which the encryption
1454
+ key is switched to a new key. Default is -1. -1 means auto
1455
+ (0x1000000 in srt library). The range for this option is integers
1456
+ in the 0 - "INT_MAX".
1457
+
1458
+ kmpreannounce=packets
1459
+ The interval between when a new encryption key is sent and when
1460
+ switchover occurs. This value also applies to the subsequent
1461
+ interval between when switchover occurs and when the old encryption
1462
+ key is decommissioned. Default is -1. -1 means auto (0x1000 in srt
1463
+ library). The range for this option is integers in the 0 -
1464
+ "INT_MAX".
1465
+
1466
+ snddropdelay=microseconds
1467
+ The sender's extra delay before dropping packets. This delay is
1468
+ added to the default drop delay time interval value.
1469
+
1470
+ Special value -1: Do not drop packets on the sender at all.
1471
+
1472
+ payload_size=bytes
1473
+ Sets the maximum declared size of a packet transferred during the
1474
+ single call to the sending function in Live mode. Use 0 if this
1475
+ value isn't used (which is default in file mode). Default is -1
1476
+ (automatic), which typically means MPEG-TS; if you are going to use
1477
+ SRT to send any different kind of payload, such as, for example,
1478
+ wrapping a live stream in very small frames, then you can use a
1479
+ bigger maximum frame size, though not greater than 1456 bytes.
1480
+
1481
+ pkt_size=bytes
1482
+ Alias for payload_size.
1483
+
1484
+ peerlatency=microseconds
1485
+ The latency value (as described in rcvlatency) that is set by the
1486
+ sender side as a minimum value for the receiver.
1487
+
1488
+ pbkeylen=bytes
1489
+ Sender encryption key length, in bytes. Only can be set to 0, 16,
1490
+ 24 and 32. Enable sender encryption if not 0. Not required on
1491
+ receiver (set to 0), key size obtained from sender in HaiCrypt
1492
+ handshake. Default value is 0.
1493
+
1494
+ rcvlatency=microseconds
1495
+ The time that should elapse since the moment when the packet was
1496
+ sent and the moment when it's delivered to the receiver application
1497
+ in the receiving function. This time should be a buffer time large
1498
+ enough to cover the time spent for sending, unexpectedly extended
1499
+ RTT time, and the time needed to retransmit the lost UDP packet.
1500
+ The effective latency value will be the maximum of this options'
1501
+ value and the value of peerlatency set by the peer side. Before
1502
+ version 1.3.0 this option is only available as latency.
1503
+
1504
+ recv_buffer_size=bytes
1505
+ Set UDP receive buffer size, expressed in bytes.
1506
+
1507
+ send_buffer_size=bytes
1508
+ Set UDP send buffer size, expressed in bytes.
1509
+
1510
+ timeout=microseconds
1511
+ Set raise error timeouts for read, write and connect operations.
1512
+ Note that the SRT library has internal timeouts which can be
1513
+ controlled separately, the value set here is only a cap on those.
1514
+
1515
+ tlpktdrop=1|0
1516
+ Too-late Packet Drop. When enabled on receiver, it skips missing
1517
+ packets that have not been delivered in time and delivers the
1518
+ following packets to the application when their time-to-play has
1519
+ come. It also sends a fake ACK to the sender. When enabled on
1520
+ sender and enabled on the receiving peer, the sender drops the
1521
+ older packets that have no chance of being delivered in time. It
1522
+ was automatically enabled in the sender if the receiver supports
1523
+ it.
1524
+
1525
+ sndbuf=bytes
1526
+ Set send buffer size, expressed in bytes.
1527
+
1528
+ rcvbuf=bytes
1529
+ Set receive buffer size, expressed in bytes.
1530
+
1531
+ Receive buffer must not be greater than ffs.
1532
+
1533
+ lossmaxttl=packets
1534
+ The value up to which the Reorder Tolerance may grow. When Reorder
1535
+ Tolerance is > 0, then packet loss report is delayed until that
1536
+ number of packets come in. Reorder Tolerance increases every time a
1537
+ "belated" packet has come, but it wasn't due to retransmission
1538
+ (that is, when UDP packets tend to come out of order), with the
1539
+ difference between the latest sequence and this packet's sequence,
1540
+ and not more than the value of this option. By default it's 0,
1541
+ which means that this mechanism is turned off, and the loss report
1542
+ is always sent immediately upon experiencing a "gap" in sequences.
1543
+
1544
+ minversion
1545
+ The minimum SRT version that is required from the peer. A
1546
+ connection to a peer that does not satisfy the minimum version
1547
+ requirement will be rejected.
1548
+
1549
+ The version format in hex is 0xXXYYZZ for x.y.z in human readable
1550
+ form.
1551
+
1552
+ streamid=string
1553
+ A string limited to 512 characters that can be set on the socket
1554
+ prior to connecting. This stream ID will be able to be retrieved by
1555
+ the listener side from the socket that is returned from srt_accept
1556
+ and was connected by a socket with that set stream ID. SRT does not
1557
+ enforce any special interpretation of the contents of this string.
1558
+ This option doesnXt make sense in Rendezvous connection; the result
1559
+ might be that simply one side will override the value from the
1560
+ other side and itXs the matter of luck which one would win
1561
+
1562
+ srt_streamid=string
1563
+ Alias for streamid to avoid conflict with ffmpeg command line
1564
+ option.
1565
+
1566
+ smoother=live|file
1567
+ The type of Smoother used for the transmission for that socket,
1568
+ which is responsible for the transmission and congestion control.
1569
+ The Smoother type must be exactly the same on both connecting
1570
+ parties, otherwise the connection is rejected.
1571
+
1572
+ messageapi=1|0
1573
+ When set, this socket uses the Message API, otherwise it uses
1574
+ Buffer API. Note that in live mode (see transtype) thereXs only
1575
+ message API available. In File mode you can chose to use one of two
1576
+ modes:
1577
+
1578
+ Stream API (default, when this option is false). In this mode you
1579
+ may send as many data as you wish with one sending instruction, or
1580
+ even use dedicated functions that read directly from a file. The
1581
+ internal facility will take care of any speed and congestion
1582
+ control. When receiving, you can also receive as many data as
1583
+ desired, the data not extracted will be waiting for the next call.
1584
+ There is no boundary between data portions in the Stream mode.
1585
+
1586
+ Message API. In this mode your single sending instruction passes
1587
+ exactly one piece of data that has boundaries (a message). Contrary
1588
+ to Live mode, this message may span across multiple UDP packets and
1589
+ the only size limitation is that it shall fit as a whole in the
1590
+ sending buffer. The receiver shall use as large buffer as necessary
1591
+ to receive the message, otherwise the message will not be given up.
1592
+ When the message is not complete (not all packets received or there
1593
+ was a packet loss) it will not be given up.
1594
+
1595
+ transtype=live|file
1596
+ Sets the transmission type for the socket, in particular, setting
1597
+ this option sets multiple other parameters to their default values
1598
+ as required for a particular transmission type.
1599
+
1600
+ live: Set options as for live transmission. In this mode, you
1601
+ should send by one sending instruction only so many data that fit
1602
+ in one UDP packet, and limited to the value defined first in
1603
+ payload_size (1316 is default in this mode). There is no speed
1604
+ control in this mode, only the bandwidth control, if configured, in
1605
+ order to not exceed the bandwidth with the overhead transmission
1606
+ (retransmitted and control packets).
1607
+
1608
+ file: Set options as for non-live transmission. See messageapi for
1609
+ further explanations
1610
+
1611
+ linger=seconds
1612
+ The number of seconds that the socket waits for unsent data when
1613
+ closing. Default is -1. -1 means auto (off with 0 seconds in live
1614
+ mode, on with 180 seconds in file mode). The range for this option
1615
+ is integers in the 0 - "INT_MAX".
1616
+
1617
+ tsbpd=1|0
1618
+ When true, use Timestamp-based Packet Delivery mode. The default
1619
+ behavior depends on the transmission type: enabled in live mode,
1620
+ disabled in file mode.
1621
+
1622
+ For more information see: <https://github.com/Haivision/srt>.
1623
+
1624
+ srtp
1625
+ Secure Real-time Transport Protocol.
1626
+
1627
+ The accepted options are:
1628
+
1629
+ srtp_in_suite
1630
+ srtp_out_suite
1631
+ Select input and output encoding suites.
1632
+
1633
+ Supported values:
1634
+
1635
+ AES_CM_128_HMAC_SHA1_80
1636
+ SRTP_AES128_CM_HMAC_SHA1_80
1637
+ AES_CM_128_HMAC_SHA1_32
1638
+ SRTP_AES128_CM_HMAC_SHA1_32
1639
+ srtp_in_params
1640
+ srtp_out_params
1641
+ Set input and output encoding parameters, which are expressed by a
1642
+ base64-encoded representation of a binary block. The first 16 bytes
1643
+ of this binary block are used as master key, the following 14 bytes
1644
+ are used as master salt.
1645
+
1646
+ subfile
1647
+ Virtually extract a segment of a file or another stream. The
1648
+ underlying stream must be seekable.
1649
+
1650
+ Accepted options:
1651
+
1652
+ start
1653
+ Start offset of the extracted segment, in bytes.
1654
+
1655
+ end End offset of the extracted segment, in bytes. If set to 0,
1656
+ extract till end of file.
1657
+
1658
+ Examples:
1659
+
1660
+ Extract a chapter from a DVD VOB file (start and end sectors obtained
1661
+ externally and multiplied by 2048):
1662
+
1663
+ subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB
1664
+
1665
+ Play an AVI file directly from a TAR archive:
1666
+
1667
+ subfile,,start,183241728,end,366490624,,:archive.tar
1668
+
1669
+ Play a MPEG-TS file from start offset till end:
1670
+
1671
+ subfile,,start,32815239,end,0,,:video.ts
1672
+
1673
+ tee
1674
+ Writes the output to multiple protocols. The individual outputs are
1675
+ separated by |
1676
+
1677
+ tee:file://path/to/local/this.avi|file://path/to/local/that.avi
1678
+
1679
+ tcp
1680
+ Transmission Control Protocol.
1681
+
1682
+ The required syntax for a TCP url is:
1683
+
1684
+ tcp://<hostname>:<port>[?<options>]
1685
+
1686
+ options contains a list of &-separated options of the form key=val.
1687
+
1688
+ The list of supported options follows.
1689
+
1690
+ listen=2|1|0
1691
+ Listen for an incoming connection. 0 disables listen, 1 enables
1692
+ listen in single client mode, 2 enables listen in multi-client
1693
+ mode. Default value is 0.
1694
+
1695
+ local_addr=addr
1696
+ Local IP address of a network interface used for tcp socket
1697
+ connect.
1698
+
1699
+ local_port=port
1700
+ Local port used for tcp socket connect.
1701
+
1702
+ timeout=microseconds
1703
+ Set raise error timeout, expressed in microseconds.
1704
+
1705
+ This option is only relevant in read mode: if no data arrived in
1706
+ more than this time interval, raise error.
1707
+
1708
+ listen_timeout=milliseconds
1709
+ Set listen timeout, expressed in milliseconds.
1710
+
1711
+ recv_buffer_size=bytes
1712
+ Set receive buffer size, expressed bytes.
1713
+
1714
+ send_buffer_size=bytes
1715
+ Set send buffer size, expressed bytes.
1716
+
1717
+ tcp_nodelay=1|0
1718
+ Set TCP_NODELAY to disable Nagle's algorithm. Default value is 0.
1719
+
1720
+ Remark: Writing to the socket is currently not optimized to
1721
+ minimize system calls and reduces the efficiency / effect of
1722
+ TCP_NODELAY.
1723
+
1724
+ tcp_mss=bytes
1725
+ Set maximum segment size for outgoing TCP packets, expressed in
1726
+ bytes.
1727
+
1728
+ The following example shows how to setup a listening TCP connection
1729
+ with ffmpeg, which is then accessed with ffplay:
1730
+
1731
+ ffmpeg -i <input> -f <format> tcp://<hostname>:<port>?listen
1732
+ ffplay tcp://<hostname>:<port>
1733
+
1734
+ tls
1735
+ Transport Layer Security (TLS) / Secure Sockets Layer (SSL)
1736
+
1737
+ The required syntax for a TLS/SSL url is:
1738
+
1739
+ tls://<hostname>:<port>[?<options>]
1740
+
1741
+ The following parameters can be set via command line options (or in
1742
+ code via "AVOption"s):
1743
+
1744
+ ca_file, cafile=filename
1745
+ A file containing certificate authority (CA) root certificates to
1746
+ treat as trusted. If the linked TLS library contains a default this
1747
+ might not need to be specified for verification to work, but not
1748
+ all libraries and setups have defaults built in. The file must be
1749
+ in OpenSSL PEM format.
1750
+
1751
+ tls_verify=1|0
1752
+ If enabled, try to verify the peer that we are communicating with.
1753
+ Note, if using OpenSSL, this currently only makes sure that the
1754
+ peer certificate is signed by one of the root certificates in the
1755
+ CA database, but it does not validate that the certificate actually
1756
+ matches the host name we are trying to connect to. (With other
1757
+ backends, the host name is validated as well.)
1758
+
1759
+ This is disabled by default since it requires a CA database to be
1760
+ provided by the caller in many cases.
1761
+
1762
+ cert_file, cert=filename
1763
+ A file containing a certificate to use in the handshake with the
1764
+ peer. (When operating as server, in listen mode, this is more
1765
+ often required by the peer, while client certificates only are
1766
+ mandated in certain setups.)
1767
+
1768
+ key_file, key=filename
1769
+ A file containing the private key for the certificate.
1770
+
1771
+ listen=1|0
1772
+ If enabled, listen for connections on the provided port, and assume
1773
+ the server role in the handshake instead of the client role.
1774
+
1775
+ http_proxy
1776
+ The HTTP proxy to tunnel through, e.g. "http://example.com:1234".
1777
+ The proxy must support the CONNECT method.
1778
+
1779
+ Example command lines:
1780
+
1781
+ To create a TLS/SSL server that serves an input stream.
1782
+
1783
+ ffmpeg -i <input> -f <format> tls://<hostname>:<port>?listen&cert=<server.crt>&key=<server.key>
1784
+
1785
+ To play back a stream from the TLS/SSL server using ffplay:
1786
+
1787
+ ffplay tls://<hostname>:<port>
1788
+
1789
+ udp
1790
+ User Datagram Protocol.
1791
+
1792
+ The required syntax for an UDP URL is:
1793
+
1794
+ udp://<hostname>:<port>[?<options>]
1795
+
1796
+ options contains a list of &-separated options of the form key=val.
1797
+
1798
+ In case threading is enabled on the system, a circular buffer is used
1799
+ to store the incoming data, which allows one to reduce loss of data due
1800
+ to UDP socket buffer overruns. The fifo_size and overrun_nonfatal
1801
+ options are related to this buffer.
1802
+
1803
+ The list of supported options follows.
1804
+
1805
+ buffer_size=size
1806
+ Set the UDP maximum socket buffer size in bytes. This is used to
1807
+ set either the receive or send buffer size, depending on what the
1808
+ socket is used for. Default is 32 KB for output, 384 KB for input.
1809
+ See also fifo_size.
1810
+
1811
+ bitrate=bitrate
1812
+ If set to nonzero, the output will have the specified constant
1813
+ bitrate if the input has enough packets to sustain it.
1814
+
1815
+ burst_bits=bits
1816
+ When using bitrate this specifies the maximum number of bits in
1817
+ packet bursts.
1818
+
1819
+ localport=port
1820
+ Override the local UDP port to bind with.
1821
+
1822
+ localaddr=addr
1823
+ Local IP address of a network interface used for sending packets or
1824
+ joining multicast groups.
1825
+
1826
+ pkt_size=size
1827
+ Set the size in bytes of UDP packets.
1828
+
1829
+ reuse=1|0
1830
+ Explicitly allow or disallow reusing UDP sockets.
1831
+
1832
+ ttl=ttl
1833
+ Set the time to live value (for multicast only).
1834
+
1835
+ connect=1|0
1836
+ Initialize the UDP socket with "connect()". In this case, the
1837
+ destination address can't be changed with ff_udp_set_remote_url
1838
+ later. If the destination address isn't known at the start, this
1839
+ option can be specified in ff_udp_set_remote_url, too. This allows
1840
+ finding out the source address for the packets with getsockname,
1841
+ and makes writes return with AVERROR(ECONNREFUSED) if "destination
1842
+ unreachable" is received. For receiving, this gives the benefit of
1843
+ only receiving packets from the specified peer address/port.
1844
+
1845
+ sources=address[,address]
1846
+ Only receive packets sent from the specified addresses. In case of
1847
+ multicast, also subscribe to multicast traffic coming from these
1848
+ addresses only.
1849
+
1850
+ block=address[,address]
1851
+ Ignore packets sent from the specified addresses. In case of
1852
+ multicast, also exclude the source addresses in the multicast
1853
+ subscription.
1854
+
1855
+ fifo_size=units
1856
+ Set the UDP receiving circular buffer size, expressed as a number
1857
+ of packets with size of 188 bytes. If not specified defaults to
1858
+ 7*4096.
1859
+
1860
+ overrun_nonfatal=1|0
1861
+ Survive in case of UDP receiving circular buffer overrun. Default
1862
+ value is 0.
1863
+
1864
+ timeout=microseconds
1865
+ Set raise error timeout, expressed in microseconds.
1866
+
1867
+ This option is only relevant in read mode: if no data arrived in
1868
+ more than this time interval, raise error.
1869
+
1870
+ broadcast=1|0
1871
+ Explicitly allow or disallow UDP broadcasting.
1872
+
1873
+ Note that broadcasting may not work properly on networks having a
1874
+ broadcast storm protection.
1875
+
1876
+ Examples
1877
+
1878
+ o Use ffmpeg to stream over UDP to a remote endpoint:
1879
+
1880
+ ffmpeg -i <input> -f <format> udp://<hostname>:<port>
1881
+
1882
+ o Use ffmpeg to stream in mpegts format over UDP using 188 sized UDP
1883
+ packets, using a large input buffer:
1884
+
1885
+ ffmpeg -i <input> -f mpegts udp://<hostname>:<port>?pkt_size=188&buffer_size=65535
1886
+
1887
+ o Use ffmpeg to receive over UDP from a remote endpoint:
1888
+
1889
+ ffmpeg -i udp://[<multicast-address>]:<port> ...
1890
+
1891
+ unix
1892
+ Unix local socket
1893
+
1894
+ The required syntax for a Unix socket URL is:
1895
+
1896
+ unix://<filepath>
1897
+
1898
+ The following parameters can be set via command line options (or in
1899
+ code via "AVOption"s):
1900
+
1901
+ timeout
1902
+ Timeout in ms.
1903
+
1904
+ listen
1905
+ Create the Unix socket in listening mode.
1906
+
1907
+ zmq
1908
+ ZeroMQ asynchronous messaging using the libzmq library.
1909
+
1910
+ This library supports unicast streaming to multiple clients without
1911
+ relying on an external server.
1912
+
1913
+ The required syntax for streaming or connecting to a stream is:
1914
+
1915
+ zmq:tcp://ip-address:port
1916
+
1917
+ Example: Create a localhost stream on port 5555:
1918
+
1919
+ ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555
1920
+
1921
+ Multiple clients may connect to the stream using:
1922
+
1923
+ ffplay zmq:tcp://127.0.0.1:5555
1924
+
1925
+ Streaming to multiple clients is implemented using a ZeroMQ Pub-Sub
1926
+ pattern. The server side binds to a port and publishes data. Clients
1927
+ connect to the server (via IP address/port) and subscribe to the
1928
+ stream. The order in which the server and client start generally does
1929
+ not matter.
1930
+
1931
+ ffmpeg must be compiled with the --enable-libzmq option to support this
1932
+ protocol.
1933
+
1934
+ Options can be set on the ffmpeg/ffplay command line. The following
1935
+ options are supported:
1936
+
1937
+ pkt_size
1938
+ Forces the maximum packet size for sending/receiving data. The
1939
+ default value is 131,072 bytes. On the server side, this sets the
1940
+ maximum size of sent packets via ZeroMQ. On the clients, it sets an
1941
+ internal buffer size for receiving packets. Note that pkt_size on
1942
+ the clients should be equal to or greater than pkt_size on the
1943
+ server. Otherwise the received message may be truncated causing
1944
+ decoding errors.
1945
+
1946
+ SEE ALSO
1947
+ ffmpeg(1), ffplay(1), ffprobe(1), libavformat(3)
1948
+
1949
+ AUTHORS
1950
+ The FFmpeg developers.
1951
+
1952
+ For details about the authorship, see the Git history of the project
1953
+ (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
1954
+ the FFmpeg source directory, or browsing the online repository at
1955
+ <https://git.ffmpeg.org/ffmpeg>.
1956
+
1957
+ Maintainers for the specific components are listed in the file
1958
+ MAINTAINERS in the source code tree.
1959
+
1960
+ FFMPEG-PROTOCOLS(1)
ffmpeg-6.1-amd64-static/manpages/ffmpeg-resampler.txt ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ uchl, used_chlayout
21
+ Set used input channel layout. Default is unset. This option is
22
+ only used for special remapping.
23
+
24
+ isr, in_sample_rate
25
+ Set the input sample rate. Default value is 0.
26
+
27
+ osr, out_sample_rate
28
+ Set the output sample rate. Default value is 0.
29
+
30
+ isf, in_sample_fmt
31
+ Specify the input sample format. It is set by default to "none".
32
+
33
+ osf, out_sample_fmt
34
+ Specify the output sample format. It is set by default to "none".
35
+
36
+ tsf, internal_sample_fmt
37
+ Set the internal sample format. Default value is "none". This will
38
+ automatically be chosen when it is not explicitly set.
39
+
40
+ ichl, in_chlayout
41
+ ochl, out_chlayout
42
+ Set the input/output channel layout.
43
+
44
+ See the Channel Layout section in the ffmpeg-utils(1) manual for
45
+ the required syntax.
46
+
47
+ clev, center_mix_level
48
+ Set the center mix level. It is a value expressed in deciBel, and
49
+ must be in the interval [-32,32].
50
+
51
+ slev, surround_mix_level
52
+ Set the surround mix level. It is a value expressed in deciBel, and
53
+ must be in the interval [-32,32].
54
+
55
+ lfe_mix_level
56
+ Set LFE mix into non LFE level. It is used when there is a LFE
57
+ input but no LFE output. It is a value expressed in deciBel, and
58
+ must be in the interval [-32,32].
59
+
60
+ rmvol, rematrix_volume
61
+ Set rematrix volume. Default value is 1.0.
62
+
63
+ rematrix_maxval
64
+ Set maximum output value for rematrixing. This can be used to
65
+ prevent clipping vs. preventing volume reduction. A value of 1.0
66
+ prevents clipping.
67
+
68
+ flags, swr_flags
69
+ Set flags used by the converter. Default value is 0.
70
+
71
+ It supports the following individual flags:
72
+
73
+ res force resampling, this flag forces resampling to be used even
74
+ when the input and output sample rates match.
75
+
76
+ dither_scale
77
+ Set the dither scale. Default value is 1.
78
+
79
+ dither_method
80
+ Set dither method. Default value is 0.
81
+
82
+ Supported values:
83
+
84
+ rectangular
85
+ select rectangular dither
86
+
87
+ triangular
88
+ select triangular dither
89
+
90
+ triangular_hp
91
+ select triangular dither with high pass
92
+
93
+ lipshitz
94
+ select Lipshitz noise shaping dither.
95
+
96
+ shibata
97
+ select Shibata noise shaping dither.
98
+
99
+ low_shibata
100
+ select low Shibata noise shaping dither.
101
+
102
+ high_shibata
103
+ select high Shibata noise shaping dither.
104
+
105
+ f_weighted
106
+ select f-weighted noise shaping dither
107
+
108
+ modified_e_weighted
109
+ select modified-e-weighted noise shaping dither
110
+
111
+ improved_e_weighted
112
+ select improved-e-weighted noise shaping dither
113
+
114
+ resampler
115
+ Set resampling engine. Default value is swr.
116
+
117
+ Supported values:
118
+
119
+ swr select the native SW Resampler; filter options precision and
120
+ cheby are not applicable in this case.
121
+
122
+ soxr
123
+ select the SoX Resampler (where available); compensation, and
124
+ filter options filter_size, phase_shift, exact_rational,
125
+ filter_type & kaiser_beta, are not applicable in this case.
126
+
127
+ filter_size
128
+ For swr only, set resampling filter size, default value is 32.
129
+
130
+ phase_shift
131
+ For swr only, set resampling phase shift, default value is 10, and
132
+ must be in the interval [0,30].
133
+
134
+ linear_interp
135
+ Use linear interpolation when enabled (the default). Disable it if
136
+ you want to preserve speed instead of quality when exact_rational
137
+ fails.
138
+
139
+ exact_rational
140
+ For swr only, when enabled, try to use exact phase_count based on
141
+ input and output sample rate. However, if it is larger than "1 <<
142
+ phase_shift", the phase_count will be "1 << phase_shift" as
143
+ fallback. Default is enabled.
144
+
145
+ cutoff
146
+ Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must
147
+ be a float value between 0 and 1. Default value is 0.97 with swr,
148
+ and 0.91 with soxr (which, with a sample-rate of 44100, preserves
149
+ the entire audio band to 20kHz).
150
+
151
+ precision
152
+ For soxr only, the precision in bits to which the resampled signal
153
+ will be calculated. The default value of 20 (which, with suitable
154
+ dithering, is appropriate for a destination bit-depth of 16) gives
155
+ SoX's 'High Quality'; a value of 28 gives SoX's 'Very High
156
+ Quality'.
157
+
158
+ cheby
159
+ For soxr only, selects passband rolloff none (Chebyshev) & higher-
160
+ precision approximation for 'irrational' ratios. Default value is
161
+ 0.
162
+
163
+ async
164
+ For swr only, simple 1 parameter audio sync to timestamps using
165
+ stretching, squeezing, filling and trimming. Setting this to 1 will
166
+ enable filling and trimming, larger values represent the maximum
167
+ amount in samples that the data may be stretched or squeezed for
168
+ each second. Default value is 0, thus no compensation is applied
169
+ to make the samples match the audio timestamps.
170
+
171
+ first_pts
172
+ For swr only, assume the first pts should be this value. The time
173
+ unit is 1 / sample rate. This allows for padding/trimming at the
174
+ start of stream. By default, no assumption is made about the first
175
+ frame's expected pts, so no padding or trimming is done. For
176
+ example, this could be set to 0 to pad the beginning with silence
177
+ if an audio stream starts after the video stream or to trim any
178
+ samples with a negative pts due to encoder delay.
179
+
180
+ min_comp
181
+ For swr only, set the minimum difference between timestamps and
182
+ audio data (in seconds) to trigger stretching/squeezing/filling or
183
+ trimming of the data to make it match the timestamps. The default
184
+ is that stretching/squeezing/filling and trimming is disabled
185
+ (min_comp = "FLT_MAX").
186
+
187
+ min_hard_comp
188
+ For swr only, set the minimum difference between timestamps and
189
+ audio data (in seconds) to trigger adding/dropping samples to make
190
+ it match the timestamps. This option effectively is a threshold to
191
+ select between hard (trim/fill) and soft (squeeze/stretch)
192
+ compensation. Note that all compensation is by default disabled
193
+ through min_comp. The default is 0.1.
194
+
195
+ comp_duration
196
+ For swr only, set duration (in seconds) over which data is
197
+ stretched/squeezed to make it match the timestamps. Must be a non-
198
+ negative double float value, default value is 1.0.
199
+
200
+ max_soft_comp
201
+ For swr only, set maximum factor by which data is
202
+ stretched/squeezed to make it match the timestamps. Must be a non-
203
+ negative double float value, default value is 0.
204
+
205
+ matrix_encoding
206
+ Select matrixed stereo encoding.
207
+
208
+ It accepts the following values:
209
+
210
+ none
211
+ select none
212
+
213
+ dolby
214
+ select Dolby
215
+
216
+ dplii
217
+ select Dolby Pro Logic II
218
+
219
+ Default value is "none".
220
+
221
+ filter_type
222
+ For swr only, select resampling filter type. This only affects
223
+ resampling operations.
224
+
225
+ It accepts the following values:
226
+
227
+ cubic
228
+ select cubic
229
+
230
+ blackman_nuttall
231
+ select Blackman Nuttall windowed sinc
232
+
233
+ kaiser
234
+ select Kaiser windowed sinc
235
+
236
+ kaiser_beta
237
+ For swr only, set Kaiser window beta value. Must be a double float
238
+ value in the interval [2,16], default value is 9.
239
+
240
+ output_sample_bits
241
+ For swr only, set number of used output sample bits for dithering.
242
+ Must be an integer in the interval [0,64], default value is 0,
243
+ which means it's not used.
244
+
245
+ SEE ALSO
246
+ ffmpeg(1), ffplay(1), ffprobe(1), libswresample(3)
247
+
248
+ AUTHORS
249
+ The FFmpeg developers.
250
+
251
+ For details about the authorship, see the Git history of the project
252
+ (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
253
+ the FFmpeg source directory, or browsing the online repository at
254
+ <https://git.ffmpeg.org/ffmpeg>.
255
+
256
+ Maintainers for the specific components are listed in the file
257
+ MAINTAINERS in the source code tree.
258
+
259
+ FFMPEG-RESAMPLER(1)
ffmpeg-6.1-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
+ (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
150
+ the FFmpeg source directory, or browsing the online repository at
151
+ <https://git.ffmpeg.org/ffmpeg>.
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-6.1-amd64-static/manpages/ffmpeg-utils.txt ADDED
@@ -0,0 +1,1256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ 3.1.2
850
+ FL+FR+FC+LFE+TFL+TFR
851
+
852
+ hexagonal
853
+ FL+FR+FC+BL+BR+BC
854
+
855
+ 6.1 FL+FR+FC+LFE+BC+SL+SR
856
+
857
+ 6.1 FL+FR+FC+LFE+BL+BR+BC
858
+
859
+ 6.1(front)
860
+ FL+FR+LFE+FLC+FRC+SL+SR
861
+
862
+ 7.0 FL+FR+FC+BL+BR+SL+SR
863
+
864
+ 7.0(front)
865
+ FL+FR+FC+FLC+FRC+SL+SR
866
+
867
+ 7.1 FL+FR+FC+LFE+BL+BR+SL+SR
868
+
869
+ 7.1(wide)
870
+ FL+FR+FC+LFE+BL+BR+FLC+FRC
871
+
872
+ 7.1(wide-side)
873
+ FL+FR+FC+LFE+FLC+FRC+SL+SR
874
+
875
+ 5.1.2
876
+ FL+FR+FC+LFE+BL+BR+TFL+TFR
877
+
878
+ octagonal
879
+ FL+FR+FC+BL+BR+BC+SL+SR
880
+
881
+ cube
882
+ FL+FR+BL+BR+TFL+TFR+TBL+TBR
883
+
884
+ 5.1.4
885
+ FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR
886
+
887
+ 7.1.2
888
+ FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR
889
+
890
+ 7.1.4
891
+ FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR
892
+
893
+ hexadecagonal
894
+ FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
895
+
896
+ downmix
897
+ DL+DR
898
+
899
+ 22.2
900
+ FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR
901
+
902
+ A custom channel layout can be specified as a sequence of terms,
903
+ separated by '+'. Each term can be:
904
+
905
+ o the name of a single channel (e.g. FL, FR, FC, LFE, etc.), each
906
+ optionally containing a custom name after a '@', (e.g. FL@Left,
907
+ FR@Right, FC@Center, LFE@Low_Frequency, etc.)
908
+
909
+ A standard channel layout can be specified by the following:
910
+
911
+ o the name of a single channel (e.g. FL, FR, FC, LFE, etc.)
912
+
913
+ o the name of a standard channel layout (e.g. mono, stereo, 4.0,
914
+ quad, 5.0, etc.)
915
+
916
+ o a number of channels, in decimal, followed by 'c', yielding the
917
+ default channel layout for that number of channels (see the
918
+ function "av_channel_layout_default"). Note that not all channel
919
+ counts have a default layout.
920
+
921
+ o a number of channels, in decimal, followed by 'C', yielding an
922
+ unknown channel layout with the specified number of channels. Note
923
+ that not all channel layout specification strings support unknown
924
+ channel layouts.
925
+
926
+ o a channel layout mask, in hexadecimal starting with "0x" (see the
927
+ "AV_CH_*" macros in libavutil/channel_layout.h.
928
+
929
+ Before libavutil version 53 the trailing character "c" to specify a
930
+ number of channels was optional, but now it is required, while a
931
+ channel layout mask can also be specified as a decimal number (if and
932
+ only if not followed by "c" or "C").
933
+
934
+ See also the function "av_channel_layout_from_string" defined in
935
+ libavutil/channel_layout.h.
936
+
937
+ EXPRESSION EVALUATION
938
+ When evaluating an arithmetic expression, FFmpeg uses an internal
939
+ formula evaluator, implemented through the libavutil/eval.h interface.
940
+
941
+ An expression may contain unary, binary operators, constants, and
942
+ functions.
943
+
944
+ Two expressions expr1 and expr2 can be combined to form another
945
+ expression "expr1;expr2". expr1 and expr2 are evaluated in turn, and
946
+ the new expression evaluates to the value of expr2.
947
+
948
+ The following binary operators are available: "+", "-", "*", "/", "^".
949
+
950
+ The following unary operators are available: "+", "-".
951
+
952
+ The following functions are available:
953
+
954
+ abs(x)
955
+ Compute absolute value of x.
956
+
957
+ acos(x)
958
+ Compute arccosine of x.
959
+
960
+ asin(x)
961
+ Compute arcsine of x.
962
+
963
+ atan(x)
964
+ Compute arctangent of x.
965
+
966
+ atan2(x, y)
967
+ Compute principal value of the arc tangent of y/x.
968
+
969
+ between(x, min, max)
970
+ Return 1 if x is greater than or equal to min and lesser than or
971
+ equal to max, 0 otherwise.
972
+
973
+ bitand(x, y)
974
+ bitor(x, y)
975
+ Compute bitwise and/or operation on x and y.
976
+
977
+ The results of the evaluation of x and y are converted to integers
978
+ before executing the bitwise operation.
979
+
980
+ Note that both the conversion to integer and the conversion back to
981
+ floating point can lose precision. Beware of unexpected results for
982
+ large numbers (usually 2^53 and larger).
983
+
984
+ ceil(expr)
985
+ Round the value of expression expr upwards to the nearest integer.
986
+ For example, "ceil(1.5)" is "2.0".
987
+
988
+ clip(x, min, max)
989
+ Return the value of x clipped between min and max.
990
+
991
+ cos(x)
992
+ Compute cosine of x.
993
+
994
+ cosh(x)
995
+ Compute hyperbolic cosine of x.
996
+
997
+ eq(x, y)
998
+ Return 1 if x and y are equivalent, 0 otherwise.
999
+
1000
+ exp(x)
1001
+ Compute exponential of x (with base "e", the Euler's number).
1002
+
1003
+ floor(expr)
1004
+ Round the value of expression expr downwards to the nearest
1005
+ integer. For example, "floor(-1.5)" is "-2.0".
1006
+
1007
+ gauss(x)
1008
+ Compute Gauss function of x, corresponding to "exp(-x*x/2) /
1009
+ sqrt(2*PI)".
1010
+
1011
+ gcd(x, y)
1012
+ Return the greatest common divisor of x and y. If both x and y are
1013
+ 0 or either or both are less than zero then behavior is undefined.
1014
+
1015
+ gt(x, y)
1016
+ Return 1 if x is greater than y, 0 otherwise.
1017
+
1018
+ gte(x, y)
1019
+ Return 1 if x is greater than or equal to y, 0 otherwise.
1020
+
1021
+ hypot(x, y)
1022
+ This function is similar to the C function with the same name; it
1023
+ returns "sqrt(x*x + y*y)", the length of the hypotenuse of a right
1024
+ triangle with sides of length x and y, or the distance of the point
1025
+ (x, y) from the origin.
1026
+
1027
+ if(x, y)
1028
+ Evaluate x, and if the result is non-zero return the result of the
1029
+ evaluation of y, return 0 otherwise.
1030
+
1031
+ if(x, y, z)
1032
+ Evaluate x, and if the result is non-zero return the evaluation
1033
+ result of y, otherwise the evaluation result of z.
1034
+
1035
+ ifnot(x, y)
1036
+ Evaluate x, and if the result is zero return the result of the
1037
+ evaluation of y, return 0 otherwise.
1038
+
1039
+ ifnot(x, y, z)
1040
+ Evaluate x, and if the result is zero return the evaluation result
1041
+ of y, otherwise the evaluation result of z.
1042
+
1043
+ isinf(x)
1044
+ Return 1.0 if x is +/-INFINITY, 0.0 otherwise.
1045
+
1046
+ isnan(x)
1047
+ Return 1.0 if x is NAN, 0.0 otherwise.
1048
+
1049
+ ld(var)
1050
+ Load the value of the internal variable with number var, which was
1051
+ previously stored with st(var, expr). The function returns the
1052
+ loaded value.
1053
+
1054
+ lerp(x, y, z)
1055
+ Return linear interpolation between x and y by amount of z.
1056
+
1057
+ log(x)
1058
+ Compute natural logarithm of x.
1059
+
1060
+ lt(x, y)
1061
+ Return 1 if x is lesser than y, 0 otherwise.
1062
+
1063
+ lte(x, y)
1064
+ Return 1 if x is lesser than or equal to y, 0 otherwise.
1065
+
1066
+ max(x, y)
1067
+ Return the maximum between x and y.
1068
+
1069
+ min(x, y)
1070
+ Return the minimum between x and y.
1071
+
1072
+ mod(x, y)
1073
+ Compute the remainder of division of x by y.
1074
+
1075
+ not(expr)
1076
+ Return 1.0 if expr is zero, 0.0 otherwise.
1077
+
1078
+ pow(x, y)
1079
+ Compute the power of x elevated y, it is equivalent to "(x)^(y)".
1080
+
1081
+ print(t)
1082
+ print(t, l)
1083
+ Print the value of expression t with loglevel l. If l is not
1084
+ specified then a default log level is used. Returns the value of
1085
+ the expression printed.
1086
+
1087
+ Prints t with loglevel l
1088
+
1089
+ random(x)
1090
+ Return a pseudo random value between 0.0 and 1.0. x is the index of
1091
+ the internal variable which will be used to save the seed/state.
1092
+
1093
+ root(expr, max)
1094
+ Find an input value for which the function represented by expr with
1095
+ argument ld(0) is 0 in the interval 0..max.
1096
+
1097
+ The expression in expr must denote a continuous function or the
1098
+ result is undefined.
1099
+
1100
+ ld(0) is used to represent the function input value, which means
1101
+ that the given expression will be evaluated multiple times with
1102
+ various input values that the expression can access through ld(0).
1103
+ When the expression evaluates to 0 then the corresponding input
1104
+ value will be returned.
1105
+
1106
+ round(expr)
1107
+ Round the value of expression expr to the nearest integer. For
1108
+ example, "round(1.5)" is "2.0".
1109
+
1110
+ sgn(x)
1111
+ Compute sign of x.
1112
+
1113
+ sin(x)
1114
+ Compute sine of x.
1115
+
1116
+ sinh(x)
1117
+ Compute hyperbolic sine of x.
1118
+
1119
+ sqrt(expr)
1120
+ Compute the square root of expr. This is equivalent to "(expr)^.5".
1121
+
1122
+ squish(x)
1123
+ Compute expression "1/(1 + exp(4*x))".
1124
+
1125
+ st(var, expr)
1126
+ Store the value of the expression expr in an internal variable. var
1127
+ specifies the number of the variable where to store the value, and
1128
+ it is a value ranging from 0 to 9. The function returns the value
1129
+ stored in the internal variable. Note, Variables are currently not
1130
+ shared between expressions.
1131
+
1132
+ tan(x)
1133
+ Compute tangent of x.
1134
+
1135
+ tanh(x)
1136
+ Compute hyperbolic tangent of x.
1137
+
1138
+ taylor(expr, x)
1139
+ taylor(expr, x, id)
1140
+ Evaluate a Taylor series at x, given an expression representing the
1141
+ "ld(id)"-th derivative of a function at 0.
1142
+
1143
+ When the series does not converge the result is undefined.
1144
+
1145
+ ld(id) is used to represent the derivative order in expr, which
1146
+ means that the given expression will be evaluated multiple times
1147
+ with various input values that the expression can access through
1148
+ "ld(id)". If id is not specified then 0 is assumed.
1149
+
1150
+ Note, when you have the derivatives at y instead of 0,
1151
+ "taylor(expr, x-y)" can be used.
1152
+
1153
+ time(0)
1154
+ Return the current (wallclock) time in seconds.
1155
+
1156
+ trunc(expr)
1157
+ Round the value of expression expr towards zero to the nearest
1158
+ integer. For example, "trunc(-1.5)" is "-1.0".
1159
+
1160
+ while(cond, expr)
1161
+ Evaluate expression expr while the expression cond is non-zero, and
1162
+ returns the value of the last expr evaluation, or NAN if cond was
1163
+ always false.
1164
+
1165
+ The following constants are available:
1166
+
1167
+ PI area of the unit disc, approximately 3.14
1168
+
1169
+ E exp(1) (Euler's number), approximately 2.718
1170
+
1171
+ PHI golden ratio (1+sqrt(5))/2, approximately 1.618
1172
+
1173
+ Assuming that an expression is considered "true" if it has a non-zero
1174
+ value, note that:
1175
+
1176
+ "*" works like AND
1177
+
1178
+ "+" works like OR
1179
+
1180
+ For example the construct:
1181
+
1182
+ if (A AND B) then C
1183
+
1184
+ is equivalent to:
1185
+
1186
+ if(A*B, C)
1187
+
1188
+ In your C code, you can extend the list of unary and binary functions,
1189
+ and define recognized constants, so that they are available for your
1190
+ expressions.
1191
+
1192
+ The evaluator also recognizes the International System unit prefixes.
1193
+ If 'i' is appended after the prefix, binary prefixes are used, which
1194
+ are based on powers of 1024 instead of powers of 1000. The 'B' postfix
1195
+ multiplies the value by 8, and can be appended after a unit prefix or
1196
+ used alone. This allows using for example 'KB', 'MiB', 'G' and 'B' as
1197
+ number postfix.
1198
+
1199
+ The list of available International System prefixes follows, with
1200
+ indication of the corresponding powers of 10 and of 2.
1201
+
1202
+ y 10^-24 / 2^-80
1203
+
1204
+ z 10^-21 / 2^-70
1205
+
1206
+ a 10^-18 / 2^-60
1207
+
1208
+ f 10^-15 / 2^-50
1209
+
1210
+ p 10^-12 / 2^-40
1211
+
1212
+ n 10^-9 / 2^-30
1213
+
1214
+ u 10^-6 / 2^-20
1215
+
1216
+ m 10^-3 / 2^-10
1217
+
1218
+ c 10^-2
1219
+
1220
+ d 10^-1
1221
+
1222
+ h 10^2
1223
+
1224
+ k 10^3 / 2^10
1225
+
1226
+ K 10^3 / 2^10
1227
+
1228
+ M 10^6 / 2^20
1229
+
1230
+ G 10^9 / 2^30
1231
+
1232
+ T 10^12 / 2^40
1233
+
1234
+ P 10^15 / 2^50
1235
+
1236
+ E 10^18 / 2^60
1237
+
1238
+ Z 10^21 / 2^70
1239
+
1240
+ Y 10^24 / 2^80
1241
+
1242
+ SEE ALSO
1243
+ ffmpeg(1), ffplay(1), ffprobe(1), libavutil(3)
1244
+
1245
+ AUTHORS
1246
+ The FFmpeg developers.
1247
+
1248
+ For details about the authorship, see the Git history of the project
1249
+ (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
1250
+ the FFmpeg source directory, or browsing the online repository at
1251
+ <https://git.ffmpeg.org/ffmpeg>.
1252
+
1253
+ Maintainers for the specific components are listed in the file
1254
+ MAINTAINERS in the source code tree.
1255
+
1256
+ FFMPEG-UTILS(1)
ffmpeg-6.1-amd64-static/manpages/ffmpeg.txt ADDED
The diff for this file is too large to render. See raw diff
 
ffmpeg-6.1-amd64-static/manpages/ffprobe.txt ADDED
@@ -0,0 +1,976 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ If no output is specified as output with o ffprobe will write to
22
+ stdout.
23
+
24
+ ffprobe may be employed both as a standalone application or in
25
+ combination with a textual filter, which may perform more sophisticated
26
+ processing, e.g. statistical processing or plotting.
27
+
28
+ Options are used to list some of the formats supported by ffprobe or
29
+ for specifying which information to display, and for setting how
30
+ ffprobe will show it.
31
+
32
+ ffprobe output is designed to be easily parsable by a textual filter,
33
+ and consists of one or more sections of a form defined by the selected
34
+ writer, which is specified by the output_format option.
35
+
36
+ Sections may contain other nested sections, and are identified by a
37
+ name (which may be shared by other sections), and an unique name. See
38
+ the output of sections.
39
+
40
+ Metadata tags stored in the container or in the streams are recognized
41
+ and printed in the corresponding "FORMAT", "STREAM" or "PROGRAM_STREAM"
42
+ section.
43
+
44
+ OPTIONS
45
+ All the numerical options, if not specified otherwise, accept a string
46
+ representing a number as input, which may be followed by one of the SI
47
+ unit prefixes, for example: 'K', 'M', or 'G'.
48
+
49
+ If 'i' is appended to the SI unit prefix, the complete prefix will be
50
+ interpreted as a unit prefix for binary multiples, which are based on
51
+ powers of 1024 instead of powers of 1000. Appending 'B' to the SI unit
52
+ prefix multiplies the value by 8. This allows using, for example: 'KB',
53
+ 'MiB', 'G' and 'B' as number suffixes.
54
+
55
+ Options which do not take arguments are boolean options, and set the
56
+ corresponding value to true. They can be set to false by prefixing the
57
+ option name with "no". For example using "-nofoo" will set the boolean
58
+ option with name "foo" to false.
59
+
60
+ Stream specifiers
61
+ Some options are applied per-stream, e.g. bitrate or codec. Stream
62
+ specifiers are used to precisely specify which stream(s) a given option
63
+ belongs to.
64
+
65
+ A stream specifier is a string generally appended to the option name
66
+ and separated from it by a colon. E.g. "-codec:a:1 ac3" contains the
67
+ "a:1" stream specifier, which matches the second audio stream.
68
+ Therefore, it would select the ac3 codec for the second audio stream.
69
+
70
+ A stream specifier can match several streams, so that the option is
71
+ applied to all of them. E.g. the stream specifier in "-b:a 128k"
72
+ matches all audio streams.
73
+
74
+ An empty stream specifier matches all streams. For example, "-codec
75
+ copy" or "-codec: copy" would copy all the streams without reencoding.
76
+
77
+ Possible forms of stream specifiers are:
78
+
79
+ stream_index
80
+ Matches the stream with this index. E.g. "-threads:1 4" would set
81
+ the thread count for the second stream to 4. If stream_index is
82
+ used as an additional stream specifier (see below), then it selects
83
+ stream number stream_index from the matching streams. Stream
84
+ numbering is based on the order of the streams as detected by
85
+ libavformat except when a program ID is also specified. In this
86
+ case it is based on the ordering of the streams in the program.
87
+
88
+ stream_type[:additional_stream_specifier]
89
+ stream_type is one of following: 'v' or 'V' for video, 'a' for
90
+ audio, 's' for subtitle, 'd' for data, and 't' for attachments. 'v'
91
+ matches all video streams, 'V' only matches video streams which are
92
+ not attached pictures, video thumbnails or cover arts. If
93
+ additional_stream_specifier is used, then it matches streams which
94
+ both have this type and match the additional_stream_specifier.
95
+ Otherwise, it matches all streams of the specified type.
96
+
97
+ p:program_id[:additional_stream_specifier]
98
+ Matches streams which are in the program with the id program_id. If
99
+ additional_stream_specifier is used, then it matches streams which
100
+ both are part of the program and match the
101
+ additional_stream_specifier.
102
+
103
+ #stream_id or i:stream_id
104
+ Match the stream by stream id (e.g. PID in MPEG-TS container).
105
+
106
+ m:key[:value]
107
+ Matches streams with the metadata tag key having the specified
108
+ value. If value is not given, matches streams that contain the
109
+ given tag with any value.
110
+
111
+ u Matches streams with usable configuration, the codec must be
112
+ defined and the essential information such as video dimension or
113
+ audio sample rate must be present.
114
+
115
+ Note that in ffmpeg, matching by metadata will only work properly
116
+ for input files.
117
+
118
+ Generic options
119
+ These options are shared amongst the ff* tools.
120
+
121
+ -L Show license.
122
+
123
+ -h, -?, -help, --help [arg]
124
+ Show help. An optional parameter may be specified to print help
125
+ about a specific item. If no argument is specified, only basic (non
126
+ advanced) tool options are shown.
127
+
128
+ Possible values of arg are:
129
+
130
+ long
131
+ Print advanced tool options in addition to the basic tool
132
+ options.
133
+
134
+ full
135
+ Print complete list of options, including shared and private
136
+ options for encoders, decoders, demuxers, muxers, filters, etc.
137
+
138
+ decoder=decoder_name
139
+ Print detailed information about the decoder named
140
+ decoder_name. Use the -decoders option to get a list of all
141
+ decoders.
142
+
143
+ encoder=encoder_name
144
+ Print detailed information about the encoder named
145
+ encoder_name. Use the -encoders option to get a list of all
146
+ encoders.
147
+
148
+ demuxer=demuxer_name
149
+ Print detailed information about the demuxer named
150
+ demuxer_name. Use the -formats option to get a list of all
151
+ demuxers and muxers.
152
+
153
+ muxer=muxer_name
154
+ Print detailed information about the muxer named muxer_name.
155
+ Use the -formats option to get a list of all muxers and
156
+ demuxers.
157
+
158
+ filter=filter_name
159
+ Print detailed information about the filter named filter_name.
160
+ Use the -filters option to get a list of all filters.
161
+
162
+ bsf=bitstream_filter_name
163
+ Print detailed information about the bitstream filter named
164
+ bitstream_filter_name. Use the -bsfs option to get a list of
165
+ all bitstream filters.
166
+
167
+ protocol=protocol_name
168
+ Print detailed information about the protocol named
169
+ protocol_name. Use the -protocols option to get a list of all
170
+ protocols.
171
+
172
+ -version
173
+ Show version.
174
+
175
+ -buildconf
176
+ Show the build configuration, one option per line.
177
+
178
+ -formats
179
+ Show available formats (including devices).
180
+
181
+ -demuxers
182
+ Show available demuxers.
183
+
184
+ -muxers
185
+ Show available muxers.
186
+
187
+ -devices
188
+ Show available devices.
189
+
190
+ -codecs
191
+ Show all codecs known to libavcodec.
192
+
193
+ Note that the term 'codec' is used throughout this documentation as
194
+ a shortcut for what is more correctly called a media bitstream
195
+ format.
196
+
197
+ -decoders
198
+ Show available decoders.
199
+
200
+ -encoders
201
+ Show all available encoders.
202
+
203
+ -bsfs
204
+ Show available bitstream filters.
205
+
206
+ -protocols
207
+ Show available protocols.
208
+
209
+ -filters
210
+ Show available libavfilter filters.
211
+
212
+ -pix_fmts
213
+ Show available pixel formats.
214
+
215
+ -sample_fmts
216
+ Show available sample formats.
217
+
218
+ -layouts
219
+ Show channel names and standard channel layouts.
220
+
221
+ -dispositions
222
+ Show stream dispositions.
223
+
224
+ -colors
225
+ Show recognized color names.
226
+
227
+ -sources device[,opt1=val1[,opt2=val2]...]
228
+ Show autodetected sources of the input device. Some devices may
229
+ provide system-dependent source names that cannot be autodetected.
230
+ The returned list cannot be assumed to be always complete.
231
+
232
+ ffmpeg -sources pulse,server=192.168.0.4
233
+
234
+ -sinks device[,opt1=val1[,opt2=val2]...]
235
+ Show autodetected sinks of the output device. Some devices may
236
+ provide system-dependent sink names that cannot be autodetected.
237
+ The returned list cannot be assumed to be always complete.
238
+
239
+ ffmpeg -sinks pulse,server=192.168.0.4
240
+
241
+ -loglevel [flags+]loglevel | -v [flags+]loglevel
242
+ Set logging level and flags used by the library.
243
+
244
+ The optional flags prefix can consist of the following values:
245
+
246
+ repeat
247
+ Indicates that repeated log output should not be compressed to
248
+ the first line and the "Last message repeated n times" line
249
+ will be omitted.
250
+
251
+ level
252
+ Indicates that log output should add a "[level]" prefix to each
253
+ message line. This can be used as an alternative to log
254
+ coloring, e.g. when dumping the log to file.
255
+
256
+ Flags can also be used alone by adding a '+'/'-' prefix to
257
+ set/reset a single flag without affecting other flags or changing
258
+ loglevel. When setting both flags and loglevel, a '+' separator is
259
+ expected between the last flags value and before loglevel.
260
+
261
+ loglevel is a string or a number containing one of the following
262
+ values:
263
+
264
+ quiet, -8
265
+ Show nothing at all; be silent.
266
+
267
+ panic, 0
268
+ Only show fatal errors which could lead the process to crash,
269
+ such as an assertion failure. This is not currently used for
270
+ anything.
271
+
272
+ fatal, 8
273
+ Only show fatal errors. These are errors after which the
274
+ process absolutely cannot continue.
275
+
276
+ error, 16
277
+ Show all errors, including ones which can be recovered from.
278
+
279
+ warning, 24
280
+ Show all warnings and errors. Any message related to possibly
281
+ incorrect or unexpected events will be shown.
282
+
283
+ info, 32
284
+ Show informative messages during processing. This is in
285
+ addition to warnings and errors. This is the default value.
286
+
287
+ verbose, 40
288
+ Same as "info", except more verbose.
289
+
290
+ debug, 48
291
+ Show everything, including debugging information.
292
+
293
+ trace, 56
294
+
295
+ For example to enable repeated log output, add the "level" prefix,
296
+ and set loglevel to "verbose":
297
+
298
+ ffmpeg -loglevel repeat+level+verbose -i input output
299
+
300
+ Another example that enables repeated log output without affecting
301
+ current state of "level" prefix flag or loglevel:
302
+
303
+ ffmpeg [...] -loglevel +repeat
304
+
305
+ By default the program logs to stderr. If coloring is supported by
306
+ the terminal, colors are used to mark errors and warnings. Log
307
+ coloring can be disabled setting the environment variable
308
+ AV_LOG_FORCE_NOCOLOR, or can be forced setting the environment
309
+ variable AV_LOG_FORCE_COLOR.
310
+
311
+ -report
312
+ Dump full command line and log output to a file named
313
+ "program-YYYYMMDD-HHMMSS.log" in the current directory. This file
314
+ can be useful for bug reports. It also implies "-loglevel debug".
315
+
316
+ Setting the environment variable FFREPORT to any value has the same
317
+ effect. If the value is a ':'-separated key=value sequence, these
318
+ options will affect the report; option values must be escaped if
319
+ they contain special characters or the options delimiter ':' (see
320
+ the ``Quoting and escaping'' section in the ffmpeg-utils manual).
321
+
322
+ The following options are recognized:
323
+
324
+ file
325
+ set the file name to use for the report; %p is expanded to the
326
+ name of the program, %t is expanded to a timestamp, "%%" is
327
+ expanded to a plain "%"
328
+
329
+ level
330
+ set the log verbosity level using a numerical value (see
331
+ "-loglevel").
332
+
333
+ For example, to output a report to a file named ffreport.log using
334
+ a log level of 32 (alias for log level "info"):
335
+
336
+ FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
337
+
338
+ Errors in parsing the environment variable are not fatal, and will
339
+ not appear in the report.
340
+
341
+ -hide_banner
342
+ Suppress printing banner.
343
+
344
+ All FFmpeg tools will normally show a copyright notice, build
345
+ options and library versions. This option can be used to suppress
346
+ printing this information.
347
+
348
+ -cpuflags flags (global)
349
+ Allows setting and clearing cpu flags. This option is intended for
350
+ testing. Do not use it unless you know what you're doing.
351
+
352
+ ffmpeg -cpuflags -sse+mmx ...
353
+ ffmpeg -cpuflags mmx ...
354
+ ffmpeg -cpuflags 0 ...
355
+
356
+ Possible flags for this option are:
357
+
358
+ x86
359
+ mmx
360
+ mmxext
361
+ sse
362
+ sse2
363
+ sse2slow
364
+ sse3
365
+ sse3slow
366
+ ssse3
367
+ atom
368
+ sse4.1
369
+ sse4.2
370
+ avx
371
+ avx2
372
+ xop
373
+ fma3
374
+ fma4
375
+ 3dnow
376
+ 3dnowext
377
+ bmi1
378
+ bmi2
379
+ cmov
380
+ ARM
381
+ armv5te
382
+ armv6
383
+ armv6t2
384
+ vfp
385
+ vfpv3
386
+ neon
387
+ setend
388
+ AArch64
389
+ armv8
390
+ vfp
391
+ neon
392
+ PowerPC
393
+ altivec
394
+ Specific Processors
395
+ pentium2
396
+ pentium3
397
+ pentium4
398
+ k6
399
+ k62
400
+ athlon
401
+ athlonxp
402
+ k8
403
+ -cpucount count (global)
404
+ Override detection of CPU count. This option is intended for
405
+ testing. Do not use it unless you know what you're doing.
406
+
407
+ ffmpeg -cpucount 2
408
+
409
+ -max_alloc bytes
410
+ Set the maximum size limit for allocating a block on the heap by
411
+ ffmpeg's family of malloc functions. Exercise extreme caution when
412
+ using this option. Don't use if you do not understand the full
413
+ consequence of doing so. Default is INT_MAX.
414
+
415
+ AVOptions
416
+ These options are provided directly by the libavformat, libavdevice and
417
+ libavcodec libraries. To see the list of available AVOptions, use the
418
+ -help option. They are separated into two categories:
419
+
420
+ generic
421
+ These options can be set for any container, codec or device.
422
+ Generic options are listed under AVFormatContext options for
423
+ containers/devices and under AVCodecContext options for codecs.
424
+
425
+ private
426
+ These options are specific to the given container, device or codec.
427
+ Private options are listed under their corresponding
428
+ containers/devices/codecs.
429
+
430
+ For example to write an ID3v2.3 header instead of a default ID3v2.4 to
431
+ an MP3 file, use the id3v2_version private option of the MP3 muxer:
432
+
433
+ ffmpeg -i input.flac -id3v2_version 3 out.mp3
434
+
435
+ All codec AVOptions are per-stream, and thus a stream specifier should
436
+ be attached to them:
437
+
438
+ 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
439
+
440
+ In the above example, a multichannel audio stream is mapped twice for
441
+ output. The first instance is encoded with codec ac3 and bitrate 640k.
442
+ The second instance is downmixed to 2 channels and encoded with codec
443
+ aac. A bitrate of 128k is specified for it using absolute index of the
444
+ output stream.
445
+
446
+ Note: the -nooption syntax cannot be used for boolean AVOptions, use
447
+ -option 0/-option 1.
448
+
449
+ Note: the old undocumented way of specifying per-stream AVOptions by
450
+ prepending v/a/s to the options name is now obsolete and will be
451
+ removed soon.
452
+
453
+ Main options
454
+ -f format
455
+ Force format to use.
456
+
457
+ -unit
458
+ Show the unit of the displayed values.
459
+
460
+ -prefix
461
+ Use SI prefixes for the displayed values. Unless the
462
+ "-byte_binary_prefix" option is used all the prefixes are decimal.
463
+
464
+ -byte_binary_prefix
465
+ Force the use of binary prefixes for byte values.
466
+
467
+ -sexagesimal
468
+ Use sexagesimal format HH:MM:SS.MICROSECONDS for time values.
469
+
470
+ -pretty
471
+ Prettify the format of the displayed values, it corresponds to the
472
+ options "-unit -prefix -byte_binary_prefix -sexagesimal".
473
+
474
+ -output_format, -of, -print_format writer_name[=writer_options]
475
+ Set the output printing format.
476
+
477
+ writer_name specifies the name of the writer, and writer_options
478
+ specifies the options to be passed to the writer.
479
+
480
+ For example for printing the output in JSON format, specify:
481
+
482
+ -output_format json
483
+
484
+ For more details on the available output printing formats, see the
485
+ Writers section below.
486
+
487
+ -sections
488
+ Print sections structure and section information, and exit. The
489
+ output is not meant to be parsed by a machine.
490
+
491
+ -select_streams stream_specifier
492
+ Select only the streams specified by stream_specifier. This option
493
+ affects only the options related to streams (e.g. "show_streams",
494
+ "show_packets", etc.).
495
+
496
+ For example to show only audio streams, you can use the command:
497
+
498
+ ffprobe -show_streams -select_streams a INPUT
499
+
500
+ To show only video packets belonging to the video stream with index
501
+ 1:
502
+
503
+ ffprobe -show_packets -select_streams v:1 INPUT
504
+
505
+ -show_data
506
+ Show payload data, as a hexadecimal and ASCII dump. Coupled with
507
+ -show_packets, it will dump the packets' data. Coupled with
508
+ -show_streams, it will dump the codec extradata.
509
+
510
+ The dump is printed as the "data" field. It may contain newlines.
511
+
512
+ -show_data_hash algorithm
513
+ Show a hash of payload data, for packets with -show_packets and for
514
+ codec extradata with -show_streams.
515
+
516
+ -show_error
517
+ Show information about the error found when trying to probe the
518
+ input.
519
+
520
+ The error information is printed within a section with name
521
+ "ERROR".
522
+
523
+ -show_format
524
+ Show information about the container format of the input multimedia
525
+ stream.
526
+
527
+ All the container format information is printed within a section
528
+ with name "FORMAT".
529
+
530
+ -show_format_entry name
531
+ Like -show_format, but only prints the specified entry of the
532
+ container format information, rather than all. This option may be
533
+ given more than once, then all specified entries will be shown.
534
+
535
+ This option is deprecated, use "show_entries" instead.
536
+
537
+ -show_entries section_entries
538
+ Set list of entries to show.
539
+
540
+ Entries are specified according to the following syntax.
541
+ section_entries contains a list of section entries separated by
542
+ ":". Each section entry is composed by a section name (or unique
543
+ name), optionally followed by a list of entries local to that
544
+ section, separated by ",".
545
+
546
+ If section name is specified but is followed by no "=", all entries
547
+ are printed to output, together with all the contained sections.
548
+ Otherwise only the entries specified in the local section entries
549
+ list are printed. In particular, if "=" is specified but the list
550
+ of local entries is empty, then no entries will be shown for that
551
+ section.
552
+
553
+ Note that the order of specification of the local section entries
554
+ is not honored in the output, and the usual display order will be
555
+ retained.
556
+
557
+ The formal syntax is given by:
558
+
559
+ <LOCAL_SECTION_ENTRIES> ::= <SECTION_ENTRY_NAME>[,<LOCAL_SECTION_ENTRIES>]
560
+ <SECTION_ENTRY> ::= <SECTION_NAME>[=[<LOCAL_SECTION_ENTRIES>]]
561
+ <SECTION_ENTRIES> ::= <SECTION_ENTRY>[:<SECTION_ENTRIES>]
562
+
563
+ For example, to show only the index and type of each stream, and
564
+ the PTS time, duration time, and stream index of the packets, you
565
+ can specify the argument:
566
+
567
+ packet=pts_time,duration_time,stream_index : stream=index,codec_type
568
+
569
+ To show all the entries in the section "format", but only the codec
570
+ type in the section "stream", specify the argument:
571
+
572
+ format : stream=codec_type
573
+
574
+ To show all the tags in the stream and format sections:
575
+
576
+ stream_tags : format_tags
577
+
578
+ To show only the "title" tag (if available) in the stream sections:
579
+
580
+ stream_tags=title
581
+
582
+ -show_packets
583
+ Show information about each packet contained in the input
584
+ multimedia stream.
585
+
586
+ The information for each single packet is printed within a
587
+ dedicated section with name "PACKET".
588
+
589
+ -show_frames
590
+ Show information about each frame and subtitle contained in the
591
+ input multimedia stream.
592
+
593
+ The information for each single frame is printed within a dedicated
594
+ section with name "FRAME" or "SUBTITLE".
595
+
596
+ -show_log loglevel
597
+ Show logging information from the decoder about each frame
598
+ according to the value set in loglevel, (see "-loglevel"). This
599
+ option requires "-show_frames".
600
+
601
+ The information for each log message is printed within a dedicated
602
+ section with name "LOG".
603
+
604
+ -show_streams
605
+ Show information about each media stream contained in the input
606
+ multimedia stream.
607
+
608
+ Each media stream information is printed within a dedicated section
609
+ with name "STREAM".
610
+
611
+ -show_programs
612
+ Show information about programs and their streams contained in the
613
+ input multimedia stream.
614
+
615
+ Each media stream information is printed within a dedicated section
616
+ with name "PROGRAM_STREAM".
617
+
618
+ -show_chapters
619
+ Show information about chapters stored in the format.
620
+
621
+ Each chapter is printed within a dedicated section with name
622
+ "CHAPTER".
623
+
624
+ -count_frames
625
+ Count the number of frames per stream and report it in the
626
+ corresponding stream section.
627
+
628
+ -count_packets
629
+ Count the number of packets per stream and report it in the
630
+ corresponding stream section.
631
+
632
+ -read_intervals read_intervals
633
+ Read only the specified intervals. read_intervals must be a
634
+ sequence of interval specifications separated by ",". ffprobe will
635
+ seek to the interval starting point, and will continue reading from
636
+ that.
637
+
638
+ Each interval is specified by two optional parts, separated by "%".
639
+
640
+ The first part specifies the interval start position. It is
641
+ interpreted as an absolute position, or as a relative offset from
642
+ the current position if it is preceded by the "+" character. If
643
+ this first part is not specified, no seeking will be performed when
644
+ reading this interval.
645
+
646
+ The second part specifies the interval end position. It is
647
+ interpreted as an absolute position, or as a relative offset from
648
+ the current position if it is preceded by the "+" character. If the
649
+ offset specification starts with "#", it is interpreted as the
650
+ number of packets to read (not including the flushing packets) from
651
+ the interval start. If no second part is specified, the program
652
+ will read until the end of the input.
653
+
654
+ Note that seeking is not accurate, thus the actual interval start
655
+ point may be different from the specified position. Also, when an
656
+ interval duration is specified, the absolute end time will be
657
+ computed by adding the duration to the interval start point found
658
+ by seeking the file, rather than to the specified start value.
659
+
660
+ The formal syntax is given by:
661
+
662
+ <INTERVAL> ::= [<START>|+<START_OFFSET>][%[<END>|+<END_OFFSET>]]
663
+ <INTERVALS> ::= <INTERVAL>[,<INTERVALS>]
664
+
665
+ A few examples follow.
666
+
667
+ o Seek to time 10, read packets until 20 seconds after the found
668
+ seek point, then seek to position "01:30" (1 minute and thirty
669
+ seconds) and read packets until position "01:45".
670
+
671
+ 10%+20,01:30%01:45
672
+
673
+ o Read only 42 packets after seeking to position "01:23":
674
+
675
+ 01:23%+#42
676
+
677
+ o Read only the first 20 seconds from the start:
678
+
679
+ %+20
680
+
681
+ o Read from the start until position "02:30":
682
+
683
+ %02:30
684
+
685
+ -show_private_data, -private
686
+ Show private data, that is data depending on the format of the
687
+ particular shown element. This option is enabled by default, but
688
+ you may need to disable it for specific uses, for example when
689
+ creating XSD-compliant XML output.
690
+
691
+ -show_program_version
692
+ Show information related to program version.
693
+
694
+ Version information is printed within a section with name
695
+ "PROGRAM_VERSION".
696
+
697
+ -show_library_versions
698
+ Show information related to library versions.
699
+
700
+ Version information for each library is printed within a section
701
+ with name "LIBRARY_VERSION".
702
+
703
+ -show_versions
704
+ Show information related to program and library versions. This is
705
+ the equivalent of setting both -show_program_version and
706
+ -show_library_versions options.
707
+
708
+ -show_pixel_formats
709
+ Show information about all pixel formats supported by FFmpeg.
710
+
711
+ Pixel format information for each format is printed within a
712
+ section with name "PIXEL_FORMAT".
713
+
714
+ -show_optional_fields value
715
+ Some writers viz. JSON and XML, omit the printing of fields with
716
+ invalid or non-applicable values, while other writers always print
717
+ them. This option enables one to control this behaviour. Valid
718
+ values are "always"/1, "never"/0 and "auto"/"-1". Default is auto.
719
+
720
+ -bitexact
721
+ Force bitexact output, useful to produce output which is not
722
+ dependent on the specific build.
723
+
724
+ -i input_url
725
+ Read input_url.
726
+
727
+ -o output_url
728
+ Write output to output_url. If not specified, the output is sent to
729
+ stdout.
730
+
731
+ WRITERS
732
+ A writer defines the output format adopted by ffprobe, and will be used
733
+ for printing all the parts of the output.
734
+
735
+ A writer may accept one or more arguments, which specify the options to
736
+ adopt. The options are specified as a list of key=value pairs,
737
+ separated by ":".
738
+
739
+ All writers support the following options:
740
+
741
+ string_validation, sv
742
+ Set string validation mode.
743
+
744
+ The following values are accepted.
745
+
746
+ fail
747
+ The writer will fail immediately in case an invalid string
748
+ (UTF-8) sequence or code point is found in the input. This is
749
+ especially useful to validate input metadata.
750
+
751
+ ignore
752
+ Any validation error will be ignored. This will result in
753
+ possibly broken output, especially with the json or xml writer.
754
+
755
+ replace
756
+ The writer will substitute invalid UTF-8 sequences or code
757
+ points with the string specified with the
758
+ string_validation_replacement.
759
+
760
+ Default value is replace.
761
+
762
+ string_validation_replacement, svr
763
+ Set replacement string to use in case string_validation is set to
764
+ replace.
765
+
766
+ In case the option is not specified, the writer will assume the
767
+ empty string, that is it will remove the invalid sequences from the
768
+ input strings.
769
+
770
+ A description of the currently available writers follows.
771
+
772
+ default
773
+ Default format.
774
+
775
+ Print each section in the form:
776
+
777
+ [SECTION]
778
+ key1=val1
779
+ ...
780
+ keyN=valN
781
+ [/SECTION]
782
+
783
+ Metadata tags are printed as a line in the corresponding FORMAT, STREAM
784
+ or PROGRAM_STREAM section, and are prefixed by the string "TAG:".
785
+
786
+ A description of the accepted options follows.
787
+
788
+ nokey, nk
789
+ If set to 1 specify not to print the key of each field. Default
790
+ value is 0.
791
+
792
+ noprint_wrappers, nw
793
+ If set to 1 specify not to print the section header and footer.
794
+ Default value is 0.
795
+
796
+ compact, csv
797
+ Compact and CSV format.
798
+
799
+ The "csv" writer is equivalent to "compact", but supports different
800
+ defaults.
801
+
802
+ Each section is printed on a single line. If no option is specified,
803
+ the output has the form:
804
+
805
+ section|key1=val1| ... |keyN=valN
806
+
807
+ Metadata tags are printed in the corresponding "format" or "stream"
808
+ section. A metadata tag key, if printed, is prefixed by the string
809
+ "tag:".
810
+
811
+ The description of the accepted options follows.
812
+
813
+ item_sep, s
814
+ Specify the character to use for separating fields in the output
815
+ line. It must be a single printable character, it is "|" by
816
+ default ("," for the "csv" writer).
817
+
818
+ nokey, nk
819
+ If set to 1 specify not to print the key of each field. Its default
820
+ value is 0 (1 for the "csv" writer).
821
+
822
+ escape, e
823
+ Set the escape mode to use, default to "c" ("csv" for the "csv"
824
+ writer).
825
+
826
+ It can assume one of the following values:
827
+
828
+ c Perform C-like escaping. Strings containing a newline (\n),
829
+ carriage return (\r), a tab (\t), a form feed (\f), the
830
+ escaping character (\) or the item separator character SEP are
831
+ escaped using C-like fashioned escaping, so that a newline is
832
+ converted to the sequence \n, a carriage return to \r, \ to \\
833
+ and the separator SEP is converted to \SEP.
834
+
835
+ csv Perform CSV-like escaping, as described in RFC4180. Strings
836
+ containing a newline (\n), a carriage return (\r), a double
837
+ quote ("), or SEP are enclosed in double-quotes.
838
+
839
+ none
840
+ Perform no escaping.
841
+
842
+ print_section, p
843
+ Print the section name at the beginning of each line if the value
844
+ is 1, disable it with value set to 0. Default value is 1.
845
+
846
+ flat
847
+ Flat format.
848
+
849
+ A free-form output where each line contains an explicit key=value, such
850
+ as "streams.stream.3.tags.foo=bar". The output is shell escaped, so it
851
+ can be directly embedded in sh scripts as long as the separator
852
+ character is an alphanumeric character or an underscore (see sep_char
853
+ option).
854
+
855
+ The description of the accepted options follows.
856
+
857
+ sep_char, s
858
+ Separator character used to separate the chapter, the section name,
859
+ IDs and potential tags in the printed field key.
860
+
861
+ Default value is ..
862
+
863
+ hierarchical, h
864
+ Specify if the section name specification should be hierarchical.
865
+ If set to 1, and if there is more than one section in the current
866
+ chapter, the section name will be prefixed by the name of the
867
+ chapter. A value of 0 will disable this behavior.
868
+
869
+ Default value is 1.
870
+
871
+ ini
872
+ INI format output.
873
+
874
+ Print output in an INI based format.
875
+
876
+ The following conventions are adopted:
877
+
878
+ o all key and values are UTF-8
879
+
880
+ o . is the subgroup separator
881
+
882
+ o newline, \t, \f, \b and the following characters are escaped
883
+
884
+ o \ is the escape character
885
+
886
+ o # is the comment indicator
887
+
888
+ o = is the key/value separator
889
+
890
+ o : is not used but usually parsed as key/value separator
891
+
892
+ This writer accepts options as a list of key=value pairs, separated by
893
+ :.
894
+
895
+ The description of the accepted options follows.
896
+
897
+ hierarchical, h
898
+ Specify if the section name specification should be hierarchical.
899
+ If set to 1, and if there is more than one section in the current
900
+ chapter, the section name will be prefixed by the name of the
901
+ chapter. A value of 0 will disable this behavior.
902
+
903
+ Default value is 1.
904
+
905
+ json
906
+ JSON based format.
907
+
908
+ Each section is printed using JSON notation.
909
+
910
+ The description of the accepted options follows.
911
+
912
+ compact, c
913
+ If set to 1 enable compact output, that is each section will be
914
+ printed on a single line. Default value is 0.
915
+
916
+ For more information about JSON, see <http://www.json.org/>.
917
+
918
+ xml
919
+ XML based format.
920
+
921
+ The XML output is described in the XML schema description file
922
+ ffprobe.xsd installed in the FFmpeg datadir.
923
+
924
+ An updated version of the schema can be retrieved at the url
925
+ <http://www.ffmpeg.org/schema/ffprobe.xsd>, which redirects to the
926
+ latest schema committed into the FFmpeg development source code tree.
927
+
928
+ Note that the output issued will be compliant to the ffprobe.xsd schema
929
+ only when no special global output options (unit, prefix,
930
+ byte_binary_prefix, sexagesimal etc.) are specified.
931
+
932
+ The description of the accepted options follows.
933
+
934
+ fully_qualified, q
935
+ If set to 1 specify if the output should be fully qualified.
936
+ Default value is 0. This is required for generating an XML file
937
+ which can be validated through an XSD file.
938
+
939
+ xsd_strict, x
940
+ If set to 1 perform more checks for ensuring that the output is XSD
941
+ compliant. Default value is 0. This option automatically sets
942
+ fully_qualified to 1.
943
+
944
+ For more information about the XML format, see
945
+ <https://www.w3.org/XML/>.
946
+
947
+ TIMECODE
948
+ ffprobe supports Timecode extraction:
949
+
950
+ o MPEG1/2 timecode is extracted from the GOP, and is available in the
951
+ video stream details (-show_streams, see timecode).
952
+
953
+ o MOV timecode is extracted from tmcd track, so is available in the
954
+ tmcd stream metadata (-show_streams, see TAG:timecode).
955
+
956
+ o DV, GXF and AVI timecodes are available in format metadata
957
+ (-show_format, see TAG:timecode).
958
+
959
+ SEE ALSO
960
+ ffprobe-all(1), ffmpeg(1), ffplay(1), ffmpeg-utils(1),
961
+ ffmpeg-scaler(1), ffmpeg-resampler(1), ffmpeg-codecs(1),
962
+ ffmpeg-bitstream-filters(1), ffmpeg-formats(1), ffmpeg-devices(1),
963
+ ffmpeg-protocols(1), ffmpeg-filters(1)
964
+
965
+ AUTHORS
966
+ The FFmpeg developers.
967
+
968
+ For details about the authorship, see the Git history of the project
969
+ (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in
970
+ the FFmpeg source directory, or browsing the online repository at
971
+ <https://git.ffmpeg.org/ffmpeg>.
972
+
973
+ Maintainers for the specific components are listed in the file
974
+ MAINTAINERS in the source code tree.
975
+
976
+ FFPROBE(1)
ffmpeg-6.1-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-6.1-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-6.1-amd64-static/model/other_models/nflx_v1.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "param_dict": {
3
+ "C": 1.0,
4
+ "norm_type": "clip_0to1",
5
+ "score_clip": [
6
+ 0.0,
7
+ 100.0
8
+ ],
9
+ "cache_size": 200,
10
+ "nu": 0.5,
11
+ "gamma": 0.85
12
+ },
13
+ "model_dict": {
14
+ "norm_type": "linear_rescale",
15
+ "score_clip": [
16
+ 0.0,
17
+ 100.0
18
+ ],
19
+ "feature_names": [
20
+ "VMAF_feature_adm_score",
21
+ "VMAF_feature_ansnr_score",
22
+ "VMAF_feature_motion_score",
23
+ "VMAF_feature_vif_score"
24
+ ],
25
+ "intercepts": [
26
+ -0.1909090909090909,
27
+ -1.635828565827225,
28
+ -0.5027725296167747,
29
+ -0.022214587359292954,
30
+ -0.12191917348723096
31
+ ],
32
+ "model_type": "LIBSVMNUSVR",
33
+ "slopes": [
34
+ 0.010909090909090908,
35
+ 2.635828565827225,
36
+ 0.030306790717580585,
37
+ 0.06846153126171134,
38
+ 1.121919173487231
39
+ ],
40
+ "model": "svm_type nu_svr\nkernel_type rbf\ngamma 0.85\nnr_class 2\ntotal_sv 87\nrho -0.678599\nSV\n-1 1:0.500758 2:0.44434935 3:0.80360073 4:0.25504335 \n-1 1:0.66395488 2:0.49545656 3:0.80360073 4:0.30315084 \n-1 1:0.68710445 2:0.51616008 3:0.80360073 4:0.32840241 \n1 1:0.80552743 2:0.57886981 3:0.80360073 4:0.3952589 \n1 1:0.93943344 2:0.67382416 3:0.80360073 4:0.48875504 \n-0.6005168509118413 1:0.44111817 2:0.13943156 3:0.060660457 4:0.23164915 \n0.3001652364483464 1:0.79372033 2:0.31017378 3:0.060660457 4:0.4749309 \n1 1:0.91710352 2:0.45437437 3:0.060660457 4:0.66549345 \n0.2347757543790557 1:0.99910085 2:0.62307047 3:0.060660457 4:0.94344783 \n0.9879940111050362 1:0.70228825 2:0.41065868 3:0.25800309 4:0.16020672 \n1 1:0.71225044 2:0.41933192 3:0.25800309 4:0.16684779 \n1 1:0.79683949 2:0.43826809 3:0.25800309 4:0.17816881 \n1 1:0.81652281 2:0.45300881 3:0.25800309 4:0.19016999 \n-1 1:0.93569958 2:0.48157676 3:0.25800309 4:0.21208644 \n-0.05952502774634448 1:0.93913288 2:0.49123252 3:0.25800309 4:0.22195992 \n-1 1:0.78457344 2:0.32209063 3:0.29975901 4:0.43388438 \n-0.08537060065670415 1:0.98011205 2:0.57256903 3:0.29975901 4:0.69987699 \n-1 1:0.98354192 2:0.5885804 3:0.29975901 4:0.72038426 \n-1 1:0.43053262 2:0.12481478 3:0.49240306 4:0.11338352 \n-1 1:0.48855711 2:0.150659 3:0.49240306 4:0.14217743 \n-1 1:0.60605382 2:0.18559397 3:0.49240306 4:0.18417781 \n-0.7923822897377828 1:0.68505081 2:0.23614196 3:0.49240306 4:0.24718934 \n-0.08210621586290766 1:0.89013303 2:0.39057937 3:0.49240306 4:0.43942102 \n1 1:0.32769235 2:0.11805063 3:0.13125463 4:0.15797584 \n1 1:0.57102853 2:0.18673101 3:0.13125463 4:0.2692099 \n1 1:0.57282199 2:0.18739048 3:0.13125463 4:0.27170222 \n1 1:0.74350533 2:0.27830189 3:0.13125463 4:0.40502819 \n1 1:0.90049487 2:0.43091367 3:0.13125463 4:0.66579618 \n-1 1:0.6494774 2:0.27837021 3:0.41227705 4:0.22867305 \n-1 1:0.76923458 2:0.34709787 3:0.41227705 4:0.30394459 \n-1 1:0.95803953 2:0.52505896 3:0.41227705 4:0.50173907 \n-1 1:0.96714842 2:0.55388193 3:0.41227705 4:0.53377919 \n1 1:0.48186529 2:0.28840495 3:0.3173053 4:0.35029221 \n1 1:0.63910783 2:0.34199561 3:0.3173053 4:0.40973951 \n1 1:0.67242576 2:0.37411679 3:0.3173053 4:0.44891858 \n1 1:0.81232229 2:0.47549925 3:0.3173053 4:0.5571142 \n-1 1:0.51091654 2:0.36753212 4:0.32122832 \n-1 1:0.67131199 2:0.40988734 4:0.37624653 \n-1 1:0.67853479 2:0.41802337 4:0.38490923 \n-1 1:0.77668766 2:0.4530568 4:0.42714338 \n-1 1:0.80010279 2:0.47295605 4:0.44945901 \n0.2238122443981977 1:1 2:0.78323367 3:0.95719598 4:1 \n-1 1:0.36338045 2:0.20017167 3:0.35216405 4:0.19030002 \n-1 1:0.56016075 2:0.2511454 3:0.35216405 4:0.25418659 \n-1 1:0.72561366 2:0.32432484 3:0.35216405 4:0.34947968 \n1 1:0.7525563 2:0.34866202 3:0.35216405 4:0.3991584 \n1 1:0.88089009 2:0.45568174 3:0.35216405 4:0.51691346 \n-1 1:0.67458252 2:0.62423542 3:0.024932462 4:0.49597011 \n-1 1:0.67941593 2:0.6324076 3:0.024932462 4:0.50994261 \n-1 1:0.79839909 2:0.68132931 3:0.024932462 4:0.52861368 \n0.765497786395351 1:0.96138923 2:0.76908851 3:0.024932462 4:0.57268419 \n1 1:0.96906849 2:0.7906865 3:0.024932462 4:0.59393192 \n-1 1:0.61695399 2:0.18704248 3:0.73888524 4:0.1814112 \n-1 1:0.7608844 2:0.25428655 3:0.73888524 4:0.24370254 \n-1 1:0.82057107 2:0.30563046 3:0.73888524 4:0.30618093 \n-1 1:0.89455431 2:0.39394543 3:0.73888524 4:0.41860883 \n-1 1:0.16873718 2:0.15491045 3:0.95719598 4:0.079392181 \n-1 1:0.45188506 2:0.22731935 3:0.95719598 4:0.16130023 \n-0.8676044738986739 1:0.76536179 2:0.36671253 3:0.95719598 4:0.34343984 \n0.6504146395675607 1:2.220446e-16 2:0.23907071 3:0.65112312 4:0.038179135 \n1 1:0.42756068 2:0.33322794 3:0.65112312 4:0.144644 \n1 1:0.54211376 2:0.37139949 3:0.65112312 4:0.1921988 \n1 1:0.59120008 2:0.38742794 3:0.65112312 4:0.20324125 \n1 1:0.61558961 2:0.40700327 3:0.65112312 4:0.23911229 \n1 1:0.66410067 2:0.42453917 3:0.65112312 4:0.25030438 \n1 1:0.77796278 2:0.50015434 3:0.65112312 4:0.35266323 \n1 1:0.850087 2:0.56409596 3:0.65112312 4:0.44272339 \n0.3373403277064526 1:0.89007769 2:0.6105181 3:0.65112312 4:0.51063948 \n1 1:0.2919114 2:0.32670389 3:0.70765261 4:0.16789622 \n1 1:0.56327043 2:0.41097052 3:0.70765261 4:0.28869814 \n-0.9667756382666468 1:0.69223575 2:0.44677163 3:0.70765261 4:0.30435865 \n1 1:0.7570134 2:0.52053937 3:0.70765261 4:0.45274665 \n-1 1:0.93882855 2:0.64245784 3:0.70765261 4:0.54772182 \n-0.04571890291909872 1:0.56052264 2:0.31230263 3:0.27988388 4:0.16193225 \n-1 1:0.70082836 2:0.36112001 3:0.27988388 4:0.2051139 \n1 1:0.73029842 2:0.38872215 3:0.27988388 4:0.2447673 \n1 1:0.86760546 2:0.48182811 3:0.27988388 4:0.33403096 \n1 1:0.87147234 2:0.48882625 3:0.27988388 4:0.34344882 \n1 1:0.95086917 2:0.55599973 3:0.27988388 4:0.39368584 \n1 1:0.67102703 2:0.16297436 3:1 4:0.1833146 \n1 1:0.72313816 2:0.19544136 3:1 4:0.22168406 \n1 1:0.78939255 2:0.22653651 3:1 4:0.24606121 \n1 1:0.83915519 2:0.27026774 3:1 4:0.29560442 \n-1 1:0.47596853 2:0.4846003 3:0.60048989 4:0.30839395 \n-1 1:0.6683492 2:0.56626182 3:0.60048989 4:0.40875179 \n-1 1:0.76380856 2:0.60596099 3:0.60048989 4:0.45269953 \n-1 1:0.8078454 2:0.66094735 3:0.60048989 4:0.52147761 \n"
41
+ }
42
+ }
ffmpeg-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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-6.1-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