Montag, Januar 27, 2020

DirectShow-Capture-Quelle und FFMPEG

Habe ich eine AJA-Capture-Karte. Der installierte Treiber mit der Karte auch einige DirectShow filter. Wenn ich pop der filter in GraphEdit ich sehen:

DirectShow-Capture-Quelle und FFMPEG

und wenn ich den ffmpeg-Befehl

ffmpeg -f dshow -list_options true -i video="AJA Capture Source"

Sehe ich

[dshow @ 0034eec0] DirectShow video device options
[dshow @ 0034eec0]  Pin "Video"
[dshow @ 0034eec0]   pixel_format=yuyv422  min s=720x486 fps=27.2604 max s=1024x
486 fps=29.985
...
[dshow @ 0034eec0]  Pin "Audio 1-2"
[dshow @ 0034eec0]  Pin "Line21"
video=AJA Capture Source: Immediate exit requested

So sehe ich die Video-und Audio-pins, die ich brauche. Aber wenn ich versuchen, eine ffmpeg-Befehl zu erfassen, beide kann ich nur herausfinden, wie der video-Teil. Wie kann ich Haken in das audio-pin? Es scheint, alle Beispiele und Dokumentationen zeigen, um mit Hilfe eines separaten audio-Gerät, und nichts über das Einhängen in die Stifte. Bei mir läuft es aus einer batch-Datei nun so aus und ich benutze die ^ auf den Bruch der Linie

ffmpeg.exe ^
-y ^
-rtbufsize 100M ^
-f dshow ^
-i video="AJA Capture Source" ^
-t 00:00:10 ^
-aspect 16:9 ^
-c:v libx264 ^
"C:\VCS_AUD_SAMPLE.mp4"

Wieder, der Befehl oben wird mir einige schöne Videos, aber ich kann nicht herausfinden, den audio-Teil. Ist dies auch unterstützt ffmpeg-oder ich bin gehen zu müssen, ändern Sie die ffmpeg-dshow-code?

InformationsquelleAutor Juan Ayala | 2013-05-17

4 Kommentare

  1. 4

    Ich bin der Entwickler dieser filter.

    Eigentlich das gleiche Gerät ist, sowohl für audio-und video-streams. Außerdem werden die Daten für beide streams sind das Ergebnis einer Funktion. Division durch separate audio-und video-Filter auch in anderen Karten (Beispiel – DeckLink) künstlich (Sie müssen intern miteinander verbunden). Möglicher Grund für die Teilung – ein Versuch zur Vereinfachung des Graphen. Dies kann jedoch zu anderen Problemen führen (mit streams von verschiedenen Geräten).

    Warum ffmpeg kann nicht mit pins von den gleichen filter – mir nicht klar. Dieses problem der ffmpeg-Entwickler.

    Nur über eine Instanz zugreifen – sehr alte version von AJA-Capture-Quelle-filter verwendet. Eine neuere version der filter können Sie erstellen mehrere Instanzen gleichzeitig (aber nur eine Instanz kann im „Play“ – Zustand). Bitte überprüfen Sie die AJA-Website zum herunterladen der neuesten Versionen der Filter. Wenn Sie prüfen möchten, neuesten beta-Versionen von AJA-Filter, bitte schreiben Sie mich an [email protected]

  2. 2

    Also nach Verfolgung durch source-code von FFmpeg, es war als könnte es nicht Haken Sie bis zu mehrere pins auf ein dshow Quelle, so dass statt einer änderung der FFmpeg-Quellcode, wir paspelierten, die die AJA-source-pins durch zwei virtuelle capture-Quellen das gewünschte Ergebnis zu erzielen.

    • Bitte teilen Sie Ihrem Befehl. Ich möchte eine Verbindung zu Audio-Pin und ich kann nicht finden, Beispiel
    • Als ich es gepostet Fragen hier stackoverflow.com/questions/19113197/…
    • Danke @rogerdpack, aber das Projekt war gemacht vor langer Zeit und habe keinen Zugriff mehr auf die hardware oder die Quelle.
  3. 2

    Support OK war (hoffentlich) kurzem in FFmpeg dshow, können Sie angeben ffmpeg -f dshow -i video="AJA Capture Source":audio="AJA Capture Source" jetzt und es funktioniert.

    Gibt es auch neue Parameter für die Auswahl der pin, die Sie verwenden möchten, wenn Sie Sie brauchen. https://www.ffmpeg.org/ffmpeg-devices.html#dshow

    Wenn es nicht funktioniert für jemanden/jemand bitte lassen Sie mich wissen, [email protected] oder einen Kommentar hier.

  4. 1

    Vom http://ffmpeg.org/trac/ffmpeg/wiki/DirectShow

    Auch dieser Hinweis, dass „Der input-string ist im format video=<video device name>:audio=<audio device name>.

    So versuchen

    ffmpeg.exe -f dshow -i "video=AJA Capture Source:audio=audio source name"
    
    • Versucht, das schon. Das problem ist, dass die „AJA-Capture-Quelle“ filter hat exklusiven Zugriff auf die hardware, so kann es nur eine Instanz davon. Also wenn ich versuche so etwas wie video=“AJA-Capture-Quelle“:audio=“AJA-Capture-Quelle“ wird es hook up das video und die Bombe auf der audio. Es wäre toll, wenn AJA hatte einen filter gewidmet, um audio und einer für video, aber es ist, es scheint keine Möglichkeit zu sagen, ffmpeg zu befestigen, um einen pin, sondern als ein filter.
    • so können Sie eine oder das andere, aber nicht beides gleichzeitig?
    • ja, der eine oder andere. ich kann sogar in einem filter gehört, der das Mikrofon der web-cam. in diesem Fall, die die AJA-filter ist sowohl ein „Video-Capture-Source“ und „Audio-Capture-Quelle“ unter DirectShow, eine nur eine Instanz hat Zugriff auf die hardware zu einem Zeitpunkt. diese Regel würde nicht ein Problem in einem normalen DirectShow setup als eine einzige Instanz alle relevanten pins, aber ffmpeg zu sein scheint, eingerichtet in einer solchen Weise, dass nicht pin-basiert, sondern Geräte-basiert.

Kostenlose Online-Tests