Cara membuat screencast menggunakan ffmpeg

Bagi mereka yang tidak tahu, a screencast ia adalah rakaman digital output skrin komputer, kadang-kadang mengandungi penceritaan audio.

En Linux, terdapat beberapa alat untuk melakukan penyajian semula. Walau bagaimanapun, mereka yang lebih suka melakukannya memakan sumber yang minimum mereka tidak boleh berhenti membaca artikel ini.


Dengan menggunakan 2 alat (ffmpeg untuk menangkap layar dan xwininfo untuk mendapatkan koordinat dan dimensi tetingkap yang akan dirakam) Saya berjaya membuat screencast menggunakan sumber yang minimum dan memperoleh hasil yang optimum.

Skrip untuk memulakan screencast

#! / Bin / Bash

# Dapatkan koordinat dan ukuran tetingkap yang dipilih
# Ini tidak termasuk hiasan tingkap.
  unset xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Atas kiri atas mutlak X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Mutlak kiri atas Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Lebar: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Tinggi: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # bahawa lebarnya adalah gandaan 2, jika tidak, ffmpeg mengeluh
WIN_XY = $ x "," koordinat XY format $ y #
WIN_GEO = $ w "x" $ h # saiz tetingkap format
# notify-send akan memaparkan mesej yang menunjukkan permulaan screencast.
# jalankan ffmpeg dengan parameter yang sesuai dengan konfigurasi anda.
beritahu-hantar "Memulakan 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

Anda tidak perlu memahami sepenuhnya semua skrip ini. Cukup dengan mengikuti komen sudah cukup. Walau bagaimanapun, sangat mungkin anda perlu mengubah beberapa parameter dalam garis di mana ffmpeg dijalankan untuk menyesuaikannya dengan konfigurasi mesin anda.

Senibina audio

1) Sekiranya anda menggunakan OSS, ganti -f alsa -i hw: 0 dengan -f oss -i / dev / dsp

2) Sekiranya anda hanya menggunakan ALSA, anda harus menggunakan parameter yang terdapat dalam skrip (-f alsa -i hw: 0). Untuk menentukan nombor selepas hw: anda boleh menjalankan aplay -l dan memilih nombor kad suara yang sesuai.

3) Jika anda menggunakan Pulse Audio (Ubuntu dan derivatif menggunakan ini), gunakan parameter -f alsa -ac 1 -i pulse.

FPS

-r 25 menunjukkan fps (bingkai sesaat atau bingkai sesaat) yang ingin anda rakam. 25 adalah pilihan yang baik.

Kodek audio, video dan penyegerakan

-acodec libmp3lame adalah codec audio. Saya memilih untuk merakamnya dalam mp3. Anda boleh menggunakan yang lain.

-sync 1 membolehkan penyegerakan audio dengan video.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, memberitahu ffmpeg bahawa codec video yang akan digunakan adalah x264 dan pratetapnya adalah ultrafast (ada cepat, lambat, dll), jika tidak, ia tidak akan merakam dengan betul pada jumlah yang dikehendaki fps. Parameter -crf 0 menunjukkan tahap pemampatan (semakin rendah mampatan, semakin rendah mampatan). Akhirnya, utas 0 menunjukkan bilangan utas yang akan digunakan, apabila lulus 0 ffmpeg mengira secara automatik. Seperti tetapan audio, anda boleh memilih pilihan lain.

Semua tetapan ini adalah yang memberikan hasil terbaik kepada saya: fail yang agak kecil, kualiti video yang baik, dengan audio yang diselaraskan dan tidak ketinggalan. Walau bagaimanapun, saya mengesyorkan anda menyelami dokumentasi ffmpeg untuk menemui orang lain.

Skrip untuk menamatkan screencast

#! / Bin / Bash
beritahu-hantar "Tamat screencast ..." && killall ffmpeg
Untuk kedua-dua skrip berfungsi, anda mesti memasang notify-send. Semua pengedaran yang berasal dari Ubuntu harus dilengkapi dengan alat ini dipasang. Dalam Arch dan derivatif: sudo pacman -S libnotify.

ffcast

