web-dev-qa-db-ja.com

ほぼ完璧な画面記録品質を得るには?

誰かが、変更されていないXディスプレイのコピーをファイルに送信し、その後そのファイルを汎用ビデオファイルに変換することを提案しました。 Kubuntuシステムでこれを行うには、どのコマンドを使用しますか? (編集:彼はファイルにディスプレイポートを接続することについて何かを述べました。)できない場合、高速ハードウェアに依存しない高品質の画面記録のための私の最良のオプションは何ですか?

Background: avconvを-f x11grabといくつかのGUIプログラムで使用してみました。ただし、何を試しても、結果のビデオにはアーティファクト/ぼやけがあるか、途切れ途切れ(フレームが欠落)になります。これはおそらくCPU /メモリの制約によるものです。

目標:

  • 動画の品質は、アニメーション化されたアプリケーションのデモを行うことを目的としているため、セッションを画面で直接見た場合と大きく異なることはありません。
  • 最終的なビデオは、Windowsユーザーに送信してWebで使用できる共通の形式にする必要があります。 H.264 MP4は動作するはずです。
  • 解決策は、多くの事前知識を前提とすべきではありません。コマンドラインと基本的なLinuxコマンドに精通していますが、まだLinuxを学習しており、ビデオコーデックについてはあまり知りません。

私がすでに試したこと:

  • これまでの最高のコマンド:ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi、次にffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4。を使用してmp4に変換します。
    • 画質は素晴らしいですが、私のテストシステムではコンピューターより遅れています。より高速なターゲットシステムでは遅れはありませんが、フレームが明らかにスキップされるため、ビデオはそれほどスムーズではありません。
    • 私はまだgrab.aviファイルをSHMに保存して、それが役立つかどうかを確認する方法を理解しようとしています。
  • イスタンブールとRecordMyDesktop GUIレコーダーの使用
  • 単純なコマンド:avconvバージョン0.8.3-4:0.8.3-0ubuntu0.12.04.1を使用したavconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg
  • -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としてリストされます
28
Oleg

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

もちろん、圧縮の変更、コーデックの選択なども可能です。

25
Eddy_Em

私は成功しました:

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を提案します

ヒント:キャプチャ画面とWebカメラオーバーレイ:

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()
7
hdante

これは回避策であり、ネットワーク速度やビデオストリームを妨げる可能性のあるその他の要因に依存する可能性があるため、「ほぼ完璧」ではない可能性があります。

VNCまたはTeamviewerを使用して、ラップトップまたはデスクトップから他のマシンに接続します。利用可能なWindowsまたはOSXラップトップがある場合、おそらくこれを記録できるツールがあり、teamviewerはセッション自体を記録できると思います。簡単に試すことができ、品質が十分かどうかを判断できます。

Teamviewerはスケーリングする傾向がありますが、これが記録されたセッションでも発生するかどうかはわかりません。

VNCは圧縮もスケーリングもせず、ラップトップ/デスクトップモニターは他のマシンよりも高い解像度を必要とします。品質は良いです。たぶん、あなたが使っているVNCビューアが録画できるでしょう。現在Ubuntuを使用していますが、標準のビューアではこれを行うことはできません。

オーディエンスまたはWebに表示するための画面記録-クリックをキャッチし、マウスを追跡して拡大することができる特別なツールがあり、他にあなたがしていることをより明確にするためのオプションがあります。これらもご覧になることをお勧めします。 「画面録画ソフトウェア」のGoogle。

1
SPRBRN

rfbroxy を試しましたか?

X11スクリーンセッションの記録に使用します。

変更がある場合は、写真のみを記録するモードで使用できます。

1
Nils

Camtasiaを使用して、ゲームプレイビデオとオンラインビデオを録画しています。以前はフラップビデオレコーダーも使用していましたが、再生中にfpsが低下しました。 Camtasiaはより高いfpsを提供しますが、唯一の面倒な問題は、出力.CAMRECをaviに変換する必要があるたびに ここにリンクの説明を入力ここにリンクの説明を入力 。 .camrecはcamtasiaの独自フォーマットであり、Windows Media Playerやvlcなどのサードパーティプレーヤーでは再生できません。

0