web-dev-qa-db-fra.com

Comment enregistrer une fenêtre spécifique en utilisant ffmpeg?

J'utilise ffmpeg pour enregistrer une fenêtre en utilisant ce code:

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

Mais le problème est que je pourrais déplacer la fenêtre, cela conduit à enregistrer une zone sans la fenêtre que je veux.

Comment puis-je capturer une fenêtre spécifique que je suis capable de déplacer?


Edit: J'ai également utilisé gdigrab pour capturer ma fenêtre (Skype par exemple) au lieu de 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

Mais la conférence est noire ...

13
Matin Lotfaliee

Il a mentionné dans ici :

Par défaut, il capture le "plein écran" du moniteur principal du bureau (Toutes les fenêtres se chevauchant à partir de là, avec aero si Vista +, sans Fenêtres transparentes si non aéro).

Pour le configurer différemment, exécutez les "utilitaires/raccourcis de configuration de configuration " Ou ajustez les paramètres du registre avant de lancer une exécution (Utilisateurs avancés uniquement):

HKEY_CURRENT_USER\Software\screen-capture-recorder

respectant les clés DWORD de start_XXX, etc.… (voir le fichier inclus {rép_install}\configuration_setup_utility\setup_screen_tracker_params.rb pour obtenir la liste complète des valeurs de clé de registre disponibles ou voir https://github.com/rdp/screen-capture-recorder-to-video-windows-free/blob/master/configuration_setup_utility/setup_screen_tracker_params.rb#L9 [.____.))

ex: voir le fichier configuration_setup_utility\incoming.reg (bien que NB que ces valeurs soient en hexadécimal, donc éditer ce fichier est un peu fastidieux-- I utilise toujours juste regedit ou les utilitaires de script qui l’accompagnent et ne l’éditez pas à la main).

Pour "réinitialiser" une valeur, effacez sa clé.

Et vous pouvez voir dans ici qu'il existe ces options de registre:

  • capture_height
  • capture_width
  • start_x
  • début_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

Cet exemple fonctionne pour moi:

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

où "titre" signifie le titre réel d'une fenêtre cible.

J'espère que cela aidera.

5
RdB

ffmpeg -rtbufsize 1500M -f dshow -i audio = "virtual-audio-capturer" -f gdigrab -framerate 30 -draw_mouse 1 -i title = RecordWindow -pix_fmt yuv420p -profile: v baseline -y Huangbaohua.mp4

recordWindow est le titre d'une fenêtre spécifiée.

1
Brian Huang