Alguém sugeriu que eu direcionasse uma cópia da tela não modificada do X para um arquivo e depois convertesse esse arquivo em um arquivo de vídeo de uso geral. Quais comandos eu usaria para fazer isso em um sistema Kubuntu? (Editar: ele disse algo sobre anexar uma porta de vídeo a um arquivo.) Se não for possível, qual é a minha melhor opção para uma gravação de tela de excelente qualidade que não dependa de hardware rápido?

Histórico: tentei usar o avconv com -f x11grab e alguns programas GUI. No entanto, não importa o que eu tente, o vídeo resultante tem artefatos / manchas ou está instável (quadros ausentes). Isso provavelmente se deve a restrições de CPU / memória.

Metas:

  • A qualidade do vídeo não deve ser visivelmente diferente de ver a sessão diretamente em uma tela, porque o objetivo é demonstrar uma inscrição.
  • O vídeo final deve estar em um formato comum que possa ser enviado aos usuários do Windows e usado na web. Acho que o H.264 MP4 deve funcionar.
  • A solução não deve presumir muito conhecimento prévio. Estou familiarizado com a linha de comando e os comandos básicos do Linux, mas ainda estou aprendendo Linux e não sei muito sobre codecs de vídeo.

O que já tentei:

  • Melhor comando até agora: ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi, então converta para mp4 com ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • A qualidade da imagem é ótima, mas no meu sistema de teste está atrasada em relação ao computador. Em um sistema de destino mais rápido, ele não atrasa, mas os quadros são obviamente pulados, tornando o vídeo não muito suave .
    • Ainda estou tentando descobrir como salvar a captura. arquivo avi para SHM para ver se isso ajuda.
  • Usando gravadores de GUI Istanbul e RecordMyDesktop
  • Comando simples: avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg usando avconv versão 0.8.3-4: 0.8.3-0ubuntu0.12.04.1
  • Adicionar -codec:copy (falha com: Requested output format "x11grab" is not a suitable output format)
  • Adicionar -same_quant (resulta em grande qualidade, mas é muito instável / faltam muitos quadros)
  • Adicionar -vpre lossless_ultrafast (falha com: Unrecognized option "vpre", Failed to set value "lossless_ultrafast" for option "vpre")
  • Adicionando vários valores de -qscale
  • Adicionando vários valores de -b
  • Adicionando -vcodec h264 (saídas repetidamente: Error while decoding stream #0:0, [h264 @ 0x8300980] no frame!)
    • Observação: h264 está listado em saída como DE h264 raw H.264 video format

Resposta

Se o seu HDD permitir, você pode tentar fazer desta forma:

Primeiro grave o arquivo não compactado:

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

aqui SZ é o tamanho da tela (por exemplo 1920×1080).

Depois disso, você pode compactá-lo a qualquer momento que quiser:

ffmpeg -i grab.avi grab.mkv 

Claro, você pode alterar a compactação, selecionar codec e assim sobre.

Comentários

  • Veja também: unix.stackexchange.com/a/120001/26227
  • ubuntu 18.04 não ‘ t funciona falha:: 0.0: Argumento inválido
  • @ user1325696, funciona muito bem. Por exemplo. ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi

Resposta

Tive sucesso com:

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

Pontos principais:

  • -qp 0: modo x264 sem perdas
  • -preset ultrarrápido: menor uso de CPU, tamanho grande
  • -pix_fmt yuv444p: o padrão, mas ffmpeg sugere yuv420p, que apresenta perdas

Dica: captura de tela e sobreposição de webcam com:

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

[editar 20180418] Atualização para Gnome Shell e 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() 

Comentários

  • como pode eu determino meu tamanho de tela?

Resposta

Esta é uma solução alternativa, e provavelmente não “quase perfeita” como pode depender da velocidade da rede ou de outros fatores que podem atrapalhar o fluxo de vídeo.

Use o VNC ou Teamviewer e conecte-se de seu laptop ou desktop à outra máquina. Se você tiver um laptop Windows ou OSX disponível, você Você provavelmente tem ferramentas que podem gravar isso, e eu acredito que o próprio teamviewer pode gravar uma sessão. É fácil de tentar e você pode decidir se a qualidade é boa o suficiente.

O Teamviewer tende a aumentar, mas não sei se isso acontece com as sessões gravadas também.

O VNC não compacta ou dimensiona e o monitor do seu laptop / desktop precisa de uma resolução maior do que a da outra máquina. A qualidade é boa. Talvez o visualizador VNC que você usa possa gravar. Estou no Ubuntu agora, e o visualizador padrão não pode fazer isso.

Gravação de tela para exibição para um público ou na web – existem ferramentas especiais para isso que podem capturar cliques, seguir e ampliar o mouse e tem outras opções para deixar mais claro o que você está fazendo.Eu sugiro que você dê uma olhada neles também. Google para “software de gravação de tela”.

Resposta

Você já tentou rfbroxy ?

Eu o uso para gravar sessões de tela X11.

Você pode usá-lo em um modo onde ele grava apenas uma imagem, se houver uma ALTERAÇÃO .

−-type=WHAT WHAT = tela é até padrão, de acordo com a página do manual.

Comentários

  • Isso ‘ é interessante. Como você faz isso?
  • @GunarGessner deve ser o comportamento padrão. Um método alternativo é reagir a eventos de mouse / keyborad. Isso pode ser ainda melhor se você tiver um relógio na tela e não quiser fazer uma imagem quando apenas o relógio mudar …

Resposta

Estou usando o Camtasia para gravar meu vídeo de jogo e vídeo online. Eu também usei o gravador de vídeo fraps antes, mas o fps cai durante a reprodução. Camtasia oferece um fps mais alto, mas o único problema é que toda vez que eu devo converter a saída .CAMREC para avi, como você pode ver em insira a descrição do link aqui insira a descrição do link aqui . O .camrec é o formato proprietário do camtasia e não pode ser reproduzido em nenhum reprodutor de terceiros, como Windows Media Player e vlc.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *