誰かが、変更されていないXディスプレイのコピーをファイルに送信し、その後そのファイルを汎用ビデオファイルに変換することを提案しました。 Kubuntuシステムでこれを行うには、どのコマンドを使用しますか? (編集:彼はファイルにディスプレイポートを接続することについて何かを述べました。)できない場合、高速ハードウェアに依存しない高品質の画面記録のための私の最良のオプションは何ですか?
Background: avconvを-f x11grabといくつかのGUIプログラムで使用してみました。ただし、何を試しても、結果のビデオにはアーティファクト/ぼやけがあるか、途切れ途切れ(フレームが欠落)になります。これはおそらくCPU /メモリの制約によるものです。
目標:
私がすでに試したこと:
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に変換します。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!
)avconv -formats
出力にDE h264 raw H.264 video format
としてリストされます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
もちろん、圧縮の変更、コーデックの選択なども可能です。
私は成功しました:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :1 \
-vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p \
video.mkv
キーポイント:
ヒント:キャプチャ画面と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()
これは回避策であり、ネットワーク速度やビデオストリームを妨げる可能性のあるその他の要因に依存する可能性があるため、「ほぼ完璧」ではない可能性があります。
VNCまたはTeamviewerを使用して、ラップトップまたはデスクトップから他のマシンに接続します。利用可能なWindowsまたはOSXラップトップがある場合、おそらくこれを記録できるツールがあり、teamviewerはセッション自体を記録できると思います。簡単に試すことができ、品質が十分かどうかを判断できます。
Teamviewerはスケーリングする傾向がありますが、これが記録されたセッションでも発生するかどうかはわかりません。
VNCは圧縮もスケーリングもせず、ラップトップ/デスクトップモニターは他のマシンよりも高い解像度を必要とします。品質は良いです。たぶん、あなたが使っているVNCビューアが録画できるでしょう。現在Ubuntuを使用していますが、標準のビューアではこれを行うことはできません。
オーディエンスまたはWebに表示するための画面記録-クリックをキャッチし、マウスを追跡して拡大することができる特別なツールがあり、他にあなたがしていることをより明確にするためのオプションがあります。これらもご覧になることをお勧めします。 「画面録画ソフトウェア」のGoogle。
Camtasiaを使用して、ゲームプレイビデオとオンラインビデオを録画しています。以前はフラップビデオレコーダーも使用していましたが、再生中にfpsが低下しました。 Camtasiaはより高いfpsを提供しますが、唯一の面倒な問題は、出力.CAMRECをaviに変換する必要があるたびに ここにリンクの説明を入力ここにリンクの説明を入力 。 .camrecはcamtasiaの独自フォーマットであり、Windows Media Playerやvlcなどのサードパーティプレーヤーでは再生できません。