거의 완벽한 화면 녹화 품질을 얻는 방법은 무엇입니까?

거의 완벽한 화면 녹화 품질을 얻는 방법은 무엇입니까?

누군가 수정되지 않은 X 디스플레이의 복사본을 파일로 보낸 다음 해당 파일을 범용 비디오 파일로 변환할 것을 제안했습니다. 쿠분투 시스템에서 이 작업을 수행하려면 어떤 명령을 사용해야 합니까? (편집: 그는 디스플레이 포트를 파일에 연결하는 것에 대해 말했습니다.) 가능하지 않다면 빠른 하드웨어에 의존하지 않는 우수한 품질의 화면 녹화를 위한 최선의 옵션은 무엇입니까?

배경:-f x11grab 및 일부 GUI 프로그램과 함께 avconv를 사용해 보았습니다. 그러나 무엇을 시도하더라도 결과 비디오에는 아티팩트/흐림이 있거나 고르지 않습니다(프레임 누락). 이는 아마도 CPU/메모리 제약 때문일 수 있습니다.

목표:

  • 비디오 품질은 애니메이션 애플리케이션을 시연하는 것이 목적이므로 세션을 화면에서 직접 보는 것과 눈에 띄게 다르지 않아야 합니다.
  • 최종 비디오는 Windows 사용자에게 전송되고 웹에서 사용할 수 있는 일반적인 형식이어야 합니다. 나는 H.264 MP4가 작동해야 한다고 생각합니다.
  • 해결책은 많은 사전 지식을 가정해서는 안 됩니다. 명령줄과 기본 Linux 명령에는 익숙하지만, 아직 Linux를 배우고 있는 중이어서 비디오 코덱에 대해서는 잘 모릅니다.

내가 이미 시도한 것:

  • 지금까지 최고의 명령은 다음과 같습니다. ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi그런 다음 를 사용하여 mp4로 변환합니다 ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • 화질은 훌륭하지만 테스트 시스템에서는 컴퓨터보다 속도가 느립니다. 더 빠른 대상 시스템에서는 지연되지 않지만 프레임이 분명히 건너뛰어 비디오가 그다지 좋지 않게 됩니다.매끄러운.
    • 나는 여전히 Grab.avi 파일을 SHM에 저장하여 도움이 되는지 알아보는 중입니다.
  • Istanbul 및 RecordMyDesktop GUI 레코더 사용
  • 간단한 명령: avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpgavconv 버전 0.8.3-4:0.8.3-0ubuntu0.12.04.1 사용
  • 추가 -codec:copy중(실패: Requested output format 'x11grab' is not a suitable output format)
  • 추가 -same_quant(품질은 우수하지만 매우 고르지 못하거나 많은 프레임이 누락됨)
  • 추가 -vpre lossless_ultrafast중(실패: Unrecognized option 'vpre', Failed to set value 'lossless_ultrafast' for option 'vpre')
  • 다양한 가치를 더하는-qscale
  • 다양한 가치를 더하는-b
  • 추가 중 -vcodec h264(반복적으로 출력: Error while decoding stream #0:0, [h264 @ 0x8300980] no frame!)
    • 참고: h264는 avconv -formats출력에 다음과 같이 나열됩니다.DE h264 raw H.264 video format

답변1

HDD가 허용하는 경우 다음과 같이 시도해 볼 수 있습니다.

먼저 압축되지 않은 파일을 작성하십시오.

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

SZ디스플레이 크기는 다음과 같습니다(예: 1920x1080).

그 후에는 언제든지 원하는 대로 압축할 수 있습니다.

ffmpeg -i grab.avi grab.mkv

물론 압축을 변경하고 코덱을 선택하는 등의 작업도 가능합니다.

답변2

나는 다음과 같이 성공했습니다.

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

키 포인트:

  • -qp 0: x264 무손실 모드
  • -미리 설정된 초고속: 가장 작은 CPU 사용량, 큰 크기
  • -pix_fmt yuv444p: 기본값이지만 ffmpeg는 손실이 있는 yuv420p를 제안합니다.

힌트: 다음을 사용하여 화면 및 웹캠 오버레이를 캡처하세요.

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 편집] Gnome Shell 및 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()

답변3

이는 해결 방법이며 네트워크 속도나 비디오 스트림을 방해할 수 있는 기타 요인에 따라 달라질 수 있으므로 "거의 완벽"하지 않을 수 있습니다.

VNC 또는 Teamviewer를 사용하여 노트북이나 데스크탑에서 다른 컴퓨터에 연결하세요. Windows 또는 OSX 노트북을 사용할 수 있다면 이를 기록할 수 있는 도구가 있을 것이며, 팀뷰어가 세션 자체를 기록할 수 있다고 생각합니다. 시도해 보기 쉬우며 품질이 충분히 좋은지 결정할 수 있습니다.

Teamviewer는 확장되는 경향이 있지만 녹화된 세션에서도 이런 일이 발생하는지 모르겠습니다.

VNC는 압축하거나 확장하지 않으며 노트북/데스크톱 모니터는 다른 컴퓨터보다 더 높은 해상도가 필요합니다. 품질이 좋습니다. 아마도 당신이 사용하는 VNC 뷰어가 녹화할 수 있을 것입니다. 저는 지금 Ubuntu를 사용하고 있으며 표준 뷰어에서는 이 작업을 수행할 수 없습니다.

청중이나 웹에 표시하기 위한 화면 녹화 - 클릭을 포착하고, 마우스로 따라가고 확대할 수 있는 특별한 도구가 있으며, 수행 중인 작업을 보다 명확하게 하는 기타 옵션이 있습니다. 나는 당신이 그것들도 살펴 보는 것이 좋습니다. "화면 녹화 소프트웨어"에 대한 Google.

답변4

저는 Camtasia를 사용하여 게임 플레이 영상과 온라인 영상을 녹화하고 있습니다. 이전에 Fraps 비디오 레코더도 사용했지만 재생 중에 fps가 떨어졌습니다. Camtasia는 더 높은 fps를 제공하지만 유일하게 문제가 되는 문제는 다음에서 볼 수 있듯이 출력 .CAMREC를 avi로 변환해야 한다는 것입니다.여기에 링크 설명을 입력하세요여기에 링크 설명을 입력하세요. .camrec은 camtasia의 독점 형식이며 Windows Media Player 및 vlc와 같은 타사 플레이어에서는 재생할 수 없습니다.

관련 정보