ffmpeg를 사용하여 스크린 캐스트를 만드는 방법

모르는 사람들을 위해 스크린 때때로 오디오 나레이션을 포함하는 컴퓨터 화면 출력의 디지털 녹음입니다.

En Linux, 여러 도구스크린 캐스팅. 그러나 그렇게하는 것을 선호하는 사람들은 최소한의 자원 소비 그들은이 기사를 읽는 것을 멈출 수 없습니다.


두 가지 도구 (화면을 캡처하는 ffmpeg와 기록 할 창의 좌표와 크기를 얻는 xwininfo)를 사용하여 최소한의 리소스를 사용하여 스크린 캐스트를 만들고 최적의 결과를 얻었습니다.

스크린 캐스트를 시작하는 스크립트

#! / bin / bash

# 선택한 창의 좌표와 크기를 가져옵니다
# 이것은 창 장식을 제외합니다.
  xywh 설정 해제
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + 절대 왼쪽 상단 X : + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + 절대 왼쪽 상단 Y : + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + 폭 : + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + 높이 : + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w % 2 # 너비가 2의 배수 인 경우, 그렇지 않으면 ffmpeg가 불평합니다.
WIN_XY = $ x ","$ y # XY 좌표 형식
WIN_GEO = $ w "x"$ h # 형식 창 크기
# notify-send는 스크린 캐스트 시작을 알리는 메시지를 표시합니다.
# 구성에 맞는 매개 변수로 ffmpeg를 실행합니다.
notify-send "스크린 캐스트 시작 중 ..."&& ffmpeg -f alsa -i hw : 0 -f x11grab -r 25 -s $ WIN_GEO -i : 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset ultrafast- crf 0-스레드 0 save.mp4

이 스크립트가 수행하는 모든 것을 완전히 이해할 필요는 없습니다. 댓글을 따르는 것만으로도 충분합니다. 그러나 ffmpeg가 실행되는 줄에서 일부 매개 변수를 변경하여 시스템 구성에 맞게 조정해야 할 가능성이 매우 높습니다.

오디오 아키텍처

1) OSS를 사용하는 경우 -f alsa -i hw : 0을 -f oss -i / dev / dsp로 대체하십시오.

2) ALSA 만 사용하는 경우 스크립트에 포함 된 매개 변수 (-f alsa -i hw : 0)를 사용해야합니다. hw 이후의 번호를 확인하려면 aplay -l을 실행하고 적절한 사운드 카드 번호를 선택합니다.

3) Pulse Audio를 사용하는 경우 (Ubuntu 및 파생 제품에서 사용) -f alsa -ac 1 -i pulse 매개 변수를 사용하십시오.

FPS

-r 25는 녹화하려는 fps (초당 프레임 또는 초당 프레임)를 나타냅니다. 25는 좋은 선택입니다.

오디오, 비디오 및 동기화 코덱

-acodec libmp3lame는 오디오 코덱입니다. 나는 그것을 mp3로 녹음하기로 결정했습니다. 다른 것을 사용할 수 있습니다.

-async 1은 오디오와 비디오의 동기화를 허용합니다.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, 사용할 비디오 코덱이 x264이고 사전 설정이 초고속 (빠름, 느림 등이 있음)임을 ffmpeg에 알립니다. 그렇지 않으면 올바르게 녹화되지 않습니다. 원하는 양의 fps. -crf 0 매개 변수는 압축 수준을 나타냅니다 (압축이 낮을수록 압축이 낮음). 마지막으로 스레드 0은 사용할 스레드 수를 나타내며 0을 전달하면 ffmpeg가 자동으로 계산합니다. 오디오 설정과 마찬가지로 다른 옵션을 선택할 수 있습니다.

이 모든 설정은 저에게 최상의 결과를 제공 한 설정이었습니다. 비교적 작은 파일, 우수한 비디오 품질, 동기화 된 오디오 및 지연 없음. 그러나 다른 사람들을 발견하기 위해 ffmpeg 문서를 살펴볼 것을 권장합니다.

스크린 캐스트를 종료하는 스크립트

#! / bin / bash
notify-send "스크린 캐스트 종료 중 ..."&& killall ffmpeg
두 스크립트가 모두 작동하려면 notify-send가 설치되어 있어야합니다. 모든 Ubuntu 파생 배포판은이 도구가 설치된 상태로 제공되어야합니다. 아치 및 파생어 : sudo pacman -S libnotify.

