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

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

目標:

  • 動画の品質は、アニメーションをデモンストレーションすることを目的としているため、画面上で直接セッションを見る場合と著しく異なるものであってはなりません。応用。
  • 最終的なビデオは、Windowsユーザーに送信してWebで使用できる一般的な形式である必要があります。 H.264MP4が動作するはずだと思います。
  • ソリューションは、多くの事前知識を前提とすべきではありません。私はコマンドラインと基本的な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に変換します。
    • 画質は素晴らしいですが、私のテストシステムではコンピューターに遅れをとっています。より高速なターゲットシステムでは、ラグは発生しませんが、フレームが明らかにスキップされるため、ビデオがあまりスムーズになりません。
    • グラブを保存する方法を模索しています。 aviファイルをSHMに送信して、それが役立つかどうかを確認します。
  • イスタンブールとRecordMyDesktopGUIレコーダーの使用
  • 簡単なコマンド: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がリストされていますは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はディスプレイサイズです(例: 1920×1080)。

その後、いつでも圧縮できます。

ffmpeg -i grab.avi grab.mkv 

もちろん、圧縮を変更したり、コーデックを選択したりできます。オン。

コメント

  • 関連項目: unix.stackexchange.com/a/120001/26227
  • ubuntu18.04は'動作に失敗します:: 0.0:引数が無効です
  • @ user1325696、かなり正常に動作します。例えば。 ffmpeg -f x11grab -s 2560x1080 -r 30 -i :0.0 -qscale 0 -vcodec huffyuv grab.avi

回答

成功したのは次のとおりです。

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

[edit 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 for “screenrecordingsoftware”。

回答

を試しましたかrfbroxy

X11-screen-sessionsを記録するために使用します。

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

−-type=WHAT WHAT = screen マンページによると、はデフォルトです。

コメント

  • その'おもしろい。どのようにそれを行いますか?
  • @GunarGessnerがデフォルトの動作である必要があります。別の方法は、マウス/キーボードイベントに反応することです。これは、画面に時計があり、その時計だけが変わったときに写真を撮りたくない場合は、さらに便利です…

回答

Camtasiaを使用してゲームプレイビデオとオンラインビデオを録画しています。以前はフラップビデオレコーダーも使用していましたが、再生中にfpsが低下します。 Camtasiaはより高いfpsを提供しますが、唯一の厄介な問題は、ここにリンクの説明を入力

ここにリンクの説明を入力してください。 .camrecは、camtasiaの独自の形式であり、Windows MediaPlayerやvlcなどのサードパーティプレーヤーでは再生できません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です