Cum se face un screencast folosind ffmpeg

Pentru cei care nu știu, a ecran turnat este o înregistrare digitală a ieșirii ecranului computerului, care conține uneori narațiune audio.

En Linux, sunt câteva Unelte să facă turnare pe ecran. Cu toate acestea, cei care preferă să facă acest lucru consumând resurse minime nu se pot opri din citirea acestui articol.


Folosind 2 instrumente (ffmpeg pentru a captura ecranul și xwininfo pentru a obține coordonatele și dimensiunile ferestrei de înregistrat) am reușit să realizez screencasts folosind resurse minime și obținând rezultate optime.

Scriptul pentru a începe screencast-ul

#! / Bin / bash

# Obțineți coordonatele și dimensiunea ferestrei selectate
# Aceasta exclude decorarea ferestrelor.
  dezactivat xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + X stânga-sus absolut: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Y-stânga sus absolut: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Lățime: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Înălțime: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # că lățimea este multiplu de 2, altfel ffmpeg se plânge
WIN_XY = $ x "," $ y # formatează coordonatele XY
WIN_GEO = $ w "x" $ h # dimensiunea ferestrei de format
# notification-send va afișa un mesaj care indică începutul screencast-ului.
# rulați ffmpeg cu parametrii care se potrivesc configurației dvs.
notificare-trimitere "Pornire screencast ..." && 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 -file 0 save.mp4

Nu trebuie să înțelegeți pe deplin tot ceea ce face acest script. Pur și simplu urmărirea comentariilor este suficientă. Cu toate acestea, este foarte posibil să trebuiască să modificați unii parametri în linia în care se execută ffmpeg pentru a-i ajusta la configurația mașinii dvs.

Arhitectura audio

1) Dacă utilizați OSS, înlocuiți -f alsa -i hw: 0 cu -f oss -i / dev / dsp

2) Dacă utilizați numai ALSA, trebuie să utilizați parametrii care apar în script (-f alsa -i hw: 0). Pentru a determina numărul după hw: puteți rula aplay -l și alegeți numărul corespunzător al plăcii de sunet.

3) Dacă utilizați Pulse Audio (Ubuntu și derivatele folosesc acest lucru), utilizați parametrii -f alsa -ac 1 -i pulse.

FPS

-r 25 indică fps (cadre pe secundă sau cadre pe secundă) la care doriți să înregistrați. 25 este o opțiune bună.

Codec audio, video și de sincronizare

-acodec libmp3lame este codecul audio. Am ales să îl înregistrez în format mp3. Puteți folosi oricare altul.

-async 1 permite sincronizarea audio cu video.

-vcodec libx264 -preset ultrafast -crf 0-threads 0, spune ffmpeg că codecul video de utilizat este x264 și că presetarea este ultrarapidă (există rapid, lent etc.), altfel nu va înregistra corect cantitatea dorită de fps. Parametrul -crf 0 indică nivelul de compresie (cu cât este mai mică compresia, cu atât este mai mică compresia). În cele din urmă, firele 0 indică numărul de fire de utilizat, atunci când treceți 0 ffmpeg îl calculează automat. Ca și în cazul setărilor audio, puteți alege alte opțiuni.

Toate aceste setări au fost cele care mi-au dat cele mai bune rezultate: un fișier relativ mic, o calitate video bună, cu sunet sincronizat și fără întârzieri. Cu toate acestea, vă recomand să vă scufundați în documentația ffmpeg pentru a descoperi altele.

Scenariul pentru a încheia screencast

#! / Bin / bash
notificare-trimitere "Încheiere screencast ..." && killall ffmpeg
Pentru ca ambele scripturi să funcționeze, trebuie să aveți instalat notificare-trimitere. Toate distribuțiile derivate din Ubuntu ar trebui să vină cu acest instrument instalat. În Arch și derivate: sudo pacman -S libnotify.

ffcast

Căutând informații pentru a scrie scenariile, am descoperit că cineva are o idee foarte asemănătoare cu a mea. Ffcast este un script care folosește aceleași instrumente (ffmpeg și xwininfo). O menționez, deoarece unora li se pare mai convenabil să utilizeze acest script.

În Arch și derivate, am deschis un terminal și am rulat:

yaourt -S ffcast

Restul, le puteți descărca de la aici.

A se termina…

Odată ce ați creat și salvat scripturile salvate în folderul HOME, trebuie să îi acordați permisiuni de execuție. Presupunând că sunt apelate start_screencast și finish_screencast, rulați următoarele comenzi într-un terminal:

chmod + x start_screencast
chmox + x terminate_screencast

În cele din urmă, rămâne doar să alocați fiecare dintre scripturi la 2 comenzi rapide (comenzi rapide) care vă sunt confortabile. În acest fel, scripturile vor rula când apăsați combinația de taste selectată.


