问题
I use ffmpeg to record a window using this 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
But the problem is i might move the window, this leads to recording an area without the window i want.
How can i capture a specific window that I am able to move it?
Edit: I also used gdigrab
to capture my window (Skype
for instance) instead of 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
But the conference is black...
回答1:
This example works for me:
ffmpeg -f gdigrab -framerate 30 -i title="german.avi - VLC media player" -b:v 3M germ.flv
where "title" means actual title of a target window.
Hope this will help.
回答2:
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
the RecordWindow is the title of a specified window.
回答3:
It has mentioned in here:
By default, it captures the "full screen" of the main desktop monitor (all windows, overlapping, from there, with aero if vista+, without transparent windows if non aero).
To configure it differently, run the provided "configuration setup utilities/shortcuts" or adjust registry settings before starting a run (advanced users only):
HKEY_CURRENT_USER\Software\screen-capture-recorder
with DWORD keys respected of start_XXX etc … (see the included file {installdir}\configuration_setup_utility\setup_screen_tracker_params.rb for the full list of registry key values available, or see https://github.com/rdp/screen-capture-recorder-to-video-windows-free/blob/master/configuration_setup_utility/setup_screen_tracker_params.rb#L9 )
ex: see configuration_setup_utility\incoming.reg file (though NB that those values are in hex, so editing that file is a bit tedious-- I always just use regedit or the accompanying script utilities and don’t edit it by hand).
To "reset" a value delete its key.
And you can see in here that there are these registery options:
- 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
回答4:
I used this to record the prompt
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
But it works only with 100x20 (colxrow) fo the prompt or other divisible screen size, otherwise it gives me an error, this:
[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!
P.S.: I have this problem also with other windows that has not even width or height. I created a window with tkinter in Python and I get the error, then I gave the window some geometry (300x500) and it worked...
Strangely, the mouse is a little offset...
来源:https://stackoverflow.com/questions/25396784/how-to-record-a-specific-window-using-ffmpeg