ffmpeg en ligne de commande pour la capture (et l'enregistrement) de l'audio et de la vidéo en 720p de carte decklink à l'aide de Windows 7

Je suis en train d'essayer de capturer l'audio et de la vidéo à partir d'une blackmagic decklink carte de capture à l'aide de Windows 7 @ 720p, mais je ne peux pas sembler obtenir le ffmpeg en ligne de commande paramètres de droit.

ffmpeg -list_devices vrai -f dshow -je factice

[dshow @ 02457a60] DirectShow video devices
[dshow @ 02457a60]  "Blackmagic WDM Capture"
[dshow @ 02457a60]  "Decklink Video Capture"
[dshow @ 02457a60] DirectShow audio devices
[dshow @ 02457a60]  "Decklink Audio Capture"

ffmpeg -list_options vrai -f dshow -je vidéo="Decklink Capture Vidéo"

[dshow @ 03c2ea20] DirectShow video device options
[dshow @ 03c2ea20]  Pin "Capture"
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=720x486 fps=29.97 max s=720x486 fps=29.97
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=720x486 fps=23.976 max s=720x486 fps=23.976
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=720x576 fps=25 max s=720x576 fps=25
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=720x486 fps=59.9402 max s=720x486 fps=59.9402
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=720x576 fps=50 max s=720x576 fps=50
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1920x1080 fps=23.976 max s=1920x1080 fps=23.976
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1920x1080 fps=24 max s=1920x1080 fps=24
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1920x1080 fps=25 max s=1920x1080 fps=25
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1920x1080 fps=29.97 max s=1920x1080 fps=29.97
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1920x1080 fps=30 max s=1920x1080 fps=30
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1280x720 fps=50 max s=1280x720fps=50
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1280x720 fps=59.9402 max s=1280x720 fps=59.9402
[dshow @ 03c2ea20]   pixel_format=uyvy422  min s=1280x720 fps=60.0002 max s=1280x720 fps=60.0002

ffmpeg -list_options vrai -f dshow -je audio="Decklink de Capture Audio"

[dshow @ 047fea20] DirectShow audio device options
[dshow @ 047fea20]  Pin "Capture"
[dshow @ 047fea20]   min ch=1 bits=16 rate= 48000 max ch=1 bits=16 rate= 48000
[dshow @ 047fea20]   min ch=2 bits=16 rate= 48000 max ch=2 bits=16 rate= 48000
[dshow @ 047fea20]   min ch=4 bits=16 rate= 48000 max ch=4 bits=16 rate= 48000
[dshow @ 047fea20]   min ch=6 bits=16 rate= 48000 max ch=6 bits=16 rate= 48000
[dshow @ 047fea20]   min ch=8 bits=16 rate= 48000 max ch=8 bits=16 rate= 48000
[dshow @ 047fea20]   min ch=10 bits=16 rate= 48000 max ch=10 bits=16 rate= 48000
[dshow @ 047fea20]   min ch=12 bits=16 rate= 48000 max ch=12 bits=16 rate= 48000
[dshow @ 047fea20]   min ch=16 bits=16 rate= 48000 max ch=16 bits=16 rate= 48000

C'est le flux d'informations pour mon source vidéo/audio, connecté à la carte decklink port hdmi de

Stream #0:0: Video: rawvideo (UYVY /0x59565955), uyvy422(tv), 1280x720, 59.94 tbr, 10000k tbn, 59.94 tbc
Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s

En fin de compte, j'ai besoin d'afficher cette vidéo à l'écran. Et simultanément être en mesure de démarrer et d'arrêter l'enregistrement, tandis que l'aperçu continue à jouer.

Mon idée était d'utiliser ffmpeg pour capturer la vidéo et le signal audio et de le transmettre à un flux réseau (par exemple l'adresse 127.0.0.1:6666). Ensuite, utilisez VLC player pour afficher le flux (aperçu). Et, finalement, de démarrage ou d'arrêt d'un autre ffmpeg pour économiser la même flux sur le disque.

Dans mon esprit, cela fonctionne, mais je ne suis pas d'audio/vidéo expert donc si quelqu'un avec plus d'expérience peut aider, j'apprécierais.

Mise à jour:

J'ai été capable d'afficher de la vidéo à l'aide de ffplay, avec la commande suivante :

ffplay -f dshow -video_size 1280x720 -rtbufsize 702000k -framerate 60 -i video="Decklink Video Capture":audio="Decklink Audio Capture" -threads 2

Prochaine étape est de streaming pour que je puisse voir le flux (aperçu) avec VLC.

Essayé d'utiliser cette commande :

ffmpeg -f dshow -video_size 1280x720 -rtbufsize 702000k -framerate 60 -i video="Decklink Video Capture":audio="Decklink Audio Capture" -threads 2 -f mpegts rtp://127.0.0.1:6666?pkt_size=188?buffer_size=65535

Qui ne donne pas toutes les erreurs, il semble fonctionner. Mais quand j'essaie d'ouvrir le flux dans VLC j'obtiens l'erreur suivante :

SDP requis:
Une description SDP est le format requis pour recevoir le flux RTP. Notez que le protocole rtp://Uri ne peut pas travailler avec dynamique de la RTP payload format (65).

Après un peu de lecture, il semble que je ne devrais pas être en streaming rtp://, mais plutôt à udp://

Commande devient :

ffmpeg -f dshow -video_size 1280x720 -rtbufsize 702000k -framerate 60 -i video="Decklink Video Capture":audio="Decklink Audio Capture" -threads 2 -f mpegts udp://127.0.0.1:6666?pkt_size=188?buffer_size=65535

Et quand j'essaie de l'ouvrir dans VLC je n'obtiens pas d'erreur, pas d'avertissement, mais pas de vidéo.

Temps pour un peu plus de lecture.

Mon vote ici serait que vous vous attendez trop de ffmpeg. Utiliser directshow et construire une application (Il ressemble à un enregistreur).
Je dois dire que c'était mon intention première. Donc, je suis allé de l'avant et a rapidement réalisé le défi que j'ai eu était avec la conversion de l'image de la source en temps opportun. Cela est dû au fait que la source est de 8 bits YUV422. Alors j'ai parlé à la prise en charge de développeur @ blackmagic pour voir ce qui pourrait être la meilleure option pour les utiliser. Ils m'a indiqué libav. Et vu qu'il est utilisé dans ffmpeg, j'ai pensé que je pourrais aussi bien essayer cette voie.
Il est récemment ajoutée "native" decklink périphériques d'entrée/sortie dans FFmpeg, ainsi, FWIW
J'ai eu une grande résolution avec ton post, j'ai ajouter une page à propos de blackmagic sur le ffmpeg site web. J'ai eu un 4k carte de sorte qu'il n'était pas la même ligne et je me devais de -vsync chute afin d'éviter les problèmes de timestamp

OriginalL'auteur Huron | 2013-10-06