ffmpegを使用してスクリーンキャストを作成する方法

知らない人のために、 スクリーンキャスト これは、コンピュータ画面上の出力をデジタル記録したもので、音声ナレーションが含まれる場合もあります。

En Linux、いくつかあります ツール 作るために スクリーンキャスト。 しかし、そうすることを好む人 最小限のリソースを消費する 彼らはこの記事を読むのをやめられません。


2 つのツール (画面をキャプチャする ffmpeg と、記録するウィンドウの座標と寸法を取得する xwininfo) を使用して、最小限のリソースでスクリーンキャストを作成し、最適な結果を得ることができました。

スクリーンキャストを開始するためのスクリプト

#!/ bin / bashに

#選択したウィンドウの座標とサイズを取得します
#これはウィンドウ装飾を除外します。
  未設定のxywh
  eval $(xwininfo -frame |
    sed -n -e "s / ^ +絶対左上X:+([0-9] +)。* / x = 1 / p"
           -e "s/^ +絶対左上 Y: +([0-9]+).*/y=1/p"
           -e "s / ^ +幅:+([0-9] +)。* / w = 1 / p"
           -e "s / ^ +高さ:+([0-9] +)。* / h = 1 / p")
$w=$w + $w % 2 # 幅を 2 ​​の倍数にします。そうでないと ffmpeg が文句を言います
WIN_XY = $ x "、" $ y#XY座標をフォーマットします
WIN_GEO = $ w "x" $ h#フォーマットウィンドウサイズ
#notify-send は、スクリーンキャストの開始を示すメッセージを表示します。
# 設定に一致するパラメータを使用して ffmpeg を実行します。
Notice-send "スクリーンキャストを開始しています..." && ffmpeg -f alsa -i hw:0 -f x11grab -r 25 -s $WIN_GEO -i :0.0+$WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset Ultrafast - crf 0 -スレッド 0 save.mp4

このスクリプトの動作すべてを完全に理解する必要はありません。 コメントに従うだけで十分です。 ただし、マシンの構成に合わせて調整するために、ffmpeg が実行される行の一部のパラメータを変更する必要がある可能性があります。

オーディオアーキテクチャ

1) OSS を使用する場合は、-f alsa -i hw:0 を -f oss -i /dev/dsp に置き換えます。

2) ALSA のみを使用する場合は、スクリプトに含まれるパラメータ (-f alsa -i hw:0) を使用する必要があります。 hw の後の番号を確認するには、aplay -l を実行し、適切なサウンド カード番号を選択します。

3) Pulse Audio を使用する場合 (Ubuntu および派生製品はこれを使用します)、-f alsa -ac 1 -i パルス フラグを使用します。

FPS

-r 25 は、録画する fps (25 秒あたりのフレーム数、または XNUMX 秒あたりのフレーム数) を示します。 XNUMX が良い選択肢です。

オーディオ、ビデオ、同期コーデック

-acodec libmp3lame はオーディオ コーデックです。 mp3で録音することにしました。 他のものを使用することもできます。

-async 1 では、オーディオとビデオの同期が可能になります。

-vcodec libx264 -preset ultrafast -crf 0 -threads 0は、使用するビデオコーデックがx264であり、プリセットが超高速(高速、低速など)であることをffmpegに通知します。そうでない場合、で正しく記録されません。 fpsの望ましい量。 -crf 0パラメーターは、圧縮レベルを示します(圧縮が低いほど、圧縮は低くなります)。 最後に、threads 0は使用するスレッドの数を示し、0を渡すとffmpegが自動的に計算します。 オーディオ設定と同様に、他のオプションを選択できます。

これらすべての構成は、ファイルが比較的小さく、ビデオ品質が高く、オーディオが同期され、遅延が発生しないという最良の結果が得られたものです。 ただし、他のドキュメントを見つけるために ffmpeg ドキュメントを参照することをお勧めします。

スクリーンキャストを終了するスクリプト

#!/ bin / bashに
notify-send "Ending screencast ..." && killall ffmpeg
両方のスクリプトが機能するには、notify-send がインストールされている必要があります。 Ubuntu から派生したすべてのディストリビューションには、このツールがインストールされている必要があります。 Arch および派生製品の場合: sudo pacman -S libnotify。

ffcast

スクリプトを書くための情報を探していたところ、私と非常によく似たアイデアを持っている人がいることを発見しました。 Ffcast は、同じツール (ffmpeg および xwininfo) を使用するスクリプトです。 このスクリプトを使用する方が快適だと感じる人もいるかもしれないので、これについて言及します。

Archとその派生物では、ターミナルを開いて実行しました。

ヨーグルト-Sffcast

残りは、からダウンロードできます ここで.

最後まで…

保存したスクリプトを作成して HOME フォルダーに保存したら、実行権限を付与する必要があります。 start_screencast と end_screencast が呼び出されると仮定して、ターミナルで次のコマンドを実行します。

chmod + x start_screencast
chmox + xterminate_screencast