Mencari maklumat untuk menulis skrip, saya dapati seseorang mempunyai idea yang serupa dengan idea saya. Ffcast adalah skrip yang menggunakan alat yang sama (ffmpeg dan xwininfo). Saya menyebutnya kerana ada yang merasa lebih senang menggunakan skrip ini.

Dalam Arch dan derivatif, saya membuka terminal dan berlari:

yaourt -S ffcast

Selebihnya, anda boleh memuat turun dari di sini.

Untuk menamatkan…

Setelah anda membuat dan menyimpan skrip yang disimpan di folder HOME anda, anda harus memberikan izin pelaksanaannya. Dengan mengandaikan start_screencast dan finish_screencast dipanggil, jalankan perintah berikut di terminal:

chmod + x start_screencast
chmox + x terminate_screencast

Akhirnya, masih tinggal menetapkan setiap skrip kepada 2 jalan pintas (jalan pintas) yang sesuai untuk anda. Dengan cara itu, skrip akan berjalan apabila anda menekan kombinasi kekunci yang dipilih.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   Michael Sp kata

    Sejak saya mengenali Linux, saya telah bertanya kepada diri saya perkara yang sama seperti yang diperincikan dalam komen ini. ia akan menjadi projek yang bercita-cita tinggi.

  2.   pmf kata

    Saya rasa tutorialnya bagus, tetapi bagaimana anda mengatakan sesuatu yang mudah bagi pengguna pemula? Nah, yang kelihatan paling baik bagi saya adalah KAzam, senang digunakan dan tidak banyak memakan pendapat saya !!!!!! Sorakan

  3.   Mari gunakan Linux kata

    Tidak semua. Di samping itu, saya dengan jujur ​​percaya bahawa tidak ada antara muka yang baik untuk screencasting (yang mempunyai semua yang saya perlukan), yang berfungsi dengan format yang saya mahukan dan yang menggunakan sedikit sumber.

    Dalam kes saya, terminal adalah pilihan terbaik. Saya tidak berpura-pura bahawa ia adalah untuk semua orang, tetapi ada baiknya untuk berkongsi apa yang dipelajari, bukan?

    Ceria! Paul.

  4.   Jorge Rocha kata

    Adalah salah bahawa jika kita ingin mengembangkan OS di bawah GNU / linux, kita menasihatkan pengguna untuk melakukan perkara seperti itu di terminal orang menginginkan sesuatu yang mudah dan berfungsi

    @pelaburan

  5.   kenapa saya juan kata

    Di peringkat pelayan, saya juga hanya menggunakan konsol, tidak ada persekitaran grafik ... ini adalah yang paling praktikal dan saya melakukan semuanya dari sana (automatik sandaran misalnya seperti yang anda katakan ...), tetapi, pada mesin yang anda miliki sebagai pelayan ... untuk apa anda mahu membuat screencast di atasnya? hehe..ffmpeg sangat sah tapi saya rasa masalah konsol harus pergi ke latar belakang bergantung pada sebaran mana.
    Oleh kerana kita mempunyai banyak distro di dunia Linux, dan konsolnya cukup sempurna untuk berfungsi dengan baik dalam semua keadaan (ia hampir tidak salah ..), kita harus mula meningkatkan aplikasi untuk umum, mulakan untuk menggilap, aspek kod dan grafik ... yang dituntut sekarang.
    Kami mempunyai projek Linux yang cukup kuno dan terbengkalai, kita semua tahu bahawa ... contoh yang baik, bagi saya, adalah mengapa tidak ada lagi format fail yang dapat dilaksanakan yang membolehkan anda mengikuti program pada pendrive dan hanya klik dua kali dan mudah pemasangan selain memerlukan repositori (dan oleh itu rangkaian) .. tidak ada APTonCD, ini juga ketinggalan zaman .. kita memerlukan standard, ".tux" atau yang serupa dengan ".exe" Windows. Adakah masalah ruang? .. di Windows, Gimp yang dapat dilaksanakan menempati 72mb dan yang sama untuk Linux (.deb) menempati 4,2mb ... mengapa ini? Oleh kerana program Gimp itu sendiri, di Windows disertakan dengan semua perpustakaan untuk memastikan bahawa program ini berfungsi ketika dipasang ... di Linux kita dapat memiliki sesuatu yang sama, yang dapat dilaksanakan dapat lebih banyak, kita akan kehilangan kelebihan saiznya tetapi kita dapat memperoleh daya bawa (dan lebih banyak lagi dengan kenangan yang begitu besar yang kita bawa hari ini di dalam poket kita ... apa bezanya membawa 4mb daripada 72mb jika hampir semua kita membawa pendrives 8gb?)
    Semua perkara ini mesti digilap ... sistemnya stabil, mempunyai sokongan hebat dan keserasian pemacu ... mengapa kita tidak memperbaiki apa yang ada? ... jika seseorang digalakkan, kita mulakan projek yang dapat dilaksanakan hehe. !

  6.   hidabe kata

    Eh ... baiklah, orang yang suka konsol tidak menyukainya kerana sayang kawan, mereka menyukainya kerana dengannya banyak perkara dapat automatik, misalnya, di peringkat pelayan (walaupun ini bukan masalahnya).

  7.   kenapa saya juan kata

    Sejujurnya, konsol sangat berguna ... tetapi ada program dengan beberapa GUI yang menggunakan ffmpeg dan lebih menarik dan membina untuk kemungkinan pengguna Linux baru ... Saya cadangkan RecordMyDescktop yang ada di repositori hampir semua distro. Saya tahu terdapat banyak orang yang menyukai konsol, tetapi ini mesti diselesaikan dengan seberapa banyak yang mungkin ... Linux mesti difokuskan pada desktop dan kemungkinan pengguna akhir yang pada dasarnya menginginkannya, antara muka grafik dan jika mungkin cantik dan praktikal .. Adakah sangat sukar? Kita tidak boleh membiarkan diri kita dipijak ... Linux mempunyai potensi yang luar biasa dan kita mesti memaksanya!
    Walau apa pun, ini adalah program yang bagus! Pos yang baik ^^

  8.   kenapa saya juan kata

    Yang benar adalah, ya, sangat bagus untuk berkongsi apa yang dipelajari oleh seseorang ... Ini bukan kritikan dalam pengurangan nilai siaran, tetapi kritikan mengapa lebih banyak orang tidak menggunakan Linux ... apa sahaja yang mereka katakan, konsol harus dikurangkan menjadi satah kedua untuk memberi laluan kepada kemudahan grafik (ini tidak bermaksud bahawa kemungkinan melakukan sesuatu dengan konsol dikesampingkan, tetapi bahawa siapa pun yang ingin menggunakannya dan siapa pun yang tidak, baiklah ...)
    Pada penghujung hari, apa yang dijualnya, yang mencolok adalah kemudahan mengoperasikan OS ... secara dalaman Linux tidak dapat dihentikan, tetapi jika kita menambah kemudahan penggunaan dan antara muka intuitif itu ... kita memenangkan pengguna dan bahawa ia menguntungkan pembangunan komuniti, program yang berbeza, sokongan dari syarikat permainan video dan oleh itu perkakasan khusus (katakan kad grafik ...), pembuatan perisian khusus yang hanya ada pada Windows / Mac ... Saya rasa ini adalah dalam rancangan 15M ... semuanya sangat bagus tetapi sekarang tiba masanya untuk mengubah haluan sedikit ... dan saya katakan sedikit!

    Nah, projek standard yang dapat dilaksanakan di Linux masih ada, jika ada yang membacanya dan mahu kita mula berkolaborasi, inilah e-mel saya, saya tidak menyembunyikan hehe (whysoyjuan@gmail.com)

    Salam dan saya berharap dapat melihat lebih banyak komen di sini ... sama ada kritikan atau pujian, hakikatnya kita harus bercakap. Xao

  9.   Mari gunakan Linux kata

    Baik! Sumbangan yang baik.
    Peluk! Paul.

  10.   Gerardo kata

    Apa yang terdiri daripada program ini ... berhati-hatilah, saya tidak begitu arif mengenai perkara ini!

    1.    mari gunakan linux kata

      Secara amnya, ia digunakan untuk menukar video. Dalam kes ini, kami menunjukkan cara menggunakannya untuk merakam desktop anda dan membuat tutorial video, misalnya.
      Peluk! Paul.

  11.   tarribalis kata

    Terima kasih. Dalam resolusi, misalnya 1280X800, X mesti menggunakan huruf besar agar perintah ffmpeg berfungsi.