it-swarm.com.de

Wie zeichnet man ein bestimmtes Fenster mit ffmpeg auf?

Ich benutze ffmpeg, um ein Fenster mit diesem Code aufzunehmen:

ffmpeg.exe
-f dshow 
-y 
-i video="screen-capture-recorder":audio="virtual-audio-capturer":audio="Microphone (USB Audio Device)" 
-framerate 15 
-vcodec libx264 
-crf 0 
-preset ultrafast 
-acodec pcm_s16le 
-vf crop=Width:Height:Left:Top 
output.flv

Aber das Problem ist, dass ich das Fenster verschieben könnte, was dazu führt, dass ein Bereich ohne das gewünschte Fenster aufgezeichnet wird.

Wie kann ich ein bestimmtes Fenster erfassen, das ich verschieben kann?


Bearbeiten: Ich habe auch gdigrab verwendet, um mein Fenster zu erfassen (Skype zum Beispiel) anstelle von dshow:

ffmpeg.exe
-y
-f dshow
-i audio="virtual-audio-capturer":audio="Microphone (USB Audio Device)"
-f gdigrab
-draw_mouse 0
-i title="Skype"
-framerate 30
-vcodec libx264
-crf 0
-preset ultrafast
-acodec pcm_s16le
output.flv

Aber die Konferenz ist schwarz ...

13
Matin Lotfaliee

Es hat in hier erwähnt:

Standardmäßig wird der "Vollbildschirm" des Hauptbildschirms Erfasst (alle Fenster überlappen sich von dort mit Aero bei Vista +, ohne Transparente Fenster bei Nicht-Aero).

Um es anders zu konfigurieren, führen Sie das bereitgestellte Hilfsprogramm "Konfigurationseinstellungen /Verknüpfungen" aus oder passen Sie die Registrierungseinstellungen an, bevor Sie einen Lauf Starten (nur für fortgeschrittene Benutzer):

HKEY_CURRENT_USER\Software\screen-capture-recorder

mit DWORD-Schlüsseln, die von start_XXX usw. beachtet werden (siehe die enthaltene Datei {Installationsverzeichnis}\configuration_setup_utility\setup_screen_tracker_params.rb für eine vollständige Liste der verfügbaren Registrierungsschlüsselwerte, oder siehe https://github.com/rdp/screen-capture-recorder-to-video-windows-free/blob/master/configuration_setup_utility/setup_screen_tracker_params.rb#L9 )

beispiel: siehe Datei configuration_setup_utility\incoming.reg (obwohl NB diese diese Werte in hexadezimaler Form sind, so dass das Bearbeiten dieser Datei etwas langwierig ist-- Ich benutze immer nur regedit oder die dazugehörigen Skript-Dienstprogramme und nicht manuell bearbeiten).

Um einen Wert "zurückzusetzen", löschen Sie den Schlüssel.

Und Sie können in hier sehen, dass es folgende Registrierungsmöglichkeiten gibt:

  • capture_height
  • capture_width
  • start_x
  • start_y
  • default_max_fps
  • stretch_to_width
  • stretch_to_height
  • stretch_mode_high_quality_if_1
  • hwnd_to_track
  • disable_aero_for_Vista_plus_if_1
  • track_new_x_y_coords_each_frame_if_1
  • capture_mouse_default_1
  • capture_foreground_window_if_1
  • dedup_if_1
  • millis_to_sleep_between_poll_for_dedupe_changes
  • capture_transparent_windows_including_mouse_in_non_aero_if_1_causes_annoying_mouse_flicker
  • hwnd_to_track_with_window_decoration
1
Matin Lotfaliee

Dieses Beispiel funktioniert für mich:

ffmpeg -f gdigrab -framerate 30 -i title="german.avi - VLC media player" -b:v 3M  germ.flv

dabei bedeutet "Titel" den tatsächlichen Titel eines Zielfensters.

Hoffe das wird helfen.

5
RdB

ffmpeg -rtbufsize 1500M -f dshow -i audio = "virtueller Audio-Capturer" -f gdigrab -framerate 30 -draw_mouse 1 -i title = RecordWindow -pix_fmt yuv420p -profile: v Grundlinie -y Huangbaohua.mp4

das RecordWindow ist der Titel eines angegebenen Fensters.

1
Brian Huang

Ich habe dies verwendet, um die Eingabeaufforderung aufzuzeichnen

ffmpeg -rtbufsize 1500M -f dshow -i audio="Microfono (8- Logitech USB Headset)" -f gdigrab -framerate 30 -draw_mouse 1 -i title="Prompt dei comandi" -pix_fmt yuv420p -profile:v baseline -y output\output3_xp.mp4
pause

Aber es funktioniert nur mit 100x20 (colxrow) für die Eingabeaufforderung oder eine andere teilbare Bildschirmgröße, sonst gibt es mir einen Fehler:

[libx264 @ 0000027c7ed66200] width not divisible by 2 (269x432)
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

PS: Ich habe dieses Problem auch bei anderen Fenstern, die nicht einmal Breite oder Höhe haben. Ich habe ein Fenster mit tkinter in Python und ich bekomme die Fehlermeldung, dann habe ich dem Fenster eine Geometrie (300x500) gegeben und es hat funktioniert ...

Seltsamerweise ist die Maus ein wenig versetzt ...

0
Giovanni Python