Mükemmel ekran kalitesine nasıl yaklaşılır?


27

Birisi, değiştirilmemiş X ekranının bir kopyasını bir dosyaya yönlendirmemi ve daha sonra bu dosyayı genel amaçlı bir video dosyasına dönüştürmemi önerdi. Kubuntu sisteminde bunu yapmak için hangi komutları kullanırdım? (Düzenleme: Bir görüntü bağlantı noktasını bir dosyaya eklemek hakkında bir şeyler söyledi.) Mümkün değilse, hızlı donanıma bağlı olmayan mükemmel kalitede ekran kaydı için en iyi seçeneğim nedir?

Amaç: -f x11grab ve bazı GUI programları ile avconv kullanmayı denedim. Ancak ne denersem deneyeyim, ortaya çıkan videoda yapay veya bulanık görüntü var veya dalgalı (çerçevesiz). Bu muhtemelen CPU / bellek kısıtlamalarından kaynaklanmaktadır.

Hedefleri:

  • Video kalitesi, oturumu doğrudan ekranda görmekten belirgin derecede farklı olmamalıdır, çünkü amaç animasyonlu bir uygulama göstermektir.
  • Son video, Windows kullanıcılarına gönderilebilecek ve web üzerinde kullanılabilecek ortak bir formatta olmalıdır. Ben H.264 MP4 çalışması gerektiğini düşünüyorum.
  • Çözüm çok fazla ön bilgiyi varsaymamalıdır. Komut satırı ve temel Linux komutlarını biliyorum ama hala Linux öğreniyorum ve video kodekleri hakkında fazla bir şey bilmiyorum.

