Paano gumawa ng isang screencast gamit ang ffmpeg

Para sa mga hindi nakakaalam, a screen cast ito ay isang digital recording ng output ng computer screen, kung minsan naglalaman ng audio narration.

En Linux, maraming mga kasangkapan gawin screen casting. Gayunpaman, ang mga nais na gawin ito pag-ubos ng kaunting mapagkukunan hindi nila mapigilan ang pagbabasa ng artikulong ito.


Paggamit ng 2 mga tool (ffmpeg upang makuha ang screen at xwininfo upang makuha ang mga coordinate at sukat ng window na maitatala) Nagawa kong gumawa ng mga screencast gamit ang kaunting mga mapagkukunan at pagkuha ng pinakamainam na mga resulta.

Ang script upang simulan ang screencast

#! / bin / bash

# Kunin ang mga coordinate at laki ng napiling window
# Hindi nito ibinubukod ang dekorasyon ng window.
  unset xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Ganap na kaliwang itaas X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Ganap na kaliwa sa itaas Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Lapad: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Taas: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # na ang lapad ay isang maramihang 2, kung hindi man ay nagrereklamo ang ffmpeg
WIN_XY = $ x "," $ y # format XY coordinate
WIN_GEO = $ w "x" $ h # format na laki ng window
Ang # notify-send ay magpapakita ng isang mensahe na nagpapahiwatig ng pagsisimula ng screencast.
# patakbuhin ang ffmpeg kasama ang mga parameter na umaangkop sa iyong pagsasaayos.
abisuhan-ipadala ang "Simula ng 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 -threads 0 save.mp4

Hindi mo kailangang ganap na maunawaan ang lahat ng ginagawa ng script na ito. Ang pagsunod lamang sa mga komento ay sapat na. Gayunpaman, posible na baguhin mo ang ilang mga parameter sa linya kung saan tumatakbo ang ffmpeg upang ayusin ang mga ito sa pagsasaayos ng iyong machine.

Arkitektura ng audio

1) Kung gumagamit ka ng OSS, palitan ang -f alsa -i hw: 0 sa -f oss -i / dev / dsp

2) Kung gagamitin mo lamang ang ALSA, kailangan mong gamitin ang mga parameter na dumating sa script (-f alsa -i hw: 0). Upang matukoy ang numero pagkatapos ng hw: maaari kang magpatakbo ng aplay -l at piliin ang naaangkop na numero ng sound card.

3) Kung gumagamit ka ng Pulse Audio (ginagamit ito ng Ubuntu at derivatives), gamitin ang mga parameter -f alsa -ac 1 -i pulse.

FPS

Ang -r 25 ay nagpapahiwatig ng fps (mga frame bawat segundo o mga frame bawat segundo) kung saan nais mong i-record. 25 ay isang mahusay na pagpipilian.

Audio, video at codec ng pag-sync

-acodec libmp3lame ay ang audio codec. Pinili kong i-record ito sa mp3. Maaari kang gumamit ng iba pa.

Pinapayagan ng -async 1 ang pagsabay sa audio sa video.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, ay nagsasabi sa ffmpeg na ang video codec na gagamitin ay x264 at ang preset ay ultrafast (mayroong mabilis, mabagal, atbp), kung hindi man ay hindi ito magtatala nang tama sa nais na dami ng fps Ang parameter na -crf 0 ay nagpapahiwatig ng antas ng compression (mas mababa ang compression, mas mababa ang compression). Sa wakas, ang mga thread 0 ay nagpapahiwatig ng bilang ng mga thread na gagamitin, kapag ang pagpasa sa 0 ffmpeg ay awtomatikong kinakalkula ito. Tulad ng mga setting ng audio, maaari kang pumili ng iba pang mga pagpipilian.

Ang lahat ng mga setting na ito ay ang nagbigay sa akin ng pinakamahusay na mga resulta: isang maliit na file, mahusay na kalidad ng video, na may naka-synchronize na audio at walang mga lag. Gayunpaman, inirerekumenda kong sumisid ka sa dokumentasyon ng ffmpeg upang matuklasan ang iba.

Ang script upang wakasan ang screencast

#! / bin / bash
abisuhan-ipadala ang "Ending screencast ..." && killall ffmpeg
Para gumana ang parehong mga script dapat na mayroon kang nai-install na abisuhan. Ang lahat ng pamamahagi na nagmula sa Ubuntu ay dapat na may naka-install na tool na ito. Sa Arch at derivatives: sudo pacman -S libnotify.

ffcast

