web-dev-qa-db-ja.com

Gnome 3.10 ScreenCast + Archのオーディオ

内蔵のスクリーンレコーダー(Ctrl+Alt+Shift+R)。 this post(およびインターネット上で見つけることができる他の同様の解決策)によると、私はgconf設定を適用しようとしました

gsettings set org.gnome.Shell.recorder pipeline "queue ! videorate ! vp8enc quality=10 speed=2 ! mux. pulsesrc ! audio/x-raw-int ! queue ! audioconvert ! vorbisenc ! mux. webmmux name=mux"

しかし、次のエラーが発生します。

No such schema 'org.gnome.Shell.recorder'

dconf-editorでブラウジングすると、org.gnome.Shell.recorderが実際には存在せず、類似したものが見つかりませんでした...内部オーディオ(マイクではない)を含むgnome Shell 3.10でデスクトップを録音するにはどうすればよいですか?

EDIT:また、記録中にマウスカーソルを含めたくありません。

5
lviggiani

そのキー/スキーマはgnome-Shell ≥ 3.10で削除されたため、インターネットで見つけたソリューションは機能しなくなりました。
Ray Strode、gnome dev1

Gnome-Shell 3.10以降でこれを行う方法があるかどうかを数人に尋ねられましたが、良い答えがありませんでした。 g-s-dが開始を処理するようになり、org.gnome.Shell.recorderスキーマがなくなったため、複雑になっています。

そこでのレイの提案(そのgjsコマンドへのショートカットの割り当て)は非常にクールですが、彼の1つのライナーにはいくつかのjsのものがありません。動作させるには、%Tthreads=%Tを数字(例:2)に置き換える必要がありました。また、結果の.webmファイル名にはタイムスタンプがないため、名前を変更しないと、後続の実行で既存のファイル名が上書きされることに注意してください。最後に、XDG_VIDEOS_DIR~/.config/user-dirs.dirsで定義されていることを確認してください。定義されていない場合、コマンドは機能しません(cannot open output fileでエラーが発生します)。
とにかく、質問に戻りますが、スクリーンキャストパラメータはgnome-Shell( Shell-recorder.c )にハードコードされています。例:

#define DEFAULT_PIPELINE "vp9enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux"

または

Shell_recorder_init (ShellRecorder *recorder)
{
....
recorder->draw_cursor = TRUE;

私が知る限り、それらを変更する唯一の方法は、次のような拡張機能を使用することです。

EasyScreenCast

(ソースコード ここ )これにより、すべての設定(draw-cursorを含む)をカスタマイズできます。正常に動作します。gnome-Shellバージョンを追加するだけで済みます。例: 3.16.1-からmetadata.jsonおよびこのカスタムgstreamerパイプライン:

vp8enc  min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000  threads=2 ! queue ! mux. pulsesrc ! queue !  audioconvert ! vorbisenc ! queue ! mux. webmmux name=mux

Tweak-tool> Extensions> Easyscreencast> Screencast options経由:

enter image description here


それはさておき、スクリーンキャスト+内部オーディオへの簡単な方法はコマンドラインを使用することです。必要なのは、録音用の入力ソースをpacmd(cli)またはpavucontrol(gui)で指定し、gst-launchを使用して録音することだけです。したがって、最初に.monitorで終わる入力ソース名を取得します(サウンドカードからオーディオを録音できます)。

pacmd list-sources | sed -n 's/name: <\(.*\.monitor\)>/\1/p'
    alsa_output.pci-0000_00_1b.0.analog-stereo.monitor

次に実行します:

pacmd set-default-source "alsa_output.pci-0000_00_1b.0.analog-stereo.monitor"
gst-launch-1.0 ximagesrc ! videoconvert ! queue ! videorate ! vp8enc  min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000  threads=2 ! queue ! mux. pulsesrc ! queue !  audioconvert ! vorbisenc ! queue ! mux. webmmux name=mux ! filesink location=screencast.webm

録音を停止するには、端末に戻ってを押します Ctrl+C


1: ソース

6
don_crissti

Don_crisstiの回答に基づいて、このタスクを自動化するためのbashスクリプトを作成しました。

スクリプトは次のとおりです。

#!/bin/bash

if [ -z $1 ]; then
    echo "usage: screencast <outfile>"
    exit 1
fi

fname=$1
audio=$(pacmd list-sources | sed -n 's/\s*name: <\(.*\.monitor\)>/\1/p')

pacmd set-default-source "$audio"

echo "Screencast started, to stop it come back to terminal and hit ctrl+c..."

gst-launch-1.0 ximagesrc \
    ! videoconvert \
    ! queue \
    ! videorate \
    ! vp8enc  min_quantizer=10 max_quantizer=10 cpu-used=2 deadline=1000000  threads=2 \
    ! queue \
    ! mux. pulsesrc \
    ! queue \
    !  audioconvert \
    ! vorbisenc \
    ! queue \
    ! mux. webmmux name=mux \
    ! filesink location=$fname > /dev/null

echo
echo "Screencast saved as $fname"

使用法:

$ ./screencast out_file_name.webm

すべてのクレジットはdon_crisstiに送られます。その答えに投票してください!

3
lviggiani