Zaten denedim:

  • Şimdiye kadarki en iyi komut:, ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.aviardından mp4 ile dönüştürün ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • Görüntü kalitesi harika, ancak test sistemimde bilgisayarı kapatıyor. Daha hızlı bir hedef sistemde gecikme olmaz, ancak kareler açıkça atlanır ve videonun çok pürüzsüz olmamasına neden olur .
    • Hala bunun yararlı olup olmadığını görmek için grab.avi dosyasını SHM'ye nasıl kaydedeceğimi bulmaya çalışıyorum.
  • İstanbul ve RecordMyDesktop GUI kaydedicilerini kullanma
  • Basit komut: avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpgavconv versiyonunu kullanarak 0.8.3-4: 0.8.3-0ubuntu0.12.04.1
  • Ekleme -codec:copy(başarısız: Requested output format 'x11grab' is not a suitable output format)
  • Ekleme -same_quant(yüksek kalitede sonuçlanır, ancak çok dalgalı / çok sayıda kare vardır)
  • Ekleme -vpre lossless_ultrafast(başarısız: Unrecognized option 'vpre', Failed to set value 'lossless_ultrafast' for option 'vpre')
  • Çeşitli değerler ekleme -qscale
  • Çeşitli değerler ekleme -b
  • Ekleme -vcodec h264(art arda çıkışlar: Error while decoding stream #0:0, [h264 @ 0x8300980] no frame!)
    • Not: h264 avconv -formatsçıktı olarak listelenmiştir.DE h264 raw H.264 video format

Yanıtlar:


24

HDD’niz izin veriyorsa, bu şekilde yapmayı deneyebilirsiniz:

Önce sıkıştırılmamış bir dosya yazın:

ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi

işte SZekran boyutunuz (ör. 1920x1080).

Bundan sonra istediğiniz zaman sıkıştırabilirsiniz:

ffmpeg -i grab.avi grab.mkv

Tabii ki, sıkıştırma değiştirebilir, codec bileşeni vb. Seçebilirsiniz.



6

Ben başardım:

ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \
       -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \
       video.mkv

Anahtar noktaları:

  • -qp 0: x264 kayıpsız mod
  • -pretet ultrafast: en küçük işlemci kullanımı, büyük boy
  • -pix_fmt yuv444p: varsayılan, ancak ffmpeg, kayıplı olan yuv420p'yi önerir.

İpucu: ekran yakalama ve web kamerası kaplaması:

ffmpeg -f x11grab -thread_queue_size 64 -video_size 1920x1080 -framerate 30 -i :1 \
       -f v4l2 -thread_queue_size 64 -video_size 320x180 -framerate 30 -i /dev/video0 \
       -filter_complex 'overlay=main_w-overlay_w:main_h-overlay_h:format=yuv444' \
       -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \
       video.mkv

https://trac.ffmpeg.org/wiki/Capture/Desktop

[20180418 değiştir] Gnome Shell ve Wayland Güncellemesi:

#!/usr/bin/env python3
from dbus import SessionBus, Interface
from os import getcwd, path
from sys import argv

BUS_NAME = 'org.gnome.Shell.Screencast'
PATH_NAME = '/org/gnome/Shell/Screencast'
INTERFACE_NAME = BUS_NAME
PIPELINE='x264enc pass=qual quantizer=0 speed-preset=ultrafast ! queue ! matroskamux'

if path.isabs(argv[1]):
    name = argv[1]
else:
    name = path.join(getcwd(), argv[1])

bus = SessionBus()
screen_cast = bus.get_object(BUS_NAME, PATH_NAME)
screen_cast = Interface(screen_cast, INTERFACE_NAME)

ret, name = screen_cast.Screencast(name, {'pipeline': PIPELINE})

if not ret:
    print('Error starting screencast.')
    raise SystemExit(1)

try:
    i = input()
except (EOFError, KeyboardInterrupt):
    pass
finally:
    screen_cast.StopScreencast()

1

RFbroxy denediniz mi?

X11 ekran oturumlarını kaydetmek için kullanıyorum.

Bir DEĞİŞİM varsa, yalnızca resim kaydettiği bir modda kullanabilirsiniz.


1

Bu, geçici bir çözümdür ve muhtemelen ağ hızına veya video akışını engelleyebilecek diğer faktörlere bağlı olabileceğinden "mükemmel" değildir.

VNC veya Teamviewer kullanın ve dizüstü bilgisayarınızdan veya masaüstünüzden diğer makineye bağlanın. Kullanılabilir bir Windows veya OSX dizüstü bilgisayarınız varsa, muhtemelen bunu kaydedebilecek araçlara sahipsiniz ve ekip izleyicisinin bir oturumu kendisi kaydedebileceğine inanıyorum. Denemesi kolaydır ve kalitenin yeterince iyi olup olmadığına karar verebilirsiniz.

Teamviewer ölçeklendirme eğilimindedir, ancak bunun kaydedilen seanslarda da olup olmadığını bilmiyorum.

VNC sıkıştırmıyor veya ölçeklendirmiyor ve dizüstü / masaüstü ekranınızın diğer makineye göre daha yüksek bir çözünürlüğe ihtiyacı var. Kalitesi iyi. Belki kullandığınız VNC görüntüleyicisi kaydedebilir. Şimdi Ubuntu'dayım ve standart görüntüleyici bunu yapamıyor.

Bir hedef kitleye veya web'de görüntülemek için ekran kaydı; bunun için tıklamaları yakalayabilen, fareyi takip edebilen ve yakınlaştırabilen ve ne yaptığınızı daha net hale getirmek için başka seçeneklere sahip özel araçlar vardır. Onlara da bir göz atmanı öneririm. "Ekran kayıt yazılımı" için Google.


0

Oyun videomu ve çevrimiçi videomu kaydetmek için Camtasia kullanıyorum. Daha önce fraps video kayıt cihazını da kullanmıştım ancak oyun sırasında fps düştü. Camtasia daha yüksek bir fps veriyor, ancak tek sıkıntılı mesele şu ki, .CAMREC'i avi'ye dönüştürmek zorunda olduğum her seferde, bağlantı açıklamasını buraya girerek bağlantı tanımını buraya girin . .Camrec, camtasia'nın tescilli formatıdır ve Windows Media Player ve vlc gibi üçüncü taraf oynatıcılarda oynatılamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.