Ffmpeg kullanarak ekran kaydı nasıl yapılır

Bilmeyenler için screencast bazen sesli anlatım içeren bilgisayar ekranı çıktısının dijital kaydıdır.

En Linux, bir kaç tane var araçları para hacörü ekran video kaydı. Ancak bunu yapmayı tercih edenler minimum kaynak tüketmek bu makaleyi okumayı bırakamazlar.


2 araç kullanarak (ekranı yakalamak için ffmpeg ve kaydedilecek pencerenin koordinatlarını ve boyutlarını elde etmek için xwininfo) minimum kaynakları kullanarak ve en iyi sonuçları elde ederek ekran kayıtları yapmayı başardım.

Ekran video kaydını başlatmak için komut dosyası

#! / Bin / bash

# Seçili pencerenin koordinatlarını ve boyutunu alın
# Buna pencere dekorasyonu dahil değildir.
  ayarlanmamış xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Mutlak sol üst X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Mutlak sol üst Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Genişlik: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Yükseklik: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # genişliğin 2'nin katı olduğu, aksi takdirde ffmpeg şikayet eder
WIN_XY = $ x "," $ y # format XY koordinatları
WIN_GEO = $ w "x" $ h # biçim pencere boyutu
# notify-send ekran video kaydının başladığını belirten bir mesaj görüntüler.
# yapılandırmanıza uyan parametrelerle ffmpeg çalıştırın.
notify-gönder "Ekran kaydı başlatılıyor ..." && 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 ultra hızlı - crf 0-iş parçacığı 0 save.mp4

Bu komut dosyasının yaptığı her şeyi tam olarak anlamanıza gerek yok. Yorumları takip etmeniz yeterlidir. Ancak, ffmpeg'in çalıştırıldığı satırdaki bazı parametreleri, makinenizin yapılandırmasına göre ayarlamak için değiştirmeniz çok olasıdır.

Ses mimarisi

1) OSS kullanıyorsanız, -f alsa -i hw: 0'ı -f oss -i / dev / dsp ile değiştirin.

2) Yalnızca ALSA kullanıyorsanız, betikte gelen parametreleri kullanmanız gerekir (-f alsa -i hw: 0). Hw'den sonraki sayıyı belirlemek için: aplay -l komutunu çalıştırabilir ve uygun ses kartının numarasını seçebilirsiniz.

3) Pulse Audio kullanıyorsanız (Ubuntu ve türevleri bunu kullanır), -f alsa -ac 1 -i pulse parametrelerini kullanın.

FPS

-r 25, kaydetmek istediğiniz fps'yi (saniyedeki kare sayısı veya saniyedeki kare sayısı) belirtir. 25 iyi bir seçenektir.

Ses, video ve senkronizasyon codec bileşeni

-acodec libmp3lame, ses codec bileşenidir. MP3 olarak kaydetmeyi seçtim. Başkalarını kullanabilirsiniz.

-async 1 video ile ses senkronizasyonuna izin verir.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, ffmpeg'e kullanılacak video codec'inin x264 olduğunu ve ön ayarın ultra hızlı olduğunu (hızlı, yavaş, vb.), aksi takdirde doğru şekilde kaydetmeyeceğini söyler. istenen fps miktarı. -Crf 0 parametresi, sıkıştırma düzeyini gösterir (sıkıştırma ne kadar düşükse, sıkıştırma o kadar düşük olur). Son olarak, 0 iş parçacığı, 0 ffmpeg geçerken otomatik olarak hesaplanırken kullanılacak evre sayısını belirtir. Ses ayarlarında olduğu gibi, diğer seçenekleri de seçebilirsiniz.

Tüm bu ayarlar bana en iyi sonuçları verenlerdi: nispeten küçük bir dosya, iyi video kalitesi, senkronize ses ve gecikme olmaksızın. Ancak, başkalarını keşfetmek için ffmpeg belgelerine dalmanızı tavsiye ederim.

Ekran video kaydını bitirmek için komut dosyası

#! / Bin / bash
notify-gönder "Ekran video kaydı bitiyor ..." && killall ffmpeg
Her iki komut dosyasının da çalışması için bildirim-gönderme kurulu olmalıdır. Ubuntu'dan türetilen tüm dağıtımlar bu araç yüklü olarak gelmelidir. Arch ve türevlerinde: sudo pacman -S libnotify.