最後に、各スクリプトを使いやすい 2 つのショートカット (直接アクセス) に割り当てるだけです。 こうすることで、選択したキーの組み合わせを押したときにスクリプトが実行されます。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   マイケルSp

    Linuxを知ってから、このコメントで詳しく説明したのとまったく同じことを自問しました。 それは野心的なプロジェクトになるでしょう。

  2.   pmf

    チュートリアルは私には良いようですが、初心者ユーザーにとって簡単なことをどのように言いますか?まあ、私が思うに最高のものはKAzamです、それは使いやすく、私の意見ではあまり消費しません!!!!! 乾杯

  3.   Linuxを使いましょう

    すべてではない。 さらに、私は正直に言って、スクリーンキャスティング(必要なものがすべて揃っている)に適したインターフェイスがなく、必要な形式で動作し、リソースをほとんど消費しないと信じています。

    私の場合、ターミナルが最良の選択肢です。 みんなのためのふりはしませんが、学んでいることを共有するのはいいですね。

    乾杯! ポール。

  4.   ホルヘ・ロシャ

    GNU / linuxでOSを拡張したい場合、ターミナルでそのようなことを行うようにユーザーにアドバイスするのは間違いです。人々は簡単で機能的なものを望んでいます。

    @ingjorgerocha

  5.   なぜソイフアン

    サーバーレベルでは、コンソールのみを使用し、グラフィカル環境は使用しません...これが最も実用的であり、そこからすべてを実行します(たとえば、よく言われるように自動バックアップ...)が、サーバーとして使用しているマシンでは...その上でスクリーンキャストを何をしたいですか?hehe..ffmpegは非常に有効ですが、コンソールの問題は、どのディストリビューションに応じてバックグラウンドに移動する必要があると思います。
    Linuxの世界には非常に多様なディストリビューションがあり、コンソールはすべての状況で適切に動作するのに十分に完成しているので(それはほぼ間違いなく..)、一般向けのアプリの改善を開始する必要があります。磨き、コード、グラフィックの側面...これが今日求められていることです。
    私たちはかなり古風で放棄されたLinuxプロジェクトを持っています、私たち全員が知っています...良い例は、私にとって、ペンドライブでプログラムを取得し、ダブルクリックして簡単にインストールできる実行可能なファイル形式がなくなった理由ですリポジトリ(したがってネットワーク)が必要なことを除けば、APTonCDは必要ありませんが、これも古くなっています。標準の「.tux」またはWindowsの「.exe」に類似したものが必要です。スペースの問題ですか。 ?.. Windowsでは、Gimp実行可能ファイルは72mbを占有し、Linux(.deb)用の同じ実行可能ファイルは4,2mbを占有します...これはなぜですか? Gimpプログラム自体、Windowsでは、インストール時にプログラムが機能することを確認するためのすべてのライブラリが付属しています... Linuxでは、同じものを使用でき、実行可能ファイルがより多くを占有し、サイズの利点が失われますが、移植性は向上します(そして今日私たちがポケットに入れて運ぶほど大きな記憶を持っています...私たちのほとんどすべてが4GBのペンドライブを持っている場合、72MBと8MBを運ぶことはどのような違いがありますか?)
    これらすべてを磨く必要があります...システムは安定しており、優れたサポートとドライバーの互換性があります...そこにあるものを改善しませんか?...誰かが励まされたら、実行可能なプロジェクトを開始します。 !

  6.   飛騨

    ええと...まあ、親愛なる友人のためにコンソールを愛する人々はそれを愛していません、それで彼らはそれを使って、例えばサーバーレベルで多くのことを自動化できるのでそれを愛しています(そうではありませんが)。

  7.   なぜソイフアン

    正直なところ、コンソールは非常に便利です...しかし、ffmpegを使用し、新しいLinuxユーザーの可能性に対してより魅力的で建設的なGUIを備えたプログラムがあります...ほとんどすべてのディストリビューションのリポジトリにあるRecordMyDescktopをお勧めします。愛する人がたくさんいることを知っています。コンソールですが、これは可能な限り終了する必要があります... Linuxはデスクトップと、それを基本的に望んでいる可能性のあるエンドユーザー、グラフィカルインターフェイス、そして可能であれば美しく実用的なものに焦点を当てる必要があります...それはとても難しいですか? Linuxには大きな可能性があり、それを絞らなければなりません。
    すべてにもかかわらず、それは素晴らしいプログラムです!良い投稿^^

  8.   なぜソイフアン

    真実は、はい、学んでいることを共有することは素晴らしいことです...これは投稿の価値を下げる意味での批判ではありませんが、なぜより多くの人々がLinuxを使用しないのかという批判です...彼らが言うことは何でも、コンソールはに縮小されるべきですグラフィカル機能に道を譲るXNUMX番目の平面(これは、コンソールで物事を行う可能性が排除されることを意味するのではなく、それを使用したい人と使用しない人は誰でもそうです...)
    結局のところ、販売されているもの、印象的なのはOSの操作のしやすさです...内部的にはLinuxは止められませんが、その使いやすさと直感的なインターフェイスを追加すると...ユーザーを獲得しますこれは、コミュニティの開発、さまざまなプログラム、ビデオゲーム会社からのサポート、したがって特定のハードウェア(グラフィックカードなど)、現在Windows / Macにのみ存在する特殊なソフトウェアの作成に役立ちます...わかりません。これは15M計画に含まれています...すべて非常に素晴らしいですが、今度はコースを少し変更する時が来ました...そして私は少し言います!

    ええと、Linuxの標準的な実行可能プロジェクトはまだ残っています。誰かがそれを読んで、私たちが共同作業を開始することを望んでいる場合、ここに私のメールがあります。

    挨拶と私はここでもっと多くのコメントを見たいと思っています...彼らが批判や賞賛であろうと、事実は私たちが話さなければならないということです。Xao

  9.   Linuxを使いましょう

    良い! 良い貢献。
    抱擁! ポール。

  10.   ヘラルド

    このプログラムは何で構成されていますか…注意してください、私はこれについてあまり知識がありません!

    1.    Linuxを使いましょう

      通常、ビデオの変換に使用されます。 この場合、たとえば、デスクトップを記録したり、ビデオチュートリアルを作成したりする方法を示します。
      抱擁! ポール。

  11.   タリバリス

    ありがとうございました。 解像度(1280X800など)では、ffmpegコマンドを機能させるためにXを大文字にする必要があります。