본문 바로가기
개발, IT

FFMPEG를 이용해서 화면 녹화하기 - 윈도우 편

by Nabi™ 2018. 3. 27.

FFMPEG를 이용하면 별다른 프로그램 없이도 화면을 녹화할 수 있다.


FFMPEG 설치방법은 아래의 링크를 참고 하길 바란다.





녹화하는 방법은 어렵지 않다.


Windows PowerShell을 열어 아래의 명령을 실행하면 된다.


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






위와 같이 메시지가 표시되고 있다면 성공적으로 녹화가 되는 것이다.

종료할 때는 키보드 'Q' 버튼을 누르면 된다.


옵션 몇 가지만 보자면 다음과 같다.



- 입력 옵션 (화면 이미지 장치)


-f gdigrab : FFMPEG에서 지원하는 윈도우 화면 캡처 장치

-i desktop : 화면 전체 캡처 

    (여기서 desktop 대신 title=windows_title을 입력시 특정 윈도우만 캡처 가능)

    예 >  -i title="Windows PowerShell"  : Windows PowerShell 창 만 캡처

    

-framerate 30  : 입력 프레임 수 30fps

-draw_mouse 1 : 마우스 포함 녹화 (0으로 하면 마우스 표시 안됨)


입력 장치에 대한 추가 옵션은 아래의 링크에서 확인하길 바란다.


https://www.ffmpeg.org/ffmpeg-devices.html#Options-8




- 녹화 코덱 


-c:v libx264 : h.264 코덱 사용(오픈소스 코덱)

-r 30 : 녹화 프레임 수 (30fps)

-preset ultrafast : 속도를 최대로 (대신 압축률이 낮아 용량이 커짐)

-tune zerolatency : 지연시간 최소

-crf 25 : 영상 손실 값 

   -. 기본 23, 0 ~ 51, 0에 가까우면 무손실, 51에 가까우면 손실

   -. 보통 범위는 17~28이며 17~18이면 시각적으로 문제없다고 함.

   -. 이 역시 파일 크기와 상관있다.

-pix_fmt yuv420p : 이미지 포맷 YUV420

"output.mp4" : 저장되는 파일 이름


녹화할 때는 시스템 자원을 얼마나 사용하는지 중요하다.


작업 관리자를 열어보면 점유율을 확인할 수 있다.




테스트 PC 사양

CPU : i7 6700HQ

RAM : 16GB

저장 장치 : SSD


점유율이 나름 나쁘지 않다.

압축 비율 설정이 "ultrafast"라 그나마 점유율이 봐줄 만하지만 

이것을 기본(medium)으로만 변경해도 점유율이 20% 이상 올라간다.



그래서!!!!


만약 자신의 컴퓨터가 하드웨어 가속을 지원한다면 아래와 같이 사용하는 것을 권장한다.



NVIDIA 가속 사용하기 (그래픽 카드)


 ffmpeg -y -rtbufsize 100M -f gdigrab -framerate 30 -probesize 10M -draw_mouse 1 -i desktop -c:v h264_nvenc -r 30 -preset llhq -tune zerolatency -crf 25 -pix_fmt yuv420p "output.mp4"



NVIDIA 사용 (GTX950M)



INTEL 가속 사용하기


ffmpeg -y -rtbufsize 100M -f gdigrab -framerate 30 -probesize 10M -draw_mouse 1 -i desktop -c:v h264_qsv -r 30 -preset veryfast -tune zerolatency -crf 25 -pix_fmt yuv420p "output.mp4"


INTEL 사용 (i7 6700HQ)




위처럼 작업 관리자를 보면 어떤 장치를 이용하는지 와 점유율의 차이를 알 수 있게 된다.


하드웨어 가속(VPU : Video Process Unit)을 사용할 때는 기존 옵션에서 아래의 옵션만 변경해주면 된다. 

(물론 다른 기능들이 많이 있지만...)


Nvidia

-c:v h264_nvenc  : nvidia 하드웨어 가속 코덱

-preset llhq         : preset 명칭이 다르다.

 -preset            <int>        E..V.... Set the encoding preset (from 0 to 11) (default medium) 

     default                      E..V....  

     slow                         E..V.... hq 2 passes 

     medium                    E..V.... hq 1 pass 

     fast                          E..V.... hp 1 pass 

     hp                           E..V....  

     hq                           E..V....  

     bd                           E..V....  

     ll                            E..V.... low latency 

     llhq                         E..V.... low latency hq 

     llhp                         E..V.... low latency hp 

     lossless                     E..V....  

     losslesshp                   E..V.... 


Intel

-c:v h264_qsv       : intel 하드웨어 가속 코덱

-preset veryfast     : preset 명칭이 다르다.

-preset            <int>        E..V.... (from 1 to 7) (default medium) 

     veryfast                     E..V.... 

     faster                       E..V.... 

     fast                         E..V.... 

     medium                       E..V.... 

     slow                         E..V.... 

     slower                       E..V.... 

     veryslow                     E..V....



출처 : 하이! 제니스 (https://m.blog.naver.com/PostView.nhn?blogId=chandong83&logNo=221165314186&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F)

댓글