Spaces:
Configuration error
Configuration error
Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +3 -0
- .gitignore +10 -0
- LICENSE +21 -0
- README.md +286 -13
- Untitled.ipynb +93 -0
- assets/BBOX_SHIFT.md +26 -0
- assets/demo/man/man.png +3 -0
- assets/demo/monalisa/monalisa.png +0 -0
- assets/demo/musk/musk.png +0 -0
- assets/demo/sit/sit.jpeg +0 -0
- assets/demo/sun1/sun.png +0 -0
- assets/demo/sun2/sun.png +0 -0
- assets/demo/video1/video1.png +0 -0
- assets/demo/yongen/yongen.jpeg +0 -0
- assets/figs/landmark_ref.png +0 -0
- assets/figs/musetalk_arc.jpg +0 -0
- cmd.txt +1 -0
- configs/inference/my_conf.yaml +6 -0
- configs/inference/test.yaml +10 -0
- ffmpeg-6.1-amd64-static/GPLv3.txt +674 -0
- ffmpeg-6.1-amd64-static/ffmpeg +3 -0
- ffmpeg-6.1-amd64-static/ffprobe +3 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-all.txt +0 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-bitstream-filters.txt +863 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-codecs.txt +0 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-devices.txt +1904 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-filters.txt +0 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-formats.txt +0 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-protocols.txt +1960 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-resampler.txt +259 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-scaler.txt +156 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg-utils.txt +1256 -0
- ffmpeg-6.1-amd64-static/manpages/ffmpeg.txt +0 -0
- ffmpeg-6.1-amd64-static/manpages/ffprobe.txt +976 -0
- ffmpeg-6.1-amd64-static/model/000-PLEASE-README.TXT +4 -0
- ffmpeg-6.1-amd64-static/model/other_models/model_V8a.model +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflx_v1.json +42 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflx_v1.pkl +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflx_v1.pkl.model +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflx_vmaff_rf_v1.pkl +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflx_vmaff_rf_v2.pkl +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_libsvmnusvr_currentbest.pkl.model +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv1.pkl +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv1.pkl.model +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv2.pkl +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv2.pkl.model +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv3.pkl +3 -0
- ffmpeg-6.1-amd64-static/model/other_models/nflxall_vmafv3.pkl.model +3 -0
- 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 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+

|
| 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 |
+

|
| 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
|
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
|