Windows
ffmpeg
Desktop
動画撮影

windowsでffmpegを使ってデスクトップ動画を保存

忘れがちな技としてデスクトップを動画保存するにはどうするか?ってのがある。

LINUXだとFFMPEGですぐできるのだが、WINDOWSで同じことをやってもできなかった。

それはWINDOWSだとX11と違うからだ。

その方法をあらためて調べた。ffmpegでデスクトップ動画保存する手法の調査結果となります。

まず動画だけ音声なしで保存はすぐできた。

ffmpeg -y -rtbufsize 100M -f gdigrab -t 00:00:30 -framerate 30 -probesize 10M -draw_mouse 1 -i desktop -c:v libx264 -r 30 -preset ultrafast -tune zerolatency -crf 25 -pix_fmt yuv420p  video_comapre2.mp4

どうもgdigrabってのがキーらしい。

しかしながら、これ用のDIRECTSHOWのドライバーがあった。

それを入れるともっと便利

UScreenCaptureってやつ↓

http://www.umediaserver.net/components/index.html

http://www.umediaserver.net/bin/UScreenCapture.zip

http://www.umediaserver.net/bin/UScreenCapture(x64).zip

これをインストールすると



ffmpeg -f dshow -i video="UScreenCapture" out.mp4

でMP4で保存できる。便利だ。

なおできないときは


ffmpeg -list_devices true -f dshow -i dummy

でデバイスリストがでるのでそれにUScreenCaptureが出るのを確認。

私の場合これが出力された。

ffmpeg started on 2018-12-08 at 20:56:30

Report written to "ffmpeg-20181208-205630.log"
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181017
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
[dshow @ 00000000004b2400] DirectShow video devices (some may be both video and audio devices)
[dshow @ 00000000004b2400] "HP HD Webcam [Fixed]"
[dshow @ 00000000004b2400] Alternative name "@device_pnp_\\?\usb#vid_1bcf&pid_2888&mi_00#7&2497575&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 00000000004b2400] "UScreenCapture"
[dshow @ 00000000004b2400] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\UScreenCapture"
[dshow @ 00000000004b2400] "screen-capture-recorder"
[dshow @ 00000000004b2400] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{4EA69364-2C8A-4AE6-A561-56E4B5044439}"
[dshow @ 00000000004b2400] DirectShow audio devices
[dshow @ 00000000004b2400] "集積マイク アレイ (2- IDT High Definiti"
[dshow @ 00000000004b2400] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\集積マイク アレイ (2- IDT High Definiti"
[dshow @ 00000000004b2400] "virtual-audio-capturer"
[dshow @ 00000000004b2400] Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{8E146464-DB61-4309-AFA1-3578E927E935}"
[dshow @ 00000000004b2400] "ステレオ ミキサー (2- IDT High Definiti"
[dshow @ 00000000004b2400] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\ステレオ ミキサー (2- IDT High Definiti"

次に音付きでキャプチャの方法だが、それはドライバーを入れないとだめらしい。

”らしい”というのははっきり確認できないの意味

とりあえずそのドライバーはこれ

virtual-audio-capturer

https://ja.osdn.net/projects/sfnet_virtualaudiodev/

例えばmp3で音だけ保存のときは

 ffmpeg -f dshow -i audio="virtual-audio-capturer"  "out.mp3"

うまく行かないときは

おなじく

  ffmpeg -list_devices true -f dshow -i dummy

で確認。

最後にmp4動画保存は

 ffmpeg -f dshow -i video="UScreenCapture":audio="virtual-audio-capturer"  output.mp4

で成功する。

rtmpとかにもつかえるはずです。

後日オフィシャルな説明を知りました

https://trac.ffmpeg.org/wiki/Capture/Desktop