Naghahanap ng impormasyon upang isulat ang mga script, natuklasan ko na ang isang tao ay may isang ideya na halos kapareho ng sa akin. Ang Ffcast ay isang script na gumagamit ng parehong mga tool (ffmpeg at xwininfo). Nabanggit ko ito dahil ang ilan ay maaaring makita itong mas komportable na gamitin ang script na ito.

Sa Arch at derivatives, nagbukas ako ng isang terminal at tumakbo:

yaourt -S ffcast

Ang natitira, maaari kang mag-download mula sa dito.

Upang tapusin…

Sa sandaling nalikha mo at na-save ang mga script na nai-save sa iyong HOME folder, kailangan mong bigyan ito ng mga pahintulot sa pagpapatupad. Ipagpalagay na ang start_screencast at finish_screencast ay tinawag, patakbuhin ang mga sumusunod na utos sa isang terminal:

chmod + x start_screencast
chmox + x wakasan_screencast

Sa wakas, nananatili lamang ito upang italaga ang bawat isa sa mga script sa 2 mga shortcut (mga shortcut) na komportable para sa iyo. Sa ganoong paraan, tatakbo ang mga script kapag pinindot mo ang napiling key na kombinasyon.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Michael Sp dijo

    Mula nang makilala ko ang Linux, tinanong ko sa aking sarili ang eksaktong bagay na na-detalyado lamang sa komentong ito. ito ay magiging isang ambisyosong proyekto.

  2.   pmf dijo

    Ang tutorial ay mukhang mabuti sa akin, ngunit paano mo masasabi ang isang bagay na madali para sa mga gumagamit ng baguhan? Buweno, ang isa na para sa akin ay pinakamahusay na KAzam, madaling gamitin ito at hindi kumakain ng malaki sa aking palagay !!!!!! Cheers

  3.   Gumamit tayo ng Linux dijo

    Hindi lahat. Gayundin, matapat akong naniniwala na walang mahusay na interface para sa screencasting (na mayroong lahat ng kailangan ko), na gumagana sa mga format na gusto ko at kumonsumo ng ilang mga mapagkukunan.

    Sa aking kaso, ang terminal ang pinakamahusay na pagpipilian. Hindi ako nagpapanggap na para ito sa lahat, ngunit mabuting ibahagi kung ano ang natututuhan, tama?

    Cheers! Paul

  4.   Jorge Rocha dijo

    Maling na kung nais naming mapalawak ang OS sa ilalim ng GNU / linux pinapayuhan namin ang mga gumagamit na gawin ang ganoong uri ng bagay sa terminal na nais ng mga tao ng isang bagay na madali at gumagana.

    @ingjorgerocha

  5.   bakitsoyjuan dijo

    Sa antas ng server Gumagamit din ako ng console lamang, walang grapikong kapaligiran ... ito ang pinaka praktikal at ginagawa ko ang lahat mula doon (i-automate ang mga backup halimbawa tulad ng sinabi mo ...), ngunit, sa isang makina na mayroon ka isang server ... ano ang nais mong gawin sa isang screencast dito? hehe..ffmpeg ay napaka-wasto ngunit sa palagay ko ang isyu ng console ay dapat pumunta sa background depende sa kung aling mga pamamahagi.
    Dahil mayroon kaming iba't ibang mga distro sa mundo ng Linux, at ang console ay ganap na perpekto upang gumana nang maayos sa lahat ng mga sitwasyon (ito ay halos hindi nagkakamali ..), dapat nating simulan ang pagpapabuti ng mga app para sa publiko, magsimulang mag-polish, mag-code. at graphic na aspeto ... na kung saan ay ang hinihingi ngayon.
    Mayroon kaming mga archaic at inabandunang mga proyekto sa Linux, alam nating lahat na ... isang mahusay na halimbawa, para sa akin, ay kung bakit wala na ang isang maipapatupad na format ng file na nagbibigay-daan sa iyo upang kumuha ng isang programa sa isang pendrive at simpleng pag-click at isang simpleng pag-install bukod sa nangangailangan ng mga repository (at samakatuwid network) .. walang APTonCD, ito ay luma na rin .. kailangan namin ng isang pamantayan, isang ".tux" o isang bagay na katulad ng isang ".exe" ng Windows. Ito ba ay isang bagay ng puwang? .. sa Windows, ang Gimp executable ay sumasakop sa 72mb at ang parehong isa para sa Linux (.deb) ay sumasakop sa 4,2mb ... bakit ito? Kaya, dahil ang mismong programa ng Gimp, sa Windows sinamahan ito ng lahat ng mga aklatan upang matiyak na gagana ang programa kapag na-install ... sa Linux maaari kaming magkaroon ng isang bagay na katulad, ang maipapatupad ay mas sakupin nang higit pa, mawawalan kami ng kalamangan sa laki ngunit nakakuha kami ng kakayahang dalhin (at higit pa sa mga alaalang napakalaki na dala natin ngayon sa aming mga bulsa ... anong pagkakaiba ang ginagawa upang magdala ng 4mb kaysa sa 72mb kung halos lahat sa atin ay nagdadala ng 8gb pendrives?)
    Ang lahat ng mga bagay na ito ay dapat na pinakintab ... ang sistema ay matatag, may mahusay na suporta at pagiging tugma ng driver ... bakit hindi natin pagbutihin kung ano ang meron? ...

  6.   hidabe dijo

    Uhm ... mabuti, ang mga taong nagmamahal ng console ay hindi gusto ito dahil oo mahal na kaibigan, mahal nila ito dahil kasama nito maraming mga bagay ang maaaring awtomatiko, halimbawa, sa antas ng server (bagaman hindi ito ang kaso).

  7.   bakitsoyjuan dijo

    Sa totoo lang, ang console ay napaka kapaki-pakinabang ... ngunit may mga programa na may ilang GUI na gumagamit ng ffmpeg at mas kaakit-akit at nakabubuo para sa mga posibleng bagong gumagamit ng Linux ... Inirerekumenda ko ang RecordMyDescktop na nasa mga repository ng halos lahat ng mga distrito. Alam ko maraming mga tao na gustung-gusto ang console, ngunit dapat itong tapusin hangga't maaari ... Dapat nakatuon ang Linux sa desktop at isang posibleng end user na pangunahing gusto iyon, isang grapikong interface at kung posible ay maganda at praktikal .. . napakahirap ba? na hindi tayo makatapak .. ang Linux ay may napakalaking potensyal at dapat natin itong pigain!
    Sa kabila ng lahat, ito ay isang mahusay na programa! Magandang post ^^

  8.   bakitsoyjuan dijo

    Ang totoo, oo, mahusay na ibahagi kung ano ang natutunan ... Hindi ito isang pagpuna sa nagpapahina ng kahulugan ng post, ngunit isang pintas kung bakit mas maraming tao ang hindi gumagamit ng Linux ... anuman ang sasabihin nila, ang Ang console ay dapat na bawasan sa isang pangalawang eroplano upang magbigay daan sa mga grapikong pasilidad (hindi ito nangangahulugan na ang posibilidad ng paggawa ng mga bagay sa pamamagitan ng console ay naiwaksi, ngunit na ang sinumang nais na gamitin ito at kung sino man ang hindi, mabuti, hindi ..)
    Sa pagtatapos ng araw, kung ano ang nagbebenta, kung ano ang kapansin-pansin ay ang kadalian ng pagpapatakbo ng isang OS ... Ang Linux ay panloob na hindi mapigilan, ngunit kung idaragdag namin ang kadalian ng paggamit at madaling maunawaan na mga interface ... nanalo kami ng mga gumagamit at nakikinabang ito ang pag-unlad ng komunidad, ang iba't ibang mga programa, suporta mula sa mga kumpanya ng video game at samakatuwid ay tiyak na hardware (sabihin ang mga graphic card ...), paglikha ng dalubhasang software na kasalukuyang mayroon lamang sa Windows / Mac ... Hindi ko alam, ako isipin na ito ay nasa 15M na plano ... lahat ay napakaganda ngunit oras na upang baguhin ang kurso nang kaunti ... at sinasabi ko nang kaunti!

    Kaya, ang pamantayan na maipapatupad na proyekto sa Linux ay nakatayo pa rin, kung may magbasa nito at nais na magsimula kaming magtulungan, narito ang aking email, hindi ako nagtatago hehe (whysoyjuan@gmail.com)

    Pagbati at inaasahan kong makita ang maraming mga puna dito ... maging ang mga pintas o papuri, ang katotohanan ay kailangan nating mag-usap. Xao

  9.   Gumamit tayo ng Linux dijo

    Mabuti! Magandang tampo
    Yakap! Paul

  10.   Gerardo dijo

    Tungkol saan ang program na ito ... mag-ingat, hindi ako masyadong may kaalaman tungkol dito!

    1.    gumamit tayo ng linux dijo

      Pangkalahatan, ginagamit ito upang mai-convert ang mga video. Sa kasong ito, ipinapakita namin kung paano ito gamitin upang maitala ang iyong desktop at gumawa ng isang video tutorial, halimbawa.
      Yakap! Paul

  11.   tarribalis dijo

    Salamat. Sa resolusyon, hal. 1280X800, ang X ay dapat na naka-capitalize para gumana ang ffmpeg command.