Alguien sugirió que dirigiera una copia de la pantalla X sin modificar a un archivo y luego convirtiera ese archivo en un archivo de video de propósito general. ¿Qué comandos usaría para hacer esto en un sistema Kubuntu? (Editar: dijo algo sobre conectar un puerto de pantalla a un archivo). Si no es posible, ¿cuál es mi mejor opción para una grabación de pantalla de excelente calidad que no dependa de un hardware rápido?
Antecedentes: Intenté usar avconv con -f x11grab y algunos programas GUI. Sin embargo, no importa lo que intente, el video resultante tiene artefactos / borrosidad o está entrecortado (faltan cuadros). Esto probablemente se deba a limitaciones de CPU / memoria.
Objetivos:
- La calidad del video no debe ser notablemente diferente de ver la sesión directamente en una pantalla, porque el propósito es demostrar una animación solicitud.
- El video final debe estar en un formato común que se pueda enviar a los usuarios de Windows y utilizar en la web. Creo que H.264 MP4 debería funcionar.
- La solución no debe presuponer muchos conocimientos previos. Estoy familiarizado con la línea de comandos y los comandos básicos de Linux, pero todavía estoy aprendiendo Linux y no sé mucho sobre códecs de video.
Lo que ya probé:
- El mejor comando hasta ahora:
ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi
, luego conviértalo a mp4 conffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4
.- La calidad de la imagen es excelente, pero en mi sistema de prueba se queda atrás en la computadora. En un sistema de destino más rápido, no se retrasa, pero obviamente se omiten los fotogramas, lo que hace que el video no sea muy suave .
- Todavía estoy tratando de averiguar cómo guardar la captura. avi a SHM para ver si eso ayuda.
- Uso de las grabadoras GUI de Istanbul y RecordMyDesktop
- Comando simple:
avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg
usando avconv versión 0.8.3-4: 0.8.3-0ubuntu0.12.04.1 - Agregar
-codec:copy
(falla con:Requested output format "x11grab" is not a suitable output format
) - Agregar
-same_quant
(da como resultado una gran calidad, pero es muy entrecortado / faltan muchos marcos) - Agregar
-vpre lossless_ultrafast
(falla con:Unrecognized option "vpre"
,Failed to set value "lossless_ultrafast" for option "vpre"
) - Agregar varios valores de
-qscale
- Agregar varios valores de
-b
- Agregar
-vcodec h264
(salidas repetidamente:Error while decoding stream #0:0
,[h264 @ 0x8300980] no frame!
)- Nota: h264 aparece en la lista en salida como
DE h264 raw H.264 video format
- Nota: h264 aparece en la lista en salida como
Respuesta
Si su HDD lo permite, puede intentar hacerlo de esta manera:
Primero escriba el archivo sin comprimir:
ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi
aquí SZ
es su tamaño de pantalla (p. ej. 1920 x 1080).
Después de eso, puede comprimirlo en cualquier momento que desee:
ffmpeg -i grab.avi grab.mkv
Por supuesto, puede cambiar la compresión, seleccionar el códec y así en.
Comentarios
Respuesta
He tenido éxito con:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \ -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \ video.mkv
Puntos clave:
- -qp 0: modo sin pérdida x264
- -preset ultrarrápido: uso de CPU más pequeño, tamaño grande
- -pix_fmt yuv444p: el valor predeterminado, pero ffmpeg sugiere yuv420p, que tiene pérdidas
Sugerencia: captura de pantalla y superposición de cámara web con:
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
[edit 20180418] Actualización para Gnome Shell y 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()
Comentarios
- ¿cómo se puede Yo determino mi tamaño de pantalla?
Respuesta
Esta es una solución alternativa, y probablemente no sea «casi perfecta» como puede depender de la velocidad de la red u otros factores que puedan dificultar la transmisión de video.
Use VNC o Teamviewer y conéctese desde su computadora portátil o computadora de escritorio a la otra máquina. Probablemente tengas herramientas que puedan grabar esto, y creo que teamviewer puede grabar una sesión por sí mismo. Es fácil de probar y luego puede decidir si la calidad es lo suficientemente buena.
Teamviewer tiende a escalar, pero no sé si esto también sucede con las sesiones grabadas.
VNC no se comprime ni se escala, y el monitor de su computadora portátil / de escritorio necesita una resolución más alta que la de la otra máquina. La calidad es buena. Quizás el visor VNC que usa pueda grabar. Estoy en Ubuntu ahora y el visor estándar no puede hacer esto.
Grabación de pantalla para mostrarla a una audiencia o en la web; existen herramientas especiales para esto que pueden captar clics, seguir y acercar el mouse, y tiene otras opciones para dejar más claro lo que está haciendo.Te sugiero que eches un vistazo a esos también. Google para «software de grabación de pantalla».
Respuesta
¿Has probado rfbroxy ?
Lo uso para grabar sesiones de pantalla X11.
Puede usarlo en un modo en el que solo registra una imagen, si hay un CAMBIO .
−-type=WHAT
WHAT = pantalla es incluso predeterminado, de acuerdo con la página de manual.
Comentarios
- Eso ‘ s interesante. ¿Cómo se hace eso?
- @GunarGessner debería ser el comportamiento predeterminado. Un método alternativo es reaccionar ante eventos de mouse / teclado. Esto puede ser incluso mejor si tiene un reloj en la pantalla y no desea hacer una imagen cuando solo cambia ese reloj …
Responder
Estoy usando Camtasia para grabar mi video de juego y video en línea. También usé la grabadora de video fraps antes, pero los fps disminuyen durante la reproducción. Camtasia ofrece un fps más alto, pero el único problema es que cada vez que debo convertir la salida .CAMREC a avi, como puede ver en ingrese la descripción del enlace aquí ingrese la descripción del enlace aquí . El .camrec es el formato propietario de camtasia y no se puede reproducir en reproductores de terceros como Windows Media Player y vlc.
ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi