誰かが、変更されていない X ディスプレイのコピーをファイルに送信し、その後そのファイルを汎用ビデオ ファイルに変換することを提案しました。Kubuntu システムでこれを行うには、どのようなコマンドを使用すればよいですか? (編集: ディスプレイ ポートをファイルに接続することについて何か言っていました。) 不可能な場合、高速ハードウェアに依存しない優れた品質の画面録画を行うための最善のオプションは何ですか?
背景:-f x11grab といくつかの GUI プログラムを指定して avconv を使用しようとしました。しかし、何を試しても、結果のビデオにはアーティファクトやぼやけが生じたり、途切れたり (フレームが欠落したり) します。これはおそらく 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
、その後 で 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.mpg
avconv バージョン 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
- 注: h264は
答え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 自体でセッションを記録できると思います。試すのは簡単で、品質が十分かどうかを判断できます。
Teamviewer はスケールする傾向がありますが、記録されたセッションでもこれが発生するかどうかはわかりません。
VNC は圧縮や拡大縮小を行わないため、ラップトップ/デスクトップ モニターは他のマシンよりも高い解像度が必要です。品質は良好です。おそらく、使用している VNC ビューアーで録画できるでしょう。私は現在 Ubuntu を使用していますが、標準のビューアーではこれができません。
視聴者や Web 上に表示するための画面録画 - クリックをキャッチしたり、マウスを追跡してズームインしたり、操作内容をより明確にするその他のオプションを備えた特別なツールがあります。これらも確認することをお勧めします。Google で「画面録画ソフトウェア」を検索してください。
答え4
私はCamtasiaを使ってゲームプレイ動画やオンライン動画を録画しています。以前はFrapsビデオレコーダーも使っていましたが、プレイ中にfpsが低下しました。Camtasiaはより高いfpsを提供しますが、唯一の厄介な問題は、出力.CAMRECをaviに変換する必要があることです。ここにリンクの説明を入力してくださいここにリンクの説明を入力してください.camrec は camtasia 独自の形式であり、Windows Media Player や vlc などのサードパーティ プレーヤーでは再生できません。