에프캐스트

스크립트를 작성하기위한 정보를 찾아 보니 누군가 나와 매우 비슷한 아이디어가 있다는 것을 발견했습니다. Ffcast는 동일한 도구 (ffmpeg 및 xwininfo)를 사용하는 스크립트입니다. 일부 사람들은이 스크립트를 사용하는 것이 더 편리하다고 생각할 수 있기 때문에 언급했습니다.

Arch 및 파생 상품에서 터미널을 열고 실행했습니다.

야우 르트 -S ffcast

나머지는 다음에서 다운로드 할 수 있습니다. 여기에.

끝으로…

HOME 폴더에 저장된 스크립트를 만들고 저장 한 후에는 실행 권한을 부여해야합니다. start_screencast 및 finish_screencast가 호출되었다고 가정하고 터미널에서 다음 명령을 실행합니다.

chmod + x start_screencast
chmox + x terminate_screencast

마지막으로 각 스크립트를 사용자에게 편한 2 개의 바로 가기 (바로 가기)에 할당하는 것만 남아 있습니다. 이렇게하면 선택한 키 조합을 누를 때 스크립트가 실행됩니다.


12 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   마이클 Sp

    Linux를 알게 된 이후로이 의견에서 방금 설명한 것과 똑같은 질문을했습니다. 야심 찬 프로젝트가 될 것입니다.

  2.   오후

    튜토리얼은 좋다고 생각하는데 초보 사용자들에게 쉬운 말은 어떻게 하시나요? 음, 저에게 가장 잘 어울리는 것은 카잠, 사용하기 쉽고 제 생각에는 많이 소비하지 않습니다 !!!!!! 건배

  3.   Linux를 사용합시다

    전부는 아닙니다. 또한 내가 원하는 형식으로 작동하고 리소스를 거의 사용하지 않는 스크린 캐스팅 (내가 필요한 모든 것을 갖추고 있음)을위한 좋은 인터페이스가 없다고 솔직히 믿습니다.

    제 경우에는 터미널이 최선의 선택입니다. 모든 사람을위한 척하지는 않지만 배우고있는 것을 공유하는 것이 좋습니다.

    건배! 폴.

  4.   호르헤 로차

    GNU / linux에서 OS를 확장하고 싶다면 터미널에서 그런 종류의 작업을 수행하도록 사용자에게 조언하는 것은 잘못된 것입니다. 사람들은 쉽고 기능적인 것을 원합니다.

    안녕하세요.

  5.   Whysoyjuan

    서버 수준에서는 콘솔 만 사용하고 그래픽 환경은 사용하지 않습니다 ... 가장 실용적이며 거기에서 모든 작업을 수행합니다 (예를 들어 백업을 자동화합니다 ...). 서버 ... 당신이 그것에 스크린 캐스트를하고 싶은데? hehe..ffmpeg는 매우 유효하지만 콘솔 문제는 배포판에 따라 배경으로 가야한다고 생각합니다.
    Linux 세계에는 다양한 배포판이 있고 콘솔은 모든 상황에서 제대로 작동 할 수있을만큼 완벽하기 때문에 (거의 오류가 없습니다 ..) 대중을위한 앱 개선을 시작해야합니다. 연마, 코드 및 그래픽 측면 ... 오늘날 요구되는 것입니다.
    우리는 상당히 구식이고 버려진 Linux 프로젝트를 가지고 있습니다. 우리 모두는 알고 있습니다. 저에게 좋은 예는 더 이상 pendrive에서 프로그램을 가져 와서 두 번 클릭하고 간단히 실행할 수있는 실행 파일 형식이없는 이유입니다. 리포지토리 (및 네트워크)가 필요한 것 외에 설치 .. APTonCD가 없습니다. 이것도 구식입니다 .. 표준, ".tux"또는 Windows의 ".exe"와 유사한 것이 필요합니다. 공간 문제입니까? .. Windows에서 Gimp 실행 파일은 72MB를 차지하고 Linux 용 (.deb) 실행 파일은 4,2MB를 차지합니다. 왜 그런가요? 글쎄, Gimp 프로그램 자체는 Windows에서는 프로그램이 설치 될 때 작동하는지 확인하기 위해 모든 라이브러리가 함께 제공되기 때문에 ... Linux에서는 동일한 것을 가질 수 있고 실행 파일이 더 많이 차지할 수 있으며 이점을 잃을 것입니다. 크기는 커지지 만 휴대 성은 향상됩니다 (오늘날 주머니에 넣을만큼 큰 메모리로 인해 더 많은 것을 얻을 수 있습니다. 거의 모든 사람이 4GB 펜 드라이브를 휴대한다면 72MB보다 8MB를 휴대하는 것이 어떤 차이가 있습니까?)
    이 모든 것들은 다듬어 져야합니다. 시스템은 안정적이고, 큰 지원과 드라이버 호환성을 가지고 있습니다. 우리가있는 것을 개선하지 않는 이유는 무엇입니까? ... 누군가가 격려를 받으면 실행 가능한 프로젝트 hehe를 시작합니다. !

  6.   히다 베

    음 ... 음, 콘솔을 좋아하는 사람들은 콘솔을 좋아하지 않습니다. 친애하는 친구이기 때문에 콘솔을 좋아하기 때문입니다. 예를 들어 서버 수준에서 자동화 할 수 있기 때문입니다.

  7.   Whysoyjuan

    솔직히 콘솔은 매우 유용하지만 ffmpeg를 사용하는 GUI가있는 프로그램이 있고 새로운 Linux 사용자에게 더 매력적이고 건설적인 프로그램이 있습니다. 거의 모든 배포판의 저장소에있는 RecordMyDescktop을 추천합니다. 콘솔을 좋아하는 많은 사람들이 있지만 가능한 한 많이 완료해야합니다. Linux는 데스크톱에 초점을 맞춰야하며 근본적으로이를 원하는 최종 사용자, 그래픽 인터페이스 및 가능하면 아름답고 실용적이어야합니다. ... 그렇게 어렵습니까? 우리는 발을 딛을 수 없습니다. .. 리눅스는 엄청난 잠재력을 가지고 있으며 우리는 그것을 짜 내야합니다!
    모든 것에도 불구하고 훌륭한 프로그램입니다!

  8.   Whysoyjuan

    진실은, 예, 배우고있는 것을 공유하는 것이 좋습니다. 이것은 게시물의 평가 절하에 대한 비판이 아니라 왜 더 많은 사람들이 Linux를 사용하지 않는지에 대한 비판입니다. 콘솔을 두 번째 평면으로 축소하여 그래픽 기능을 제공해야합니다 (이는 콘솔로 작업을 수행 할 수있는 가능성이 배제된다는 의미가 아니라 사용하려는 사람과 사용하지 않는 사람은 그렇지 않습니다 ..)
    결국 판매되는 것은 OS 운영의 용이성입니다. Linux는 내부적으로 멈출 수 없습니다.하지만 사용 편의성과 직관적 인 인터페이스를 추가하면 사용자를 확보하고 이점을 얻을 수 있습니다. 커뮤니티의 개발, 다양한 프로그램, 비디오 게임 회사의 지원 및 특정 하드웨어 (예 : 그래픽 카드 ..), 현재 Windows / Mac에만 존재하는 특수 소프트웨어의 생성 ... 모르겠습니다. 이것은 15M 계획에 있습니다 ... 모두 매우 좋지만 이제는 코스를 조금 바꿀 때입니다 ... 그리고 나는 조금 말합니다!

    글쎄요, Linux의 표준 실행 가능 프로젝트는 여전히 존재합니다. 누군가가 그것을 읽고 우리가 공동 작업을 시작하기를 원한다면 여기에 제 이메일이 있습니다. 저는 hehe를 숨기지 않습니다 (whysoyjuan@gmail.com)

    인사와 나는 여기에서 더 많은 의견을보고 싶습니다 ... 그들이 비판이나 칭찬, 사실 우리가 이야기해야한다는 것입니다.

  9.   Linux를 사용합시다

    좋은! 좋은 공헌.
    포옹! 폴.

  10.   제라르도

    이 프로그램은 무엇입니까 ... 조심하세요, 저는 이것에 대해 잘 모릅니다!

    1.    리눅스를 사용하자

      일반적으로 동영상 변환에 사용됩니다. 이 경우, 예를 들어이를 사용하여 데스크탑을 녹화하고 비디오 자습서를 만드는 방법을 보여줍니다.
      포옹! 폴.

  11.   타리 발리 스

    감사합니다. 해상도 (예 : 1280X800)에서 ffmpeg 명령이 작동하려면 X가 대문자 여야합니다.