誰かが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!
)avconv -formats
注:h264は出力に次のようにリストされています。DE h264 raw H.264 video format
答え1
ハードドライブで許可している場合は、次のことを試すことができます。
まず、圧縮されていないファイルを作成します。
ffmpeg -f x11grab -s SZ -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi
これはSZ
ディスプレイサイズです(例:1920×1080)。
後でいつでも圧縮できます。
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を使用していますが、標準ビューアではこれを行うことはできません。
視聴者やWebに表示するための画面録画 - クリックをキャプチャし、マウスオーバーに沿って拡大/縮小する専用のツールがあり、実行中の作業のより明確な画像を提供するその他のオプションがあります。それらも確認してみることをお勧めします。 Google「スクリーン録画ソフトウェア」。
答え4
私はCamtasiaを使ってゲームビデオとオンラインビデオを録画しています。以前はFrapsビデオレコーダーを使用したことがありますが、再生中にfpsが低下しました。 Camtasiaはより高いfpsを提供しますが、唯一の問題は、見てわかるように、出力.CAMRECをaviに変換する必要があるたびにあることです。ここにリンクの説明を入力してくださいここにリンクの説明を入力してください。 .camrec は camtasia 独自の形式であり、Windows Media Player や vlc などのサードパーティのプレーヤーでは再生できません。