Bagaimana mendapatkan kualitas perekaman layar yang nyaris sempurna?

27

Seseorang menyarankan saya mengarahkan salinan tampilan X yang tidak dimodifikasi ke file dan kemudian mengonversi file itu ke file video tujuan umum. Perintah apa yang akan saya gunakan untuk melakukan ini pada sistem Kubuntu? (Sunting: Dia mengatakan sesuatu tentang melampirkan port tampilan ke file.) Jika tidak memungkinkan, apa pilihan terbaik saya untuk perekaman layar kualitas luar biasa yang tidak bergantung pada perangkat keras yang cepat?

Latar Belakang: Saya mencoba menggunakan avconv dengan -f x11grab dan beberapa program GUI. Namun, apa pun yang saya coba, video yang dihasilkan memiliki artefak / kabur atau berombak (frame yang hilang). Ini mungkin karena kendala CPU / memori.

Tujuan:

  • Kualitas video tidak boleh jauh berbeda dari melihat sesi secara langsung di layar, karena tujuannya adalah untuk menunjukkan aplikasi animasi.
  • Video akhir harus dalam format umum yang dapat dikirim ke pengguna Windows dan digunakan di web. Saya pikir H.264 MP4 harus bekerja.
  • Solusinya seharusnya tidak menganggap banyak pengetahuan sebelumnya. Saya akrab dengan baris perintah dan perintah-perintah dasar Linux, tetapi saya masih belajar Linux dan tidak tahu banyak tentang codec video.

Apa yang sudah saya coba:

  • Perintah terbaik sejauh ini ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi:, lalu konversikan ke mp4 dengan ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • Kualitas gambarnya bagus, tetapi pada sistem pengujian saya ia tertinggal komputer. Pada sistem target yang lebih cepat itu tidak ketinggalan, tetapi frame jelas dilewati, membuat video tidak terlalu mulus .
    • Saya masih mencoba mencari cara bagaimana menyimpan file grab.avi ke SHM untuk melihat apakah itu membantu.
  • Menggunakan Istanbul dan perekam GUI RecordMyDesktop
  • Perintah sederhana: avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpgmenggunakan avconv versi 0.8.3-4: 0.8.3-0ubuntu0.12.04.1
  • Menambahkan -codec:copy(gagal dengan: Requested output format 'x11grab' is not a suitable output format)
  • Menambahkan -same_quant(menghasilkan kualitas yang hebat, tetapi sangat berombak / hilang banyak frame)
  • Menambahkan -vpre lossless_ultrafast(gagal dengan: Unrecognized option 'vpre', Failed to set value 'lossless_ultrafast' for option 'vpre')
  • Menambahkan berbagai nilai -qscale
  • Menambahkan berbagai nilai -b
  • Menambahkan -vcodec h264(output berulang kali: Error while decoding stream #0:0, [h264 @ 0x8300980] no frame!)
    • Catatan: h264 terdaftar dalam avconv -formatsoutput sebagaiDE h264 raw H.264 video format
Oleg
sumber

Jawaban:

24

Jika HDD Anda memungkinkan, Anda dapat mencoba melakukannya dengan cara ini:

Pertama-tama tulis file yang tidak dikompresi:

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

di sini SZadalah ukuran tampilan Anda (mis. 1920x1080).

Setelah itu Anda dapat mengompresnya kapan saja Anda inginkan:

ffmpeg -i grab.avi grab.mkv

Tentu saja, Anda dapat mengubah kompresi, pilih codec dan sebagainya.

Eddy_Em
sumber
1
Lihat juga: unix.stackexchange.com/a/120001/26227
Dave Jarvis
6

Saya sudah sukses dengan:

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

Poin-poin penting:

  • -qp 0: mode lossless x264
  • -reset ultrafast: penggunaan cpu terkecil, ukuran besar
  • -pix_fmt yuv444p: default, tetapi ffmpeg menyarankan yuv420p, yang lossy

Petunjuk: ambil tangkapan layar dan webcam dengan:

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

[sunting 20180418] Pembaruan untuk Gnome Shell dan Wayland:

#!/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()
hdante
sumber
1

Sudahkah Anda mencoba rfbroxy ?

Saya menggunakannya untuk merekam sesi-X11 layar.

Anda dapat menggunakannya dalam mode di mana ia hanya merekam gambar, jika ada PERUBAHAN.

Nils
sumber
1

Ini adalah solusi, dan mungkin tidak "hampir sempurna" karena mungkin tergantung pada kecepatan jaringan atau faktor lain yang dapat menghambat aliran video.

Gunakan VNC atau Teamviewer dan hubungkan dari laptop atau desktop Anda ke mesin lain. Jika Anda memiliki laptop Windows atau OSX, Anda mungkin memiliki alat yang dapat merekam ini, dan saya percaya teamviewer dapat merekam sesi itu sendiri. Sangat mudah untuk dicoba, dan Anda kemudian dapat memutuskan apakah kualitasnya cukup baik.

Anggota tim cenderung untuk mengukur, tetapi saya tidak tahu apakah ini terjadi dengan sesi yang direkam juga.

VNC tidak kompres atau berskala, dan monitor laptop / desktop Anda membutuhkan resolusi yang lebih tinggi daripada komputer lain. Kualitasnya bagus. Mungkin penampil VNC yang Anda gunakan dapat merekam. Saya di Ubuntu sekarang, dan penampil standar tidak dapat melakukan ini.

Rekaman layar untuk ditampilkan kepada audiens atau di web - ada alat khusus untuk ini yang dapat menangkap klik, mengikuti dan memperbesar mouse, dan memiliki opsi lain untuk memperjelas apa yang Anda lakukan. Saya sarankan Anda juga melihatnya. Google untuk "perangkat lunak perekaman layar".

SPRBRN
sumber
0

Saya menggunakan Camtasia untuk merekam video gameplay dan video online saya. Saya juga menggunakan perekam video fraps sebelumnya tetapi fps jatuh saat diputar. Camtasia memberikan fps yang lebih tinggi tetapi satu-satunya masalah yang merepotkan adalah setiap kali saya harus mengonversi output .CAMREC ke avi seperti yang Anda lihat di masukkan uraian tautan di sini masukkan uraian tautan di sini . .Camrec adalah format eksklusif camtasia dan tidak dapat dimainkan pada pemutar pihak ketiga seperti Windows Media Player dan vlc.

Belzonsci Belzonsci
sumber