Cara membuat screencast menggunakan ffmpeg

Bagi yang belum tahu, a screencast Ini adalah rekaman digital dari keluaran layar komputer, terkadang berisi narasi audio.

En Linux, ada beberapa alat harus dilakukan pengecoran layar. Namun, mereka yang lebih suka melakukannya mengkonsumsi sumber daya minimal mereka tidak bisa berhenti membaca artikel ini.


Menggunakan 2 alat (ffmpeg untuk menangkap layar dan xwininfo untuk mendapatkan koordinat dan dimensi jendela yang akan direkam) saya berhasil membuat screencast menggunakan sumber daya yang minimal dan mendapatkan hasil yang optimal.

Skrip untuk memulai screencast

#! / bin / bash

# Dapatkan koordinat dan ukuran jendela yang dipilih
# Ini tidak termasuk dekorasi jendela.
  tidak disetel xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Absolut kiri atas X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Absolut 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 # bahwa lebarnya adalah kelipatan 2, jika tidak ffmpeg mengeluh
WIN_XY = $ x "," $ y # format koordinat XY
WIN_GEO = $ w "x" $ h # ukuran jendela format
# notify-send akan menampilkan pesan yang menunjukkan awal screencast.
# jalankan ffmpeg dengan parameter yang sesuai dengan konfigurasi Anda.
notify-send "Memulai 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-benang 0 save.mp4

Anda tidak harus sepenuhnya memahami semua yang dilakukan skrip ini. Cukup mengikuti komentar saja. Namun, sangat mungkin bahwa Anda harus mengubah beberapa parameter di baris tempat ffmpeg dijalankan untuk menyesuaikannya dengan konfigurasi mesin Anda.

Arsitektur audio

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

2) Jika Anda hanya menggunakan ALSA, Anda harus menggunakan parameter yang ada di skrip (-f alsa -i hw: 0). Untuk menentukan nomor setelah hw: Anda dapat menjalankan aplay -l dan memilih nomor kartu suara yang sesuai.

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

FPS

-r 25 menunjukkan fps (bingkai per detik atau bingkai per detik) yang ingin Anda rekam. 25 adalah pilihan yang bagus.

Audio, video, dan codec sinkronisasi

-acodec libmp3lame adalah codec audio. Saya memilih untuk merekamnya dalam format mp3. Anda dapat menggunakan yang lain.

-async 1 memungkinkan sinkronisasi audio dengan video.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, memberitahu ffmpeg bahwa codec video yang akan digunakan adalah x264 dan presetnya sangat cepat (ada yang cepat, lambat, dll), jika tidak maka tidak akan merekam dengan benar pada jumlah yang diinginkan fps. Parameter -crf 0 menunjukkan tingkat kompresi (semakin rendah kompresi, semakin rendah kompresinya). Terakhir, utas 0 menunjukkan jumlah utas yang akan digunakan, ketika meneruskan 0 ffmpeg menghitungnya secara otomatis. Seperti halnya pengaturan audio, Anda dapat memilih opsi lain.

Semua pengaturan ini adalah yang memberi saya hasil terbaik: file yang relatif kecil, kualitas video bagus, dengan audio tersinkronisasi dan tanpa jeda. Namun, saya sarankan Anda menyelami dokumentasi ffmpeg untuk menemukan yang lain.

Skrip untuk mengakhiri screencast

#! / bin / bash
notify-send "Ending screencast ..." && killall ffmpeg
Agar kedua skrip bekerja, Anda harus sudah menginstal notify-send. Semua distribusi turunan Ubuntu harus dilengkapi dengan alat ini diinstal. Dalam Arch dan turunannya: sudo pacman -S libnotify.

ffcast

Mencari informasi untuk menulis skrip, saya menemukan bahwa seseorang memiliki ide yang sangat mirip dengan saya. Ffcast adalah skrip yang menggunakan alat yang sama (ffmpeg dan xwininfo). Saya menyebutkannya karena beberapa orang mungkin merasa lebih nyaman menggunakan skrip ini.