12 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Michael Sp el a spus

    De când am cunoscut Linux, m-am întrebat exact același lucru care tocmai a fost detaliat în acest comentariu. ar fi un proiect ambițios.

  2.   pmf el a spus

    Cred că tutorialul este bun, dar cum spui ceva ușor pentru utilizatorii începători? Ei bine, cel care mi se pare cel mai bun este KAzam, este ușor de utilizat și nu consumă mult în opinia mea !!!!!! Noroc

  3.   Să folosim Linux el a spus

    Nu tot. De asemenea, cred sincer că nu există o interfață bună pentru screencasting (care are tot ce am nevoie), care funcționează cu formatele dorite și care consumă puține resurse.

    În cazul meu, terminalul este cea mai bună opțiune. Nu mă prefac că este pentru toată lumea, dar este bine să împărtășești ceea ce învați, nu?

    Noroc! Paul.

  4.   Jorge Rocha el a spus

    Este greșit că, dacă vrem să extindem sistemul de operare sub GNU / linux, îi sfătuim pe utilizatori să facă acest lucru în terminal, oamenii vor ceva ușor și funcțional

    @ingjorgerocha

  5.   de ce asa? el a spus

    La nivel de server folosesc, de asemenea, doar consolă, fără mediu grafic ... este cel mai practic și fac totul de acolo (automatizăm copiile de rezervă, de exemplu, cum spui bine ...), dar pe o mașină pe care o ai ca un server ... pentru ce vrei să faci un screencast pe el? hehe .. Ffmpeg este foarte foarte valid, dar cred că problema consolei ar trebui să treacă în fundal în funcție de distribuțiile.
    Deoarece avem atât de multă varietate de distrosuri în lumea Linux, iar consola este suficient de perfectă pentru a funcționa corect în toate situațiile (este aproape infailibilă mai degrabă ..), ar trebui să începem să îmbunătățim aplicațiile pentru public, să începem pentru a lustrui, codifica și aspectul grafic ... care este ceea ce se cere astăzi.
    Avem proiecte Linux destul de arhaice și abandonate, știm cu toții că ... un exemplu bun, pentru mine, este motivul pentru care nu mai există un format de fișier executabil care vă permite să luați un program pe un pendrive și pur și simplu să faceți dublu clic și un simplu instalare în afară de necesitatea de depozite (și, prin urmare, de rețea) .. fără APTonCD, și acesta este învechit .. avem nevoie de un standard, un ".tux" sau ceva similar cu un Windows ".exe". Este pentru problemă de spațiu? .. în Windows, executabilul Gimp ocupă 72mb și același pentru Linux (.deb) ocupă 4,2mb ... de ce este asta? Ei bine, pentru că programul Gimp în sine, în Windows este însoțit de toate bibliotecile pentru a ne asigura că programul funcționează atunci când este instalat ... în Linux am putea avea ceva similar, executabilul ar ocupa mai mult, am pierde avantajul dimensiunii dar câștigăm în portabilitate (și mai mult cu amintirile atât de mari încât le purtăm astăzi în buzunare ... ce diferență are să purtăm 4mb decât 72mb dacă aproape toți purtăm pen drive-uri de 8gb?
    Toate aceste lucruri trebuie lustruite ... sistemul este stabil, are un suport excelent și compatibilitate cu driverele ... de ce nu îmbunătățim ceea ce există? ... dacă cineva este încurajat, începem proiectul executabil hehe. !

  6.   hidabe el a spus

    Uhm ... ei bine, persoanele care iubesc consola nu o iubesc pentru că dragă prietenă, le place pentru că cu ea se pot automatiza multe lucruri, de exemplu, la nivel de server (deși nu este cazul).

  7.   de ce asa? el a spus

    Sincer, consola este foarte utilă ... dar există programe cu o anumită interfață grafică care folosesc ffmpeg și sunt mai atractive și mai constructive pentru posibilii utilizatori noi de Linux ... Recomand RecordMyDescktop care se află în depozitele de aproape toate distribuțiile. Știu există mulți oameni care iubesc consola, dar acest lucru trebuie terminat cu cât mai mult posibil ... Linux trebuie să fie concentrat pe desktop și un posibil utilizator final care dorește în mod fundamental asta, o interfață grafică și, dacă este posibil, frumoasă și practică. .. este atât de dificil? încât nu ne putem lăsa călcați în picioare ... Linux are un potențial extraordinar și trebuie să-l stoarcem!
    În ciuda tuturor, este un program grozav! Post bun ^^

  8.   de ce asa? el a spus

    Adevărul este că da, este minunat să împărtășim ceea ce învață cineva ... Aceasta nu este o critică în sensul devalorizant al postării, ci o critică a motivului pentru care mai mulți oameni nu folosesc Linux ... orice ar spune, consola ar trebui redusă la un al doilea plan pentru a lăsa loc facilităților grafice (acest lucru nu înseamnă că este exclusă posibilitatea de a face lucruri prin consolă, ci că oricine dorește să o folosească și cine nu, bine, nu ..)
    La sfârșitul zilei, ceea ce vinde, ceea ce este frapant este ușurința de a opera un sistem de operare ... intern Linux este de neoprit, dar dacă adăugăm la acea ușurință de utilizare și interfețe intuitive ... câștigăm utilizatori și asta beneficiază dezvoltarea comunității, diferitele programe, asistență din partea companiilor de jocuri video și, prin urmare, hardware specific (să spunem plăci grafice ..), crearea de software specializat care există în prezent doar pe Windows / Mac ... Nu știu, cred că acest lucru este în planul 15M ... totul foarte frumos, dar acum este timpul să schimbăm puțin cursul ... și spun puțin!

    Ei bine, proiectul executabil standard în Linux rămâne în continuare, dacă cineva îl citește și vrea să începem să colaborăm, iată e-mailul meu, nu mă ascund hehe (whysoyjuan@gmail.com)

    Salutări și sper să văd mai multe comentarii aici ... fie că sunt critici sau laude, faptul este că trebuie să vorbim. Xao

  9.   Să folosim Linux el a spus

    Bun! Bună contribuție.
    Îmbrăţişare! Paul.

  10.   Gerardo el a spus

    În ce constă acest program ... fii atent, nu știu foarte bine despre asta!

    1.    să folosim Linux el a spus

      În general, este folosit pentru a converti videoclipuri. În acest caz, vom demonstra cum să-l utilizați pentru a înregistra desktopul și pentru a crea un tutorial video, de exemplu.
      Îmbrăţişare! Paul.

  11.   tarribalis el a spus

    Mulțumesc. În rezoluție, de exemplu, 1280X800, X trebuie scris cu majuscule pentru ca comanda ffmpeg să funcționeze.