Documentation des périphériques FFmpeg
1 Description
Ce document décrit les périphériques d'entrée et de sortie fournis par la bibliothèque libavdevice.
2 Options des périphériques
La bibliothèque libavdevice fournit la même interface que libavformat. Autrement dit, un périphérique d'entrée est considéré comme un demuxer et un périphérique de sortie comme un muxer, et l'interface ainsi que les options génériques de périphérique sont les mêmes que celles fournies par libavformat (voir le manuel ffmpeg-formats).
En outre, chaque périphérique d'entrée ou de sortie peut prendre en charge des options dites privées, spécifiques à ce composant.
Les options peuvent être définies en indiquant -option value dans les outils FFmpeg, en définissant explicitement la valeur dans les options AVFormatContext du périphérique, ou, pour un usage programmatique, via l'API libavutil/opt.h.
3 Périphériques d'entrée
Les périphériques d'entrée sont des éléments configurés dans FFmpeg qui permettent d'accéder aux données provenant d'un périphérique multimédia connecté à votre système.
Lorsque vous configurez votre build FFmpeg, tous les périphériques d'entrée pris en charge sont activés par défaut. Vous pouvez lister tous les périphériques disponibles avec l'option de configuration "–list-indevs".
Vous pouvez désactiver tous les périphériques d'entrée avec l'option de configuration "–disable-indevs", activer sélectivement un périphérique d'entrée avec l'option "–enable-indev=INDEV", ou désactiver un périphérique d'entrée particulier avec l'option "–disable-indev=INDEV".
L'option "-devices" des outils ff* affiche la liste des périphériques d'entrée pris en charge.
Voici une description des périphériques d'entrée disponibles à ce jour.
3.1 alsa
Périphérique d'entrée ALSA (Advanced Linux Sound Architecture).
Pour activer ce périphérique d'entrée lors de la configuration, libasound doit être installé sur votre système.
Ce périphérique permet de capturer depuis un périphérique ALSA. Le nom du périphérique à capturer doit être un identifiant de carte ALSA.
Un identifiant ALSA a la syntaxe suivante :
hw:CARD[,DEV[,SUBDEV]]
où les éléments DEV et SUBDEV sont facultatifs.
Les trois arguments (dans l'ordre : CARD,DEV,SUBDEV) spécifient le numéro ou l'identifiant de carte, le numéro de périphérique et le numéro de sous-périphérique (-1 signifie n'importe lequel).
Pour voir la liste des cartes reconnues à ce jour par votre système, consultez les fichiers /proc/asound/cards et /proc/asound/devices.
Par exemple, pour capturer avec ffmpeg depuis un périphérique ALSA avec l'id de carte 0, vous pouvez exécuter la commande :
ffmpeg -f alsa -i hw:0 alsaout.wav
Pour plus d'informations, voir : http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
3.1.1 Options
sample_rate
Définit la fréquence d'échantillonnage en Hz. La valeur par défaut est 48000.
channels
Définit le nombre de canaux. La valeur par défaut est 2.
3.2 android_camera
Périphérique d'entrée caméra Android.
Ce périphérique d'entrée utilise l'API Android Camera2 NDK, disponible sur les périphériques de niveau d'API 24 et supérieur. La disponibilité d'android_camera est détectée automatiquement lors de la configuration.
Ce périphérique permet de capturer depuis toutes les caméras d'un appareil Android intégrées à l'API Camera2 NDK.
Les caméras disponibles sont énumérées en interne et peuvent être sélectionnées avec le paramètre camera_index. La chaîne du fichier d'entrée est ignorée.
En général, la caméra arrière a l'index 0 et la caméra avant a l'index 1.
3.2.1 Options
video_size
Définit la taille vidéo sous la forme d'une chaîne telle que 640x480 ou hd720. Se rabat sur la première configuration disponible signalée par Android si la taille vidéo demandée n'est pas disponible, ou par défaut.
framerate
Définit la fréquence d'images vidéo. Se rabat sur la première configuration disponible signalée par Android si la fréquence demandée n'est pas disponible, ou par défaut (-1).
camera_index
Définit l'index de la caméra à utiliser. La valeur par défaut est 0.
input_queue_size
Définit le nombre maximal d'images à mettre en tampon. La valeur par défaut est 5.
3.3 avfoundation
Périphérique d'entrée AVFoundation.
AVFoundation est aujourd'hui le framework recommandé par Apple pour la capture de flux sur OSX >= 10.7 ainsi que sur iOS.
Le nom de fichier d'entrée doit être indiqué selon la syntaxe suivante :
-i "[[VIDEO]:[AUDIO]]"
La première entrée sélectionne l'entrée vidéo tandis que la seconde sélectionne l'entrée audio. Le flux doit être indiqué par le nom du périphérique ou son index, tel qu'affiché dans la liste des périphériques. Il est également possible de choisir le périphérique d'entrée vidéo et/ou audio par index avec -video_device_index
Tous les périphériques disponibles peuvent être énumérés avec -list_devices true, qui liste tous les noms de périphériques et les index correspondants.
Il existe deux alias de nom de périphérique :
default
Sélectionne le périphérique AVFoundation par défaut du type correspondant.
none
N'enregistre pas le type de média correspondant. Cela équivaut à indiquer un nom ou un index de périphérique vide.
3.3.1 Options
AVFoundation prend en charge les options suivantes :
-list_devices
Si la valeur est true, la liste de tous les périphériques d'entrée disponibles est fournie, avec tous les noms de périphériques et leurs index.
-video_device_index
Indique le périphérique vidéo par son index. Prime sur toute valeur indiquée dans le nom de fichier d'entrée.
-audio_device_index
Indique le périphérique audio par son index. Prime sur toute valeur indiquée dans le nom de fichier d'entrée.
-pixel_format
Demande au périphérique vidéo d'utiliser un pixel format spécifique. Si le format indiqué n'est pas pris en charge, la liste des formats disponibles est fournie et le premier de cette liste est utilisé à la place. Les pixel formats disponibles sont : monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, yuv420p, nv12, yuyv422, gray
-framerate
Définit la fréquence d'images de la capture. La valeur par défaut est ntsc, correspondant à une fréquence d'images de 30000/1001.
-video_size
Définit la taille des images vidéo.
-capture_cursor
Capture le pointeur de la souris. La valeur par défaut est 0.
-capture_mouse_clicks
Capture les clics de souris à l'écran. La valeur par défaut est 0.
-capture_raw_data
Capture les données brutes du périphérique. La valeur par défaut est 0. L'utilisation de cette option peut avoir pour effet que les données sous-jacentes transmises au framework AVFoundation soient reçues telles quelles. Par exemple, pour les périphériques multiplexés qui envoient des données DV brutes au framework (comme les caméscopes à bande), définir cette option à false fait que seules les images vidéo extraites, capturées dans le pixel format indiqué, sont reçues. La définir à true permet de recevoir le flux DV brut sans modification.
3.3.2 Exemples
-
Affiche la liste des périphériques pris en charge par AVFoundation, puis quitte :
$ ffmpeg -f avfoundation -list_devices true -i "" -
Enregistre la vidéo du périphérique vidéo 0 et l'audio du périphérique audio 0 dans out.avi :
$ ffmpeg -f avfoundation -i "0:0" out.avi -
Enregistre la vidéo du périphérique vidéo 2 et l'audio du périphérique audio 1 dans out.avi :
$ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi -
Enregistre la vidéo du périphérique vidéo par défaut du système avec le pixel format bgr0, sans enregistrer d'audio, dans out.avi :
$ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi -
Enregistre des données DV brutes depuis un périphérique d'entrée adapté et écrit la sortie dans out.dv :
$ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
3.4 decklink
Le périphérique d'entrée decklink fournit des capacités de capture pour les périphériques Blackmagic DeckLink.
Pour activer ce périphérique d'entrée, le SDK Blackmagic DeckLink est nécessaire, et la configuration doit inclure les --extra-cflags et --extra-ldflags appropriés. Sous Windows, les fichiers IDL doivent être passés par widl.
DeckLink est très exigeant quant aux formats qu'il prend en charge. Le pixel format de l'entrée peut être défini avec raw_format. La fréquence d'images et la taille vidéo doivent être déterminées pour votre périphérique avec -list_formats 1. La fréquence d'échantillonnage audio est toujours de 48 kHz, et le nombre de canaux peut être 2, 8 ou 16. Notez que tous les canaux audio sont regroupés dans une seule piste audio.
3.4.1 Options
list_devices
Si la valeur est true, affiche la liste des périphériques puis quitte. La valeur par défaut est false. Cette option est obsolète ; veuillez utiliser l'option -sources de ffmpeg pour lister les périphériques d'entrée disponibles.
list_formats
Si la valeur est true, affiche la liste des formats pris en charge puis quitte. La valeur par défaut est false.
format_code
Définit le format vidéo d'entrée sur le format indiqué par le FourCC. Pour voir les valeurs prises en charge par votre/vos périphérique(s), utilisez list_formats. Notez qu'il existe un FourCC 'pal ' qui peut aussi être utilisé sous la forme pal (3 lettres). Le comportement par défaut est la détection automatique du format vidéo d'entrée, si le matériel le prend en charge.
raw_format
Définit le pixel format de la vidéo capturée. Les valeurs disponibles sont :
‘auto’
Il s'agit de la valeur par défaut, qui correspond à 8-bit YUV 422 ou 8-bit ARGB si la détection automatique du format est utilisée, et à 8-bit YUV 422 dans le cas contraire.
‘uyvy422’
8-bit YUV 422.
‘yuv422p10’
10-bit YUV 422.
‘argb’
8-bit RGB.
‘bgra’
8-bit RGB.
‘rgb10’
10-bit RGB.
teletext_lines
Si la valeur est différente de zéro, un flux télétexte supplémentaire est capturé à partir des données ancillaires verticales. Les sources SD PAL (576i) et HD (1080i ou 1080p) sont prises en charge. Pour les sources HD, les paquets OP47 sont décodés.
Cette option est un masque de bits des lignes VBI SD PAL capturées, à savoir les lignes 6 à 22 et les lignes 318 à 335. La ligne 6 est le LSB du masque. Les lignes sélectionnées qui ne contiennent pas d'information télétexte sont ignorées. Vous pouvez utiliser la constante spéciale all pour sélectionner toutes les lignes possibles, ou standard pour ignorer les lignes 6, 318 et 319, qui ne sont pas compatibles avec tous les récepteurs.
Pour les sources SD, ffmpeg doit être compilé avec --enable-libzvbi. Pour les sources HD, sur les anciens modèles de carte DeckLink (antérieurs au 4K), la capture doit se faire en mode 10 bits.
channels
Définit le nombre de canaux audio à capturer. Doit être ‘2’, ‘8’ ou ‘16’. La valeur par défaut est ‘2’.
duplex_mode
Définit le mode duplex/profil du périphérique decklink. Doit être ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’ ou ‘four_sub_device_half’. La valeur par défaut est ‘unset’.
Remarque : le SDK DeckLink 11.0 a remplacé la propriété duplex par une propriété profil. Pour les DeckLink Duo 2 et DeckLink Quad 2, un profil est partagé entre les 2 sous-périphériques qui utilisent les mêmes connecteurs. Pour le DeckLink 8K Pro, un profil est partagé entre les 4 sous-périphériques. Le DeckLink 8K Pro prend donc en charge quatre profils.
Modes de profil valides pour le DeckLink 8K Pro (avec DeckLink SDK >= 11.0) : ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’
Modes de profil valides pour le DeckLink Quad 2 et le DeckLink Duo 2 : ‘half’, ‘full’
timecode_format
Type de timecode à inclure dans les métadonnées de l'image et du flux vidéo. Doit être ‘none’, ‘rp188vitc’, ‘rp188vitc2’, ‘rp188ltc’, ‘rp188hfr’, ‘rp188any’, ‘vitc’, ‘vitc2’ ou ‘serial’. La valeur par défaut est ‘none’ (non inclus).
Pour bien prendre en charge les timecodes à 50/60 fps, l'ordre des types de timecode interrogés pour ‘rp188any’ est HFR, VITC1, VITC2 puis LTC pour un contenu à plus de 30 fps. Notez que cet ordre diffère légèrement de celui utilisé par l'API DeckLink, à savoir HFR, VITC1, LTC, VITC2.
video_input
Définit la source d'entrée vidéo. Doit être ‘unset’, ‘sdi’, ‘hdmi’, ‘optical_sdi’, ‘component’, ‘composite’ ou ‘s_video’. La valeur par défaut est ‘unset’.
audio_input
Définit la source d'entrée audio. Doit être ‘unset’, ‘embedded’, ‘aes_ebu’, ‘analog’, ‘analog_xlr’, ‘analog_rca’ ou ‘microphone’. La valeur par défaut est ‘unset’.
video_pts
Définit la source de l'horodatage des paquets vidéo. Doit être ‘video’, ‘audio’, ‘reference’, ‘wallclock’ ou ‘abs_wallclock’. La valeur par défaut est ‘video’.
audio_pts
Définit la source de l'horodatage des paquets audio. Doit être ‘video’, ‘audio’, ‘reference’, ‘wallclock’ ou ‘abs_wallclock’. La valeur par défaut est ‘audio’.
draw_bars
Si la valeur est ‘true’, des barres de couleur sont dessinées en cas de perte de signal. La valeur par défaut est ‘true’. Cette option est obsolète ; veuillez utiliser l'option signal_loss_action.
signal_loss_action
Définit l'action à effectuer en cas de perte de signal. Accepte l'une des valeurs suivantes :
1, none
Ne fait rien en cas de perte de signal. Cela donne généralement des images noires.
2, bars
Dessine des barres de couleur en cas de perte de signal. Pris en charge uniquement pour les signaux d'entrée 8 bits.
3, repeat
Répète la dernière image vidéo en cas de perte de signal.
La valeur par défaut est ‘bars’.
queue_size
Définit la taille maximale du tampon d'entrée en octets. Si la mise en tampon atteint cette valeur, les images entrantes sont abandonnées. La valeur par défaut est ‘1073741824’.
audio_depth
Définit la profondeur de bits des échantillons audio. Doit être ‘16’ ou ‘32’. La valeur par défaut est ‘16’.
decklink_copyts
Si la valeur est true, les horodatages sont transmis tels quels, sans retirer le décalage initial. La valeur par défaut est false.
timestamp_align
Alignement de l'heure de début de capture, en secondes. Si la valeur est différente de zéro, les images d'entrée sont abandonnées jusqu'à ce que l'horodatage système s'aligne sur la valeur configurée. Un écart d'alignement pouvant aller jusqu'à une durée d'image est toléré. Ceci est utile pour maintenir la synchronisation d'entrée entre N périphériques matériels différents déployés pour une redondance ’N-way’. L'heure système des différents périphériques matériels doit être synchronisée avec des protocoles tels que NTP ou PTP avant d'utiliser cette option. Notez que cette méthode n'est pas infaillible. Dans certains cas limites, la synchronisation d'entrée peut ne pas se produire en raison de la gigue d'ordonnancement des threads du système d'exploitation. La synchronisation peut se décaler d'une image ou, plus rarement, de timestamp_align secondes. La valeur par défaut est ‘0’.
wait_for_tc (bool)
Abandonne les images jusqu'à la réception d'une image avec timecode. Le timecode série n'est parfois pas reçu avec la première image d'entrée. Dans ce cas, le timecode du flux stocké est inexact. Si cette option est définie à true, les images d'entrée sont abandonnées jusqu'à la réception d'une image avec timecode. L'option timecode_format doit être indiquée. La valeur par défaut est false.
enable_klv(bool)
Si la valeur est true, extrait les données KLV du VANC et produit des paquets KLV. Les paquets KLV VANC sont rassemblés selon les champs MID et PSC, puis regroupés en un seul paquet KLV. La valeur par défaut est false.
3.4.2 Exemples
-
Liste les périphériques d'entrée :
ffmpeg -sources decklink -
Liste les formats pris en charge :
ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro' -
Capture un clip vidéo en 1080i50 :
ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi -
Capture un clip vidéo en 1080i50 10 bits :
ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi -
Capture un clip vidéo en 1080i50 avec 16 canaux audio :
ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
3.5 dshow
Périphérique d'entrée Windows DirectShow.
La prise en charge de DirectShow est activée lorsque FFmpeg est compilé avec le projet mingw-w64. Pour l'instant, seuls les périphériques audio et vidéo sont pris en charge.
Plusieurs périphériques peuvent être ouverts comme des entrées distinctes, mais ils peuvent également être ouverts sur la même entrée, ce qui améliore normalement la synchronisation entre eux.
Le nom d'entrée doit respecter le format :
TYPE=NAME[:TYPE=NAME]
où TYPE peut être audio ou video, et NAME est le nom du périphérique ou son nom alternatif.
3.5.1 Options
Si aucune option n'est indiquée, les valeurs par défaut du périphérique sont utilisées. Si le périphérique ne prend pas en charge les options demandées, l'ouverture échoue.
video_size
Définit la taille vidéo de la vidéo capturée.
framerate
Définit la fréquence d'images de la vidéo capturée.
sample_rate
Définit la fréquence d'échantillonnage (en Hz) de l'audio capturé.
sample_size
Définit la taille des échantillons (en bits) de l'audio capturé.
channels
Définit le nombre de canaux de l'audio capturé.
list_devices
Si la valeur est true, affiche la liste des périphériques puis quitte.
list_options
Si la valeur est true, affiche la liste des options du périphérique sélectionné puis quitte.
video_device_number
Définit le numéro de périphérique vidéo pour les périphériques de même nom (commence à 0, valeur par défaut 0).
audio_device_number
Définit le numéro de périphérique audio pour les périphériques de même nom (commence à 0, valeur par défaut 0).
pixel_format
Sélectionne le pixel format à utiliser par DirectShow. Ne peut être défini que si le codec vidéo n'est pas défini ou est défini sur rawvideo.
audio_buffer_size
Définit la taille du tampon du périphérique audio en millisecondes (ce qui peut directement affecter la latence, selon le périphérique). Par défaut, la taille de tampon par défaut du périphérique audio est utilisée (généralement un multiple de 500ms). Une valeur trop basse peut dégrader les performances. Voir aussi http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx
video_pin_name
Sélectionne la broche de capture vidéo à utiliser par son nom ou son nom alternatif.
audio_pin_name
Sélectionne la broche de capture audio à utiliser par son nom ou son nom alternatif.
crossbar_video_input_pin_number
Sélectionne le numéro de broche d'entrée vidéo pour le périphérique crossbar. Ce signal est acheminé vers la broche de sortie Video Decoder du périphérique crossbar. Notez que modifier cette valeur peut affecter les invocations suivantes (définit une nouvelle valeur par défaut) jusqu'au redémarrage du système.
crossbar_audio_input_pin_number
Sélectionne le numéro de broche d'entrée audio pour le périphérique crossbar. Ce signal est routé vers la broche de sortie Audio Decoder du périphérique crossbar. Notez que modifier cette valeur peut affecter les invocations suivantes (définit une nouvelle valeur par défaut) jusqu'au redémarrage du système.
show_video_device_dialog
Si la valeur est true, avant le début de la capture, une boîte de dialogue s'affiche pour l'utilisateur final, lui permettant de modifier manuellement les propriétés et la configuration du filtre vidéo. Notez que pour les périphériques crossbar, il peut parfois être nécessaire d'ajuster les valeurs de cette boîte de dialogue pour basculer entre les fréquences d'images, tailles, entrelacement, etc. d'entrée PAL (25 fps) et NTSC (29.97). Modifier ces valeurs peut permettre différentes fréquences de balayage/d'images et éviter les barres vertes en bas de l'image, le scintillement des lignes de balayage, etc. Notez qu'avec certains périphériques, modifier ces propriétés peut aussi affecter les invocations suivantes (définit de nouvelles valeurs par défaut) jusqu'au redémarrage du système.
show_audio_device_dialog
Si la valeur est true, avant le début de la capture, une boîte de dialogue s'affiche pour l'utilisateur final, lui permettant de modifier manuellement les propriétés et la configuration du filtre audio.
show_video_crossbar_connection_dialog
Si la valeur est true, avant le début de la capture, une boîte de dialogue s'affiche pour l'utilisateur final, lui permettant de modifier manuellement le routage des broches crossbar, lors de l'ouverture d'un périphérique vidéo.
show_audio_crossbar_connection_dialog
Si la valeur est true, avant le début de la capture, une boîte de dialogue s'affiche pour l'utilisateur final, lui permettant de modifier manuellement le routage des broches crossbar, lors de l'ouverture d'un périphérique audio.
show_analog_tv_tuner_dialog
Si la valeur est true, avant le début de la capture, une boîte de dialogue s'affiche pour l'utilisateur final, lui permettant de modifier manuellement les chaînes et fréquences de télévision.
show_analog_tv_tuner_audio_dialog
Si la valeur est true, avant le début de la capture, une boîte de dialogue s'affiche pour l'utilisateur final, lui permettant de modifier manuellement l'audio TV (par exemple mono ou stéréo, langue A, B ou C).
audio_device_load
Charge un périphérique de filtre de capture audio depuis un fichier au lieu de le rechercher par son nom. Des paramètres supplémentaires peuvent aussi être chargés, si le filtre prend en charge la sérialisation de ses propriétés. Pour utiliser cette option, une source de capture audio doit être indiquée, mais elle peut être quelconque, même fictive.
audio_device_save
Enregistre dans un fichier le périphérique de filtre de capture audio en cours d'utilisation et ses paramètres (si le filtre le prend en charge). Si un fichier du même nom existe, il est écrasé.
video_device_load
Charge un périphérique de filtre de capture vidéo depuis un fichier au lieu de le rechercher par son nom. Des paramètres supplémentaires peuvent aussi être chargés, si le filtre prend en charge la sérialisation de ses propriétés. Pour utiliser cette option, une source de capture vidéo doit être indiquée, mais elle peut être quelconque, même fictive.
video_device_save
Enregistre dans un fichier le périphérique de filtre de capture vidéo en cours d'utilisation et ses paramètres (si le filtre le prend en charge). Si un fichier du même nom existe, il est écrasé.
use_video_device_timestamps
Si la valeur est false, l'horodatage des images vidéo est dérivé de l'horloge murale (wallclock) au lieu de l'horodatage fourni par le périphérique de capture. Cela permet de contourner les périphériques qui fournissent des horodatages peu fiables.
3.5.2 Exemples
-
Affiche la liste des périphériques pris en charge par DirectShow, puis quitte :
$ ffmpeg -list_devices true -f dshow -i dummy -
Ouvre le périphérique vidéo Camera :
$ ffmpeg -f dshow -i video="Camera" -
Ouvre le deuxième périphérique vidéo nommé Camera :
$ ffmpeg -f dshow -video_device_number 1 -i video="Camera" -
Ouvre le périphérique vidéo Camera et le périphérique audio Microphone :
$ ffmpeg -f dshow -i video="Camera":audio="Microphone" -
Affiche la liste des options prises en charge par le périphérique sélectionné, puis quitte :
$ ffmpeg -list_options true -f dshow -i video="Camera" -
Indique les noms de broches à capturer par nom ou nom alternatif, et indique un nom de périphérique alternatif :
$ 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" -
Configure un périphérique crossbar, en indiquant les broches crossbar, et permet à l'utilisateur d'ajuster les propriétés de capture vidéo au démarrage :
$ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0 -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
3.6 fbdev
Périphérique d'entrée framebuffer Linux.
Le framebuffer Linux est une couche d'abstraction graphique indépendante du matériel permettant d'afficher des graphismes sur un moniteur d'ordinateur, typiquement sur la console. On y accède via un nœud de périphérique fichier, généralement /dev/fb0.
Pour des informations plus détaillées, lisez le fichier Documentation/fb/framebuffer.txt inclus dans l'arborescence des sources Linux.
Voir aussi http://linux-fbdev.sourceforge.net/, et fbset(1).
Pour enregistrer depuis le périphérique framebuffer /dev/fb0 avec ffmpeg :
ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi
Vous pouvez capturer une seule image d'écran avec la commande :
ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg
3.6.1 Options
framerate
Définit la fréquence d'images. La valeur par défaut est 25.
3.7 gdigrab
Périphérique de capture d'écran Win32 basé sur GDI.
Ce périphérique vous permet de capturer une région de l'affichage sous Windows.
Parmi les options possibles pour les noms de fichiers d'entrée figurent des éléments tels que :
desktop
ou
title=window_title
ou
hwnd=window_hwnd
La première option capture le bureau entier, ou une région fixe du bureau. Les deuxième et troisième options capturent quant à elles le contenu d'une seule fenêtre, quelle que soit sa position à l'écran.
Par exemple, pour capturer le bureau entier avec ffmpeg :
ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
Capture une région de 640x480 à la position 10,20 :
ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg
Capture le contenu de la fenêtre nommée "Calculator"
ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg
3.7.1 Options
draw_mouse
Indique s'il faut dessiner le pointeur de la souris. Utilisez la valeur 0 pour ne pas dessiner le pointeur. La valeur par défaut est 1.
framerate
Définit la fréquence d'images de la capture. La valeur par défaut est ntsc, correspondant à une fréquence d'images de 30000/1001.
show_region
Affiche la région capturée à l'écran.
Si show_region est défini à 1, la région de capture est indiquée à l'écran. Avec cette option, il est facile de savoir ce qui est capturé lorsque seule une partie de l'écran est capturée.
Notez que show_region est incompatible avec la capture du contenu d'une seule fenêtre.
Par exemple :
ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
video_size
Définit la taille des images vidéo. Par défaut, l'écran entier est capturé si desktop est sélectionné, ou la fenêtre entière si title=window_title est sélectionné.
offset_x
Lors de la capture d'une région avec video_size, définit la distance depuis le bord gauche de l'écran ou du bureau.
Notez que le calcul du décalage se fait à partir du coin supérieur gauche du moniteur principal sous Windows. Si un moniteur est positionné à gauche de votre moniteur principal, il faut utiliser une valeur offset_x négative pour déplacer la région vers ce moniteur.
offset_y
Lors de la capture d'une région avec video_size, définit la distance depuis le bord supérieur de l'écran ou du bureau.
Notez que le calcul du décalage se fait à partir du coin supérieur gauche du moniteur principal sous Windows. Si un moniteur est positionné au-dessus de votre moniteur principal, il faut utiliser une valeur offset_y négative pour déplacer la région vers ce moniteur.
3.8 iec61883
Périphérique d'entrée FireWire DV/HDV utilisant libiec61883.
Pour activer ce périphérique d'entrée, libiec61883, libraw1394 et libavc1394 doivent être installés sur votre système. Utilisez l'option de configuration --enable-libiec61883 pour compiler avec le périphérique activé.
Le périphérique de capture iec61883 prend en charge la capture depuis un périphérique vidéo connecté via IEEE1394 (FireWire), en utilisant libiec61883 et la nouvelle pile FireWire de Linux (juju). C'est la méthode d'entrée DV/HDV par défaut à partir du noyau Linux 2.6.37, l'ancienne pile FireWire ayant été retirée.
Indiquez le port FireWire à utiliser comme fichier d'entrée, ou "auto" pour choisir le premier port connecté.
3.8.1 Options
dvtype
Remplace la détection automatique du DV/HDV. À n'utiliser que si la détection automatique ne fonctionne pas, ou si l'utilisation d'un type de périphérique différent doit être interdite. Traiter un périphérique DV comme un HDV (ou inversement) ne fonctionne pas et entraîne un comportement indéfini. Les valeurs auto, dv et hdv sont prises en charge.
dvbuffer
Définit la taille maximale du tampon des données entrantes, en images. Pour le DV, il s'agit d'une valeur exacte. Pour le HDV, ce n'est pas exact en nombre d'images, car le HDV n'a pas de taille d'image fixe.
dvguid
Sélectionne le périphérique de capture en indiquant son GUID. La capture s'effectue uniquement depuis le périphérique indiqué et échoue si aucun périphérique avec le GUID donné n'est trouvé. Ceci est utile pour sélectionner l'entrée lorsque plusieurs périphériques sont connectés simultanément. Consultez /sys/bus/firewire/devices pour connaître les GUID.
3.8.2 Exemples
-
Capture et affiche l'entrée d'un périphérique FireWire DV/HDV.
ffplay -f iec61883 -i auto -
Capture et enregistre l'entrée d'un périphérique FireWire DV/HDV, avec un tampon de paquets de 100000 paquets si la source est HDV.
ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
3.9 jack
Périphérique d'entrée JACK.
Pour activer ce périphérique d'entrée lors de la configuration, libjack doit être installé sur votre système.
Un périphérique d'entrée JACK crée un ou plusieurs clients JACK accessibles en écriture, un par canal audio, nommés client_name:input_N, où client_name est le nom fourni par l'application et N un numéro identifiant le canal. Chaque client accessible en écriture envoie les données acquises au périphérique d'entrée FFmpeg.
Une fois qu'un ou plusieurs clients JACK accessibles en lecture ont été créés, il faut les connecter à un ou plusieurs clients JACK accessibles en écriture.
Pour connecter ou déconnecter des clients JACK, vous pouvez utiliser les programmes jack_connect et jack_disconnect, ou passer par une interface graphique, par exemple avec qjackctl.
Pour lister les clients JACK et leurs propriétés, vous pouvez invoquer la commande jack_lsp.
Voici un exemple montrant comment capturer un client JACK accessible en lecture avec ffmpeg.
# Create a JACK writable client with name "ffmpeg".
$ ffmpeg -f jack -i ffmpeg -y out.wav
# Start the sample jack_metro readable client.
$ jack_metro -b 120 -d 0.2 -f 4000
# List the current JACK clients.
$ jack_lsp -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
ffmpeg:input_1
metro:120_bpm
# Connect metro to the ffmpeg writable client.
$ jack_connect metro:120_bpm ffmpeg:input_1
Pour plus d'informations, lisez : http://jackaudio.org/
3.9.1 Options
channels
Définit le nombre de canaux. La valeur par défaut est 2.
3.10 kmsgrab
Périphérique d'entrée vidéo KMS.
Capture le framebuffer de scanout KMS associé à un CRTC ou un plane indiqué, sous la forme d'un objet DRM pouvant être transmis à d'autres fonctions matérielles.
Nécessite DRM master ou CAP_SYS_ADMIN pour s'exécuter.
Si tout cela n'est pas clair pour vous, ce périphérique n'est probablement pas ce qu'il vous faut. Regardez plutôt x11grab.
3.10.1 Options
device
Périphérique DRM sur lequel capturer. La valeur par défaut est /dev/dri/card0.
format
Pixel format du framebuffer. Peut être détecté automatiquement sous Linux 5.7 ou ultérieur, mais doit être indiqué pour les versions antérieures. La valeur par défaut est bgr0, le format le plus courant utilisé par la console Linux et le serveur Xorg X.
format_modifier
Modificateur de format à signaler sur les images de sortie. Nécessaire pour une importation correcte dans certaines API. Peut être détecté automatiquement sous Linux 5.7 ou ultérieur, mais doit être fourni explicitement si besoin dans les versions antérieures. Voir la documentation de libdrm pour les valeurs possibles.
crtc_id
ID de CRTC KMS définissant la source de capture. Le premier plane actif du CRTC indiqué est utilisé.
plane_id
ID de plane KMS définissant la source de capture. Par défaut, le premier plane actif trouvé est utilisé si ni crtc_id ni plane_id ne sont indiqués.
framerate
Fréquence d'images de la capture. Elle n'est synchronisée à aucun changement de page ni modification du framebuffer ; elle définit simplement l'intervalle d'échantillonnage du framebuffer. Échantillonner plus vite que la fréquence de mise à jour du framebuffer génère des images indépendantes avec le même contenu. La valeur par défaut est 30.
3.10.2 Exemples
-
Capture depuis le premier plane actif, télécharge le résultat sous forme d'images normales et encode. Cela ne fonctionne que si le framebuffer est à la fois linéaire et mappable ; sinon, le résultat peut être brouillé ou le téléchargement peut échouer.
ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 -
Capture depuis le CRTC ID 42 à 60fps, mappe le résultat vers VAAPI, convertit en NV12 et encode en H.264.
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 -
Pour ne capturer qu'une partie d'un plane, la sortie peut être rognée ; cela permet de capturer une seule fenêtre, à condition d'en connaître la position et la taille absolues. Par exemple, pour capturer et encoder le quart central d'un plane 1920x1080 :
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
3.11 lavfi
Périphérique d'entrée virtuel Libavfilter.
Ce périphérique d'entrée lit les données depuis les pads de sortie ouverts d'un filtergraph libavfilter.
Pour chaque sortie ouverte du filtergraph, le périphérique d'entrée crée un flux correspondant, associé à la sortie générée. Le filtergraph est indiqué via l'option graph.
3.11.1 Options
graph
Indique le filtergraph à utiliser comme entrée. Chaque sortie vidéo ouverte doit être étiquetée par une chaîne unique de la forme "outN", où N est un numéro commençant à 0 correspondant au flux d'entrée associé généré par le périphérique. La première sortie non étiquetée reçoit automatiquement l'étiquette "out0", mais toutes les autres doivent être indiquées explicitement.
Le suffixe "+subcc" peut être ajouté à l'étiquette de sortie pour créer un flux supplémentaire contenant les paquets de sous-titres codés associés à cette sortie (expérimental ; uniquement pour EIA-608 / CEA-708 pour l'instant). Les flux subcc sont créés après tous les flux normaux, dans l'ordre du flux correspondant. Par exemple, s'il existe "out19+subcc", "out7+subcc" et jusqu'à "out42", le flux #43 est le subcc du flux #7 et le flux #44 est le subcc du flux #19.
Si non indiqué, prend par défaut le nom de fichier indiqué pour le périphérique d'entrée.
graph_file
Définit le nom de fichier du filtergraph à lire et à envoyer aux autres filtres. La syntaxe du filtergraph est la même que celle indiquée par l'option graph.
dumpgraph
Écrit le graphe sur la sortie d'erreur.
3.11.2 Exemples
-
Crée un flux vidéo de couleur unie et le lit avec
ffplay:ffplay -f lavfi -graph "color=c=pink [out0]" dummy -
Comme l'exemple précédent, mais en utilisant le nom de fichier pour indiquer la description du graphe, et en omettant l'étiquette "out0" :
ffplay -f lavfi color=c=pink -
Crée trois sources vidéo de test filtrées différentes et les lit :
ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3 -
Lit un flux audio depuis un fichier avec la source amovie et le lit avec
ffplay:ffplay -f lavfi "amovie=test.wav" -
Lit un flux audio et un flux vidéo et les lit avec
ffplay:ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]" -
Vide les images décodées vers des fichiers image et les sous-titres codés vers une sauvegarde RCWT :
ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin
3.12 libcdio
Périphérique d'entrée Audio-CD basé sur libcdio.
Pour activer ce périphérique d'entrée lors de la configuration, libcdio doit être installé sur le système. Cela nécessite l'option de configuration --enable-libcdio.
Ce périphérique permet la lecture et la capture depuis un CD audio.
Par exemple, pour copier l'intégralité du CD audio situé dans /dev/sr0 avec ffmpeg, vous pouvez exécuter la commande :
ffmpeg -f libcdio -i /dev/sr0 cd.wav
3.12.1 Options
speed
Définit la vitesse de lecture du lecteur. La valeur par défaut est 0.
La vitesse est exprimée en unités de vitesse CD-ROM. Elle est définie par l'intermédiaire de la fonction libcdio cdio_cddap_speed_set. Sur de nombreux lecteurs de CD-ROM, indiquer une valeur trop élevée entraîne l'utilisation de la vitesse maximale.
paranoia_mode
Définit les indicateurs du mode de récupération paranoia. Accepte l'une des valeurs suivantes :
‘disable’ ‘verify’ ‘overlap’ ‘neverskip’ ‘full’
La valeur par défaut est ‘disable’.
Pour plus d'informations sur les modes de récupération disponibles, consultez la documentation du projet paranoia.
3.13 libdc1394
Périphérique d'entrée IIDC1394, basé sur libdc1394 et libraw1394.
Nécessite l'option de configuration --enable-libdc1394.
3.13.1 Options
framerate
Définit la fréquence d'images. La valeur par défaut est ntsc, correspondant à une fréquence d'images de 30000/1001.
pixel_format
Sélectionne le pixel format. La valeur par défaut est uyvy422.
video_size
Définit la taille vidéo sous la forme d'une chaîne telle que 640x480 ou hd720. La valeur par défaut est qvga.
3.14 openal
Le périphérique d'entrée OpenAL permet la capture audio sur tous les systèmes disposant d'une implémentation OpenAL 1.1 fonctionnelle.
Pour activer ce périphérique d'entrée lors de la configuration, les en-têtes et bibliothèques OpenAL doivent être installés sur le système, et FFmpeg doit être configuré avec --enable-openal.
Les en-têtes et bibliothèques OpenAL doivent normalement être fournis avec l'implémentation OpenAL utilisée, ou disponibles en téléchargement séparé (un SDK). Selon l'installation, il peut être nécessaire de préciser des options supplémentaires via --extra-cflags et --extra-ldflags afin que le système de compilation puisse localiser les en-têtes et bibliothèques OpenAL.
Voici une liste non exhaustive des implémentations OpenAL :
Creative
L'implémentation officielle pour Windows, offrant l'accélération matérielle sur les périphériques pris en charge ainsi qu'un repli logiciel. Voir http://openal.org/.
OpenAL Soft
Implémentation logicielle portable, open source (LGPL). Comprend des back-ends pour les API audio les plus courantes des systèmes d'exploitation Windows, Linux, Solaris et BSD. Voir http://kcat.strangesoft.net/openal.html.
Apple
OpenAL fait partie de Core Audio, l'interface audio officielle de Mac OS X. Voir http://developer.apple.com/technologies/mac/audio-and-video.html
Ce périphérique permet de capturer depuis un périphérique d'entrée audio pris en charge par OpenAL.
Le nom du périphérique à capturer doit être indiqué dans le nom de fichier fourni. Si une chaîne vide est fournie, le périphérique par défaut est automatiquement sélectionné. La liste des périphériques pris en charge peut être obtenue avec l'option list_devices.
3.14.1 Options
channels
Définit le nombre de canaux du signal audio capturé. Seules les valeurs 1 (mono) et 2 (stéréo) sont prises en charge à ce jour. La valeur par défaut est 2.
sample_size
Définit la taille d'échantillon (en bits) du signal audio capturé. Seules les valeurs 8 et 16 sont prises en charge à ce jour. La valeur par défaut est 16.
sample_rate
Définit la fréquence d'échantillonnage (en Hz) du signal audio capturé. La valeur par défaut est 44.1k.
list_devices
Si la valeur est true, affiche la liste des périphériques et quitte. La valeur par défaut est false.
3.14.2 Exemples
Affiche la liste des périphériques OpenAL pris en charge et quitte :
$ ffmpeg -list_devices true -f openal -i dummy out.ogg
Capture depuis le périphérique OpenAL DR-BT101 via PulseAudio :
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
Capture depuis le périphérique par défaut (notez la chaîne vide ” comme nom de fichier) :
$ ffmpeg -f openal -i '' out.ogg
Capture depuis deux périphériques simultanément, en écrivant dans deux fichiers différents, au sein de la même commande ffmpeg :
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
Remarque : certaines implémentations d'OpenAL ne prennent pas en charge la capture simultanée multiple – essayez la dernière version d'OpenAL Soft si la méthode ci-dessus ne fonctionne pas.
3.15 oss
Périphérique d'entrée Open Sound System.
Le nom de fichier à fournir au périphérique d'entrée est le nœud de périphérique représentant le périphérique d'entrée OSS ; il s'agit généralement de /dev/dsp.
Par exemple, pour capturer depuis /dev/dsp avec ffmpeg, utilisez la commande :
ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
Pour plus d'informations sur OSS, voir : http://manuals.opensound.com/usersguide/dsp.html
3.15.1 Options
sample_rate
Définit la fréquence d'échantillonnage en Hz. La valeur par défaut est 48000.
channels
Définit le nombre de canaux. La valeur par défaut est 2.
3.16 pulse
Périphérique d'entrée PulseAudio.
Pour activer ce périphérique de sortie, FFmpeg doit être configuré avec --enable-libpulse.
Le nom de fichier à fournir au périphérique d'entrée est un périphérique source ou la chaîne "default"
Pour lister les périphériques source de PulseAudio et leurs propriétés, vous pouvez exécuter la commande pactl list sources.
Plus d'informations sur PulseAudio sont disponibles sur http://www.pulseaudio.org.
3.16.1 Options
server
Se connecte à un serveur PulseAudio spécifique, indiqué par une adresse IP. Le serveur par défaut est utilisé si aucun n'est fourni.
name
Indique le nom d'application que PulseAudio utilise pour afficher les clients actifs ; par défaut, il s'agit de la chaîne LIBAVFORMAT_IDENT.
stream_name
Indique le nom de flux que PulseAudio utilise pour afficher les flux actifs ; par défaut, il s'agit de "record".
sample_rate
Indique la fréquence d'échantillonnage en Hz ; par défaut, 48 kHz est utilisé.
channels
Indique le nombre de canaux utilisés ; par défaut, 2 (stéréo) est défini.
frame_size
Cette option ne fait rien et est obsolète.
fragment_size
Indique la taille en octets du fragment de mise en tampon minimal dans PulseAudio ; cela affecte la latence audio. Par défaut, elle correspond à 50 ms de données.
wallclock
Définit le PTS initial à partir de l'heure actuelle. La valeur par défaut est 1.
3.16.2 Exemples
Enregistre un flux depuis le périphérique par défaut :
ffmpeg -f pulse -i default /tmp/pulse.wav
3.17 sndio
Périphérique d'entrée sndio.
Pour activer ce périphérique d'entrée lors de la configuration, libsndio doit être installé sur le système.
Le nom de fichier à fournir au périphérique d'entrée est le nœud de périphérique représentant le périphérique d'entrée sndio ; il s'agit généralement de /dev/audio0.
Par exemple, pour capturer depuis /dev/audio0 avec ffmpeg, utilisez la commande :
ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
3.17.1 Options
sample_rate
Définit la fréquence d'échantillonnage en Hz. La valeur par défaut est 48000.
channels
Définit le nombre de canaux. La valeur par défaut est 2.
3.18 video4linux2, v4l2
Périphérique d'entrée vidéo Video4Linux2.
"v4l2" peut être utilisé comme alias de "video4linux2".
Si FFmpeg est compilé avec la prise en charge de v4l-utils (via l'option de configuration --enable-libv4l2), il est possible de l'utiliser avec l'option de périphérique d'entrée -use_libv4l2.
Le nom du périphérique à capturer est un nœud de périphérique fichier ; les systèmes Linux créent généralement de tels nœuds automatiquement lorsque le périphérique (par exemple une webcam USB) est branché, sous un nom du type /dev/videoN, où N est un numéro associé au périphérique.
Les périphériques Video4Linux2 prennent généralement en charge un ensemble limité de tailles largeur×hauteur et de fréquences d'images. Il est possible de vérifier lesquelles sont prises en charge avec -list_formats all pour les périphériques Video4Linux2. Certains périphériques, comme les cartes TV, prennent en charge une ou plusieurs normes. Il est possible de lister toutes les normes prises en charge avec -list_standards all.
La base de temps des horodatages est de 1 microseconde. Selon la version du noyau et la configuration, les horodatages peuvent provenir de l'horloge temps réel (origine à l'époque Unix) ou de l'horloge monotone (origine généralement au démarrage, non affectée par NTP ni par des modifications manuelles de l'horloge). L'option -timestamps abs ou -ts abs permet de forcer la conversion vers l'horloge temps réel.
Voici quelques exemples d'utilisation du périphérique video4linux2 avec ffmpeg et ffplay :
-
Lister les formats pris en charge pour un périphérique video4linux2 :
ffplay -f video4linux2 -list_formats all /dev/video0 -
Capturer et afficher l'entrée d'un périphérique video4linux2 :
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0 -
Capturer et enregistrer l'entrée d'un périphérique video4linux2, en laissant la fréquence d'images et la taille telles que définies précédemment :
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
Pour plus d'informations sur Video4Linux, voir http://linuxtv.org/.
3.18.1 Options
standard
Définit la norme. Doit correspondre au nom d'une norme prise en charge. Pour obtenir la liste des normes prises en charge, utilisez l'option list_standards.
channel
Définit le numéro du canal d'entrée. La valeur par défaut est -1, ce qui signifie que le canal précédemment sélectionné est utilisé.
video_size
Définit la taille des images vidéo. L'argument doit être une chaîne de la forme LARGEURxHAUTEUR ou une abréviation de taille valide.
pixel_format
Sélectionne le pixel format (valable uniquement pour une entrée vidéo brute).
input_format
Définit le pixel format préféré (pour la vidéo brute) ou un nom de codec. Cette option permet de choisir le format d'entrée lorsque plusieurs sont disponibles.
framerate
Définit la fréquence d'images vidéo préférée.
list_formats
Liste les formats disponibles (pixel formats, codecs et tailles d'image pris en charge) et quitte.
Les valeurs disponibles sont :
‘all’
Affiche tous les formats disponibles (compressés et non compressés).
‘raw’
Affiche uniquement les formats vidéo bruts (non compressés).
‘compressed’
Affiche uniquement les formats compressés.
list_standards
Liste les normes prises en charge et quitte.
Les valeurs disponibles sont :
‘all’
Affiche toutes les normes prises en charge.
timestamps, ts
Définit le type d'horodatage pour les images capturées.
Les valeurs disponibles sont :
‘default’
Utilise les horodatages fournis par le noyau.
‘abs’
Utilise des horodatages absolus (horloge murale).
‘mono2abs’
Force la conversion des horodatages monotones en horodatages absolus.
La valeur par défaut est default.
use_libv4l2
Utilise les fonctions de conversion libv4l2 (v4l-utils). La valeur par défaut est 0.
3.19 vfwcap
Périphérique d'entrée de capture VfW (Video for Windows).
Le nom de fichier passé en entrée est le numéro du pilote de capture, compris entre 0 et 9. Le nom de fichier "list" permet d'afficher la liste des pilotes. Tout autre nom de fichier est interprété comme le numéro de périphérique 0.
3.19.1 Options
video_size
Définit la taille des images vidéo.
framerate
Définit la fréquence d'images de capture. La valeur par défaut est ntsc, correspondant à une fréquence d'images de 30000/1001.
3.20 x11grab
Périphérique d'entrée vidéo X11.
Pour activer ce périphérique d'entrée lors de la configuration, libxcb doit être installé sur le système. Sa présence est détectée automatiquement lors de la configuration.
Ce périphérique permet de capturer une région d'un affichage X11.
Le nom de fichier passé en entrée a la syntaxe suivante :
[hostname]:display_number.screen_number[+x_offset,y_offset]
hostname:display_number.screen_number indique le nom d'affichage X11 de l'écran à capturer. hostname peut être omis ; la valeur par défaut est alors "localhost". La variable d'environnement DISPLAY contient le nom d'affichage par défaut.
x_offset et y_offset indiquent le décalage de la zone capturée par rapport au coin supérieur gauche de l'écran X11. Leur valeur par défaut est 0.
Consultez la documentation X11 (par exemple man X) pour plus de détails.
Utilisez le programme xdpyinfo pour obtenir des informations de base sur les propriétés de l'affichage X11 (par exemple en recherchant "name" ou "dimensions" avec grep).
Par exemple, pour capturer depuis :0.0 avec ffmpeg :
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
Capturer à la position 10,20 :
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
3.20.1 Options
select_region
Indique s'il faut sélectionner graphiquement la zone de capture à l'aide du pointeur. La valeur 1 invite l'utilisateur à sélectionner la zone de capture graphiquement, par un cliquer-glisser. Un simple clic sans glissement sélectionne l'écran entier. Une région de largeur ou de hauteur nulle sélectionne également l'écran entier. Cette option remplace les options video_size, grab_x et grab_y. La valeur par défaut est 0.
draw_mouse
Indique s'il faut dessiner le pointeur de la souris. La valeur 0 indique de ne pas dessiner le pointeur. La valeur par défaut est 1.
follow_mouse
Fait suivre la zone capturée par la souris. L'argument peut être centered ou un nombre de pixels PIXELS.
Lorsqu'elle est définie sur "centered", la région de capture suit le pointeur de la souris et le maintient au centre de la région ; sinon, la région ne suit que lorsque le pointeur atteint une distance de PIXELS (supérieure à zéro) du bord de la région.
Par exemple :
ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
Pour ne suivre que lorsque le pointeur de la souris atteint une distance de 100 pixels du bord :
ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
framerate
Définit la fréquence d'images de capture. La valeur par défaut est ntsc, correspondant à une fréquence d'images de 30000/1001.
show_region
Affiche la région capturée à l'écran.
Si show_region est défini sur 1, la région de capture est indiquée à l'écran. Cette option permet de savoir facilement ce qui est capturé lorsque seule une portion de l'écran est capturée.
region_border
Définit l'épaisseur de la bordure de la région si -show_region 1 est utilisé. La plage va de 1 à 128 et la valeur par défaut est 3 (x11grab basé sur XCB uniquement).
Par exemple :
ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
Avec follow_mouse :
ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
window_id
Capture cette fenêtre au lieu de l'écran entier. La valeur par défaut est 0, ce qui correspond à l'écran entier (fenêtre racine).
L'identifiant d'une fenêtre peut être obtenu avec le programme xwininfo, le cas échéant avec les options -tree et -root.
Si la fenêtre est agrandie par la suite, la nouvelle zone n'est pas enregistrée. La capture vidéo se termine lorsque la fenêtre est fermée, démappée (c'est-à-dire iconifiée) ou réduite en dessous de la taille vidéo (qui correspond par défaut à la taille initiale de la fenêtre).
Cette option désactive les options follow_mouse et select_region.
video_size
Définit la taille des images vidéo. La valeur par défaut est la totalité du bureau ou de la fenêtre.
grab_x grab_y
Définit les coordonnées de la région de capture. Elles sont exprimées comme un décalage par rapport au coin supérieur gauche de la fenêtre X11 et correspondent aux paramètres x_offset et y_offset du nom du périphérique. La valeur par défaut des deux options est 0.
4 Périphériques de sortie
Les périphériques de sortie sont des éléments configurés dans FFmpeg capables d'écrire des données multimédia vers un périphérique de sortie connecté au système.
Lorsque vous configurez votre build FFmpeg, tous les périphériques de sortie pris en charge sont activés par défaut. La liste de tous ceux disponibles peut être obtenue avec l'option de configuration "–list-outdevs".
Vous pouvez désactiver tous les périphériques de sortie avec l'option de configuration "–disable-outdevs", activer sélectivement un périphérique de sortie avec l'option "–enable-outdev=OUTDEV", ou désactiver un périphérique d'entrée particulier avec l'option "–disable-outdev=OUTDEV".
L'option "-devices" des outils ff* affiche la liste des périphériques de sortie activés.
Voici une description des périphériques de sortie disponibles à ce jour.
4.1 alsa
Périphérique de sortie ALSA (Advanced Linux Sound Architecture).
4.1.1 Exemples
-
Lire un fichier sur le périphérique ALSA par défaut :
ffmpeg -i INPUT -f alsa default -
Lire un fichier sur la carte son 1, périphérique audio 7 :
ffmpeg -i INPUT -f alsa hw:1,7
4.2 AudioToolbox
Périphérique de sortie AudioToolbox.
Permet une sortie native vers les périphériques CoreAudio sur OSX.
Le nom de fichier de sortie peut être vide (ou -) pour désigner le périphérique de sortie système par défaut, ou un nombre correspondant à l'index du périphérique, comme indiqué par : -list_devices true.
Par ailleurs, le périphérique d'entrée audio peut être choisi par index à l'aide de -audio_device_index
Tous les périphériques disponibles peuvent être énumérés avec -list_devices true, qui affiche tous les noms de périphériques, UID et index correspondants.
4.2.1 Options
AudioToolbox prend en charge les options suivantes :
-audio_device_index
Indique le périphérique audio par son index. Remplace toute valeur indiquée dans le nom de fichier de sortie.
4.2.2 Exemples
-
Afficher la liste des périphériques pris en charge et envoyer une onde sinusoïdale vers le périphérique par défaut :
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true - -
Envoyer une onde sinusoïdale vers le périphérique d'index 2, en remplaçant tout nom de fichier de sortie :
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
4.3 caca
Périphérique de sortie CACA.
Ce périphérique de sortie permet d'afficher un flux vidéo dans une fenêtre CACA. Une seule fenêtre CACA est autorisée par application ; il ne peut donc y avoir qu'une seule instance de ce périphérique de sortie au sein d'une même application.
Pour activer ce périphérique de sortie, FFmpeg doit être configuré avec --enable-libcaca. libcaca est une bibliothèque graphique qui produit du texte au lieu de pixels.
Pour plus d'informations sur libcaca, voir : http://caca.zoy.org/wiki/libcaca
4.3.1 Options
window_title
Définit le titre de la fenêtre CACA ; si non spécifié, il correspond par défaut au nom de fichier indiqué pour le périphérique de sortie.
window_size
Définit la taille de la fenêtre CACA ; peut être une chaîne de la forme largeurxhauteur ou une abréviation de taille vidéo. Si non spécifiée, elle correspond par défaut à la taille de la vidéo d'entrée.
driver
Définit le pilote d'affichage.
algorithm
Définit l'algorithme de tramage. Le tramage est nécessaire car l'image rendue comporte généralement bien plus de couleurs que la palette disponible. Les valeurs acceptées sont listées avec -list_dither algorithms.
antialias
Définit la méthode d'anticrénelage. L'anticrénelage lisse l'image rendue et évite le classique effet d'escalier. Les valeurs acceptées sont listées avec -list_dither antialiases.
charset
Définit les caractères utilisés pour le rendu du texte. Les valeurs acceptées sont listées avec -list_dither charsets.
color
Définit la couleur utilisée pour le rendu du texte. Les valeurs acceptées sont listées avec -list_dither colors.
list_drivers
Si la valeur est true, affiche la liste des pilotes disponibles et quitte.
list_dither
Liste les options de tramage disponibles liées à l'argument. L'argument doit être l'une des valeurs algorithms, antialiases, charsets, colors.
4.3.2 Exemples
-
La commande suivante affiche la sortie de
ffmpegdans une fenêtre CACA, en forçant sa taille à 80x25 :ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca - -
Afficher la liste des pilotes disponibles et quitter :
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true - -
Afficher la liste des couleurs de tramage disponibles et quitter :
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
4.4 decklink
Le périphérique de sortie decklink offre des capacités de lecture pour les périphériques Blackmagic DeckLink.
Pour activer ce périphérique de sortie, le SDK Blackmagic DeckLink est nécessaire, ainsi qu'une configuration avec les options --extra-cflags et --extra-ldflags appropriées. Sous Windows, les fichiers IDL doivent être passés par widl.
DeckLink est très exigeant quant aux formats qu'il prend en charge. Le pixel format est toujours uyvy422 ; la fréquence d'images, l'ordre des champs et la taille vidéo doivent être déterminés pour le périphérique avec -list_formats 1. La fréquence d'échantillonnage audio est toujours de 48 kHz.
4.4.1 Options
list_devices
Si la valeur est true, affiche la liste des périphériques et quitte. La valeur par défaut est false. Cette option est obsolète ; veuillez utiliser l'option -sinks de ffmpeg pour lister les périphériques de sortie disponibles.
list_formats
Si la valeur est true, affiche la liste des formats pris en charge et quitte. La valeur par défaut est false.
preroll
Durée de préchargement de la vidéo, en secondes. La valeur par défaut est 0.5.
duplex_mode
Définit le mode duplex/profil du périphérique decklink. Doit être ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’ ou ‘four_sub_device_half’. La valeur par défaut est ‘unset’.
Remarque : le SDK DeckLink 11.0 a remplacé la propriété duplex par une propriété de profil. Pour les DeckLink Duo 2 et DeckLink Quad 2, un profil est partagé entre 2 sous-périphériques quelconques utilisant les mêmes connecteurs. Pour le DeckLink 8K Pro, un profil est partagé entre les 4 sous-périphériques. Le DeckLink 8K Pro prend donc en charge quatre profils.
Modes de profil valides pour le DeckLink 8K Pro (avec DeckLink SDK >= 11.0) : ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’
Modes de profil valides pour les DeckLink Quad 2 et DeckLink Duo 2 : ‘half’, ‘full’
timing_offset
Définit le décalage de synchronisation genlock (en pixels) sur la sortie utilisée. La valeur par défaut est ‘unset’.
link
Définit la configuration de liaison vidéo SDI sur la sortie utilisée. Doit être ‘unset’, liaison SDI ‘single’, ‘dual’ ou ‘quad’. La valeur par défaut est ‘unset’.
sqd
Active le mode Square Division Quad Split pour une sortie SDI quad-link. Doit être ‘unset’, ‘true’ ou ‘false’. La valeur par défaut est unset.
level_a
Active le mode SMPTE Level A sur la sortie utilisée. Doit être ‘unset’, ‘true’ ou ‘false’. La valeur par défaut est unset.
vanc_queue_size
Définit la taille maximale, en octets, du tampon de sortie pour les données VANC. Lorsque la mise en tampon atteint cette valeur, les données VANC sortantes sont abandonnées. La valeur par défaut est ‘1048576’.
4.4.2 Exemples
-
Lister les périphériques de sortie :
ffmpeg -sinks decklink -
Lister les formats pris en charge :
ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor' -
Lire un extrait vidéo :
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor' -
Lire un extrait vidéo avec une fréquence d'images ou une taille vidéo non standard :
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
4.5 fbdev
Périphérique de sortie framebuffer Linux.
Le framebuffer Linux est une couche d'abstraction graphique indépendante du matériel permettant d'afficher des graphismes sur un moniteur d'ordinateur, typiquement sur la console. On y accède via un nœud de périphérique fichier, généralement /dev/fb0.
Pour plus de détails, consultez le fichier Documentation/fb/framebuffer.txt inclus dans l'arborescence des sources Linux.
4.5.1 Options
xoffset yoffset
Définit les coordonnées x/y du coin supérieur gauche. La valeur par défaut est 0.
4.5.2 Exemples
Lit un fichier sur le périphérique framebuffer /dev/fb0. Le pixel format requis dépend des paramètres actuels du framebuffer.
ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0
Voir aussi http://linux-fbdev.sourceforge.net/, et fbset(1).
4.6 oss
Périphérique de sortie OSS (Open Sound System).
4.7 pulse
Périphérique de sortie PulseAudio.
Pour activer ce périphérique de sortie, FFmpeg doit être configuré avec --enable-libpulse.
Plus d'informations sur PulseAudio sont disponibles sur http://www.pulseaudio.org
4.7.1 Options
server
Se connecte à un serveur PulseAudio spécifique, indiqué par une adresse IP. Le serveur par défaut est utilisé si aucun n'est fourni.
name
Indique le nom d'application que PulseAudio utilise pour afficher les clients actifs ; par défaut, il s'agit de la chaîne LIBAVFORMAT_IDENT.
stream_name
Indique le nom de flux que PulseAudio utilise pour afficher les flux actifs ; par défaut, il correspond au nom de sortie spécifié.
device
Indique le périphérique à utiliser. Le périphérique par défaut est utilisé si aucun n'est fourni. La liste des périphériques de sortie peut être obtenue avec la commande pactl list sinks.
buffer_size buffer_duration
Contrôle la taille et la durée du tampon PulseAudio. Un tampon de petite taille offre plus de contrôle, mais requiert des mises à jour plus fréquentes.
buffer_size indique la taille en octets, tandis que buffer_duration indique la durée en millisecondes.
Lorsque les deux options sont fournies, la valeur la plus élevée est utilisée (la durée est reconvertie en octets à l'aide des paramètres du flux). Si elles sont réglées sur 0 (valeur par défaut), le périphérique utilise la durée de tampon par défaut de PulseAudio. Par défaut, PulseAudio règle la durée du tampon à environ 2 secondes.
prebuf
Indique la taille de pré-mise en tampon en octets. Le serveur ne démarre la lecture qu'une fois qu'au moins prebuf octets sont disponibles dans le tampon. Par défaut, cette option est initialisée à la même valeur que buffer_size ou buffer_duration (la plus grande des deux).
minreq
Indique la taille minimale de requête en octets. Le serveur ne demande pas moins de minreq octets au client ; il attend plutôt que le tampon soit suffisamment libre pour demander davantage d'octets à la fois. Il est recommandé de ne pas définir cette option, qui est alors initialisée à une valeur jugée pertinente par le serveur.
4.7.2 Exemples
Lit un fichier sur le périphérique par défaut du serveur par défaut :
ffmpeg -i INPUT -f pulse "stream name"
4.8 sndio
Périphérique de sortie audio sndio.
4.9 v4l2
Périphérique de sortie Video4Linux2.
4.10 xv
Périphérique de sortie XV (XVideo).
Ce périphérique de sortie permet d'afficher un flux vidéo dans une fenêtre du système X Window.
4.10.1 Options
display_name
Indique le nom d'affichage matériel, qui détermine le domaine d'affichage et de communication à utiliser.
Le nom d'affichage ou la variable d'environnement DISPLAY peut être une chaîne au format hostname[:number[.screen_number]].
hostname indique le nom de la machine hôte sur laquelle l'affichage est physiquement connecté. number indique le numéro du serveur d'affichage sur cette machine hôte. screen_number indique l'écran à utiliser sur ce serveur.
Si non spécifié, la valeur par défaut est celle de la variable d'environnement DISPLAY.
Par exemple, dual-headed:0.1 désignerait l'écran 1 de l'affichage 0 sur la machine nommée “dual-headed”.
Consultez la spécification X11 pour plus de détails sur le format du nom d'affichage.
window_id
Si elle est réglée sur une valeur non nulle, le périphérique ne crée pas de nouvelle fenêtre, mais utilise celle existante indiquée par window_id. Par défaut, cette option est réglée sur zéro et le périphérique crée sa propre fenêtre.
window_size
Définit la taille de la fenêtre créée ; peut être une chaîne de la forme largeurxhauteur ou une abréviation de taille vidéo. Si non spécifiée, elle correspond par défaut à la taille de la vidéo d'entrée. Ignorée lorsque window_id est défini.
window_x window_y
Définit les décalages X et Y de la fenêtre créée. Ils sont tous deux réglés sur 0 par défaut. Ces valeurs peuvent être ignorées par le gestionnaire de fenêtres. Ignorées lorsque window_id est défini.
window_title
Définit le titre de la fenêtre ; si non spécifié, correspond par défaut au nom de fichier indiqué pour le périphérique de sortie. Ignoré lorsque window_id est défini.
Pour plus d'informations sur XVideo, voir http://www.x.org/.
4.10.2 Exemples
-
Décoder, afficher et encoder l'entrée vidéo avec
ffmpegsimultanément :ffmpeg -i INPUT OUTPUT -f xv display -
Décoder et afficher la vidéo d'entrée dans plusieurs fenêtres X11 :
ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
5 Voir aussi
ffmpeg, ffplay, ffprobe, libavdevice
6 Auteurs
Les développeurs de FFmpeg.
Pour plus de détails sur les auteurs, consultez l'historique Git du projet (https://git.ffmpeg.org/ffmpeg), par exemple en tapant la commande git log dans le répertoire des sources de FFmpeg, ou en parcourant le dépôt en ligne à l'adresse https://git.ffmpeg.org/ffmpeg.
Les mainteneurs des composants spécifiques sont répertoriés dans le fichier MAINTAINERS de l'arborescence des sources.
Hébergement fourni par telepoint.bg