Di Arch dan turunannya, saya membuka terminal dan menjalankan:

yaourt -S siaran langsung

Selebihnya, Anda dapat mengunduh dari di sini.

Untuk mengakhiri…

Setelah Anda membuat dan menyimpan skrip yang disimpan di folder HOME, Anda harus memberinya izin eksekusi. Dengan asumsi start_screencast dan finish_screencast dipanggil, jalankan perintah berikut di terminal:

chmod + x start_screencast
chmox + x terminate_screencast

Terakhir, tinggal menetapkan masing-masing skrip ke 2 pintasan (pintasan) yang Anda rasa nyaman. Dengan begitu, skrip akan dieksekusi saat Anda menekan kombinasi tombol yang dipilih.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   Michael Sp dijo

    Sejak saya mengenal Linux, saya bertanya pada diri sendiri hal yang persis sama yang baru saja dijelaskan dalam komentar ini. itu akan menjadi proyek yang ambisius.

  2.   pmf dijo

    Tutorialnya tampak bagus bagi saya, tetapi bagaimana Anda mengatakan sesuatu yang mudah untuk pengguna pemula? Nah, yang menurut saya paling baik adalah KAzam, mudah digunakan dan tidak menghabiskan banyak menurut saya !!!!!! Bersulang

  3.   Mari gunakan Linux dijo

    Tidak semua. Selain itu, sejujurnya saya percaya bahwa tidak ada antarmuka yang bagus untuk screencasting (yang memiliki semua yang saya butuhkan), yang berfungsi dengan format yang saya inginkan dan yang menghabiskan sedikit sumber daya.

    Dalam kasus saya, terminal adalah opsi terbaik. Saya tidak berpura-pura bahwa ini untuk semua orang, tetapi berbagi apa yang dipelajari itu baik, bukan?

    Bersulang! Paul.

  4.   Jorge Rocha dijo

    Salah jika kami ingin memperluas OS di bawah GNU / linux kami menyarankan pengguna untuk melakukan hal semacam itu di terminal orang menginginkan sesuatu yang mudah dan fungsional

    @tokopedia

  5.   mengapasoyjuan dijo

    Di tingkat server saya juga hanya menggunakan konsol, tidak ada lingkungan grafis ... itu yang paling praktis dan saya melakukan semuanya dari sana (mengotomatiskan cadangan misalnya seperti yang Anda katakan ...), tetapi, pada mesin yang Anda miliki sebagai server ... untuk apa Anda ingin melakukan screencast padanya? hehe..ffmpeg sangat valid tetapi saya pikir masalah konsol harus pergi ke latar belakang tergantung pada distribusi mana.
    Karena kita memiliki begitu banyak distro di dunia Linux, dan konsolnya cukup sempurna untuk bekerja dengan baik di semua situasi (lebih tepatnya hampir sempurna ..), kita harus mulai meningkatkan aplikasi untuk publik, mulai memoles, membuat kode dan aspek grafis ... yang menjadi tuntutan saat ini.
    Kami memiliki proyek Linux yang cukup kuno dan terbengkalai, kita semua tahu bahwa ... contoh yang baik, bagi saya, adalah mengapa tidak ada lagi format file yang dapat dieksekusi yang memungkinkan Anda untuk mengambil program pada flashdisk dan cukup klik dua kali dan sederhana instalasi selain membutuhkan repositori (dan karena itu jaringan) .. tidak ada APTonCD, ini juga ketinggalan jaman .. kita membutuhkan standar, ".tux" atau sesuatu yang mirip dengan ".exe" dari Windows. Apakah ini masalah ruang? .. di Windows, Gimp yang dapat dieksekusi menempati 72mb dan yang sama untuk Linux (.deb) menempati 4,2mb ... mengapa ini? Nah, karena program Gimp itu sendiri, di Windows itu disertai dengan semua perpustakaan untuk memastikan bahwa program tersebut berfungsi ketika diinstal ... di Linux kita dapat memiliki sesuatu yang sama, yang dapat dieksekusi akan menempati lebih banyak, kita akan kehilangan keuntungan dari ukuran tetapi kita mendapatkan dalam portabilitas (dan lebih banyak lagi dengan kenangan yang begitu besar yang kita bawa hari ini di saku kita ... apa bedanya membawa 4mb dari 72mb jika hampir semua dari kita membawa flashdisk 8gb?)
    Semua hal ini harus dipoles ... sistemnya stabil, memiliki dukungan yang hebat dan kompatibilitas driver ... mengapa kita tidak meningkatkan apa yang ada? ... jika ada yang didorong, kita mulai proyek yang dapat dieksekusi hehe.!

  6.   bersembunyi dijo

    Uhm ... yah, orang yang suka konsol tidak menyukainya karena sobat, mereka menyukainya karena dengan itu banyak hal yang bisa otomatis, misalnya, di tingkat server (walaupun tidak demikian).

  7.   mengapasoyjuan dijo

    Sejujurnya, konsol ini sangat berguna ... tetapi ada program dengan beberapa GUI yang menggunakan ffmpeg dan lebih menarik dan konstruktif bagi pengguna Linux baru ... Saya merekomendasikan RecordMyDescktop yang ada di repositori hampir semua distro. Saya tahu ada banyak orang yang menyukai konsol, tetapi ini harus diselesaikan dengan sebanyak mungkin ... Linux harus difokuskan pada desktop dan kemungkinan pengguna akhir yang pada dasarnya menginginkan itu, antarmuka grafis dan jika mungkin indah dan praktis .. .sangat sulit? sehingga kita tidak bisa membiarkan diri kita diinjak ... Linux memiliki potensi yang luar biasa dan kita harus memerasnya!
    Terlepas dari segalanya, ini adalah program yang bagus! Posting bagus ^^

  8.   mengapasoyjuan dijo

    Yang benar adalah, ya, sangat bagus untuk membagikan apa yang dipelajari ... Ini bukan kritik dalam arti postingan yang merendahkan, tetapi kritik mengapa lebih banyak orang tidak menggunakan Linux ... apa pun yang mereka katakan, konsol harus direduksi menjadi bidang kedua untuk memberi jalan kepada fasilitas grafis (ini tidak berarti bahwa kemungkinan melakukan sesuatu dengan konsol dikesampingkan, tetapi siapa pun yang ingin menggunakannya dan siapa pun yang tidak, yah, tidak ..)
    Pada akhirnya, apa yang laku, yang mencolok adalah kemudahan mengoperasikan OS ... Linux secara internal tidak dapat dihentikan, tetapi jika kita menambahkan kemudahan penggunaan dan antarmuka yang intuitif ... kita memenangkan pengguna dan itu menguntungkan perkembangan komunitas, program yang berbeda, dukungan dari perusahaan video game dan oleh karena itu perangkat keras khusus (katakanlah kartu grafis ...), pembuatan perangkat lunak khusus yang saat ini hanya ada di Windows / Mac ... Saya tidak tahu, saya Saya pikir ini ada dalam rencana 15 juta ... semuanya sangat bagus tetapi sekarang saatnya untuk mengubah arah sedikit ... dan saya katakan sedikit!

    Nah, proyek standar yang dapat dieksekusi di Linux masih berlaku, jika seseorang membacanya dan ingin kita mulai berkolaborasi, ini email saya, saya tidak bersembunyi hehe (whysoyjuan@gmail.com)

    Salam dan saya berharap dapat melihat lebih banyak komentar di sini ... apakah itu kritik atau pujian, faktanya kami harus berbicara. Xao

  9.   Mari gunakan Linux dijo

    Baik! Kontribusi yang bagus.
    Memeluk! Paul.

  10.   Gerardo dijo

    Tentang apa program ini ... hati-hati, saya tidak terlalu paham tentang ini!

    1.    ayo gunakan linux dijo

      Umumnya, ini digunakan untuk mengonversi video. Dalam hal ini, kami mendemonstrasikan cara menggunakannya untuk merekam desktop Anda dan membuat video tutorial, misalnya.
      Memeluk! Paul.

  11.   Tarribal dijo

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