ffcast

Senaryoları yazmak için bilgi ararken, birinin benimkine çok benzer bir fikri olduğunu keşfettim. Ffcast, aynı araçları (ffmpeg ve xwininfo) kullanan bir betiktir. Bundan bahsediyorum çünkü bazıları bu betiği kullanmayı daha uygun bulabilir.

Arch ve türevlerinde bir terminal açtım ve şunu çalıştırdım:

yaourt -S ffcast

Geri kalanı buradan indirebilirsiniz burada.

Bitirmek için…

HOME klasörünüze kaydedilen komut dosyalarını oluşturup kaydettikten sonra, ona yürütme izinleri vermeniz gerekir. Start_screencast ve finish_screencast'ın çağrıldığını varsayarak, bir terminalde aşağıdaki komutları çalıştırın:

chmod + x start_screencast
chmox + x terminate_screencast

Son olarak, yalnızca her komut dosyasını sizin için rahat olan 2 kısayola (kısayol) atamak kalır. Bu şekilde, seçilen tuş kombinasyonuna bastığınızda komut dosyaları çalışacaktır.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Michael Sp. dijo

    Linux'u tanıdığımdan beri, kendime bu yorumda detaylandırılan şeyin aynısını sordum. iddialı bir proje olurdu.

  2.   pmf dijo

    Eğitim bana iyi görünüyor, ama acemi kullanıcılar için kolay bir şeyi nasıl söylersiniz? Bana en iyi görünen KAzam, kullanımı kolay ve bence fazla tüketmiyor !!!!!! Şerefe

  3.   Hadi Linux kullanalım dijo

    Hepsi değil. Ayrıca, ekran video kaydı için (ihtiyacım olan her şeye sahip), istediğim formatlarla çalışan ve çok az kaynak tüketen iyi bir arayüz olmadığına gerçekten inanıyorum.

    Benim durumumda, terminal en iyi seçenektir. Herkes içinmiş gibi davranmıyorum ama öğrendiklerini paylaşmak güzel, değil mi?

    Şerefe! Paul.

  4.   Jorge Rocha dijo

    İşletim sistemini GNU / linux altında genişletmek istiyorsak, kullanıcılara terminalde bu tür şeyleri yapmalarını tavsiye etmemiz yanlıştır, insanlar kolay ve işlevsel bir şey ister.

    @hayalhanemersin

  5.   Whysoyjuan dijo

    Sunucu düzeyinde de sadece konsol kullanıyorum, grafik ortam yok ... bu en pratik ve her şeyi oradan yapıyorum (örneğin, sizin de söylediğiniz gibi yedeklemeleri otomatikleştirin ...), ancak sunucu olarak sahip olduğunuz bir makinede ... hehe..ffmpeg çok geçerli ama bence konsol sorunu hangi dağıtımlara bağlı olarak arka plana atılmalı.
    Linux dünyasında çok çeşitli dağıtımlarımız olduğundan ve konsol her durumda düzgün çalışacak kadar mükemmel olduğundan (neredeyse yanılmazdır ..), uygulamaları halk için geliştirmeye başlamalıyız, cila, kodlama ve grafik yönü ... bugün talep edilen şey budur.
    Oldukça arkaik ve terk edilmiş Linux projelerimiz var, hepimiz biliyoruz ki ... benim için iyi bir örnek, artık bir programı pendrive'a almanıza ve basitçe çift tıklama ve basit bir kurulum yapmanıza izin veren çalıştırılabilir bir dosya formatı olmamasıdır. Depolara (ve dolayısıyla ağa) gerek duymanın dışında .. APTonCD yok, bu da modası geçmiş .. bir standart, bir ".tux" veya Windows ".exe" benzeri bir şeye ihtiyacımız var. Alan sorunu için mi ? .. Windows'ta, Gimp yürütülebilir 72mb yer kaplar ve aynı Linux (.deb) için 4,2mb yer alır ... Bu neden? Pekala, Gimp programının kendisi, Windows'ta, programın kurulduğunda çalıştığından emin olmak için tüm kitaplıklarla birlikte gelir ... Linux'ta aynı bir şeye sahip olabilirdik, çalıştırılabilir daha fazla yer kaplar, boyut avantajını kaybederiz, ancak taşınabilirlikten (ve daha fazlası bugün cebimizde taşıdığımız o kadar büyük anılarla ... hemen hemen hepimiz 4gb sürücü taşısak 72mb'den 8mb taşımak ne fark eder?
    Bütün bunlar cilalanmalı ... sistem kararlı, harika bir desteğe ve sürücü uyumluluğuna sahip ... neden var olanı iyileştirmiyoruz? ... eğer birisi cesaretlendirilirse, yürütülebilir projeye başlarız hehe. !

  6.   Hidabe dijo

    Uhm ... pekala, konsolu seven insanlar onu sevmezler çünkü sevgili arkadaşım, onu seviyorlar çünkü onunla pek çok şey otomatikleştirilebilir, örneğin sunucu seviyesinde (durum böyle olmasa da).

  7.   Whysoyjuan dijo

    Dürüst olmak gerekirse, konsol çok kullanışlı ... ancak ffmpeg kullanan ve olası yeni Linux kullanıcıları için daha çekici ve yapıcı olan bazı GUI'li programlar var ... Hemen hemen tüm dağıtımların depolarında bulunan RecordMyDescktop'u öneririm.İşleyen birçok insan olduğunu biliyorum. konsol, ancak bu mümkün olduğunca bitmeli ... Linux, masaüstüne ve temelde bunu isteyen olası bir son kullanıcıya odaklanmalıdır, grafiksel bir arayüz ve mümkünse güzel ve pratik ... bu kadar zor mu? üstüne basılmamıza izin veremeyiz .. Linux muazzam bir potansiyele sahip ve onu sıkıştırmalıyız!
    Her şeye rağmen harika bir program! İyi gönderi ^^

  8.   Whysoyjuan dijo

    Gerçek şu ki, evet, öğrendiklerini paylaşmak harika ... Bu, gönderinin değersizleştirici anlamında bir eleştiri değil, neden daha fazla insanın Linux kullanmadığına dair bir eleştiri ... ne derlerse desinler, konsol indirgenmeli grafiksel olanaklara yol vermek için ikinci bir düzlem (bu, konsolla bir şeyler yapma olasılığının dışlandığı anlamına gelmez, ancak onu kim kullanmak isterse ve kullanmazsa, hayır, hayır ..)
    Günün sonunda, ne satan, çarpıcı olan bir işletim sistemi çalıştırmanın kolaylığıdır ... Linux dahili olarak durdurulamaz, ancak bu kullanım kolaylığına ve sezgisel arayüzlere eklersek ... kullanıcıları kazanırız ve bu Topluluğun gelişimine, farklı programlara, video oyun şirketlerinin desteğine ve dolayısıyla belirli donanımlara (örneğin grafik kartları ...), şu anda yalnızca Windows / Mac'te var olan özel yazılımların oluşturulmasına fayda sağlar ... Bilmiyorum, sanırım bu 15M planında ... hepsi çok güzel ama şimdi biraz rota değiştirme zamanı ... ve biraz diyorum!

    Pekala, Linux'taki standart yürütülebilir proje hala geçerli, eğer birisi onu okursa ve bizden işbirliğine başlamamızı isterse, işte benim e-postam, hehe'yi saklamıyorum (whysoyjuan@gmail.com)

    Selamlar ve umarım burada daha fazla yorum görmeyi umuyorum ... ister eleştiri ister övgü olsun, konuşmalıyız gerçek şu ki.

  9.   Hadi Linux kullanalım dijo

    İyi! İyi katkı.
    Sarıl! Paul.

  10.   Gerardo dijo

    Bu programın konusu ... dikkatli olun, bu konuda pek bilgili değilim!

    1.    hadi linux kullanalım dijo

      Genellikle videoları dönüştürmek için kullanılır. Bu durumda, örneğin masaüstünüzü kaydetmek ve bir video eğitimi yapmak için nasıl kullanılacağını gösteriyoruz.
      Sarıl! Paul.

  11.   tarribalis dijo

    Teşekkür ederim. Çözünürlükte, örneğin 1280X800, ffmpeg komutunun çalışması için X büyük harfle yazılmalıdır.