2020年12月26日土曜日

色彩の印象について

このページに、PCCSトーンとその印象についてわかりやすく書かれていて参考になった。こんど映像を編集する機会があれば、このページを参考にしたいと思う。

著者は大学で映像制作を学んだ方のようで、基礎をわかりやすく説明されているように感じる。他の記事も読みたい。

2020年8月17日月曜日

Audacity 音声編集ツール

Audacityはオープンソースのマルチトラック音声編集ソフトです。

Audacityの特徴

クロスプラットフォームのオーディオエディタで、マルチトラックに対応しています。

比較的に軽量な動作が一番のメリットだと思います。 私はよくCore i7 L640 (2.13GHz) のマシンで作業していますが、1時間ほどの音声を数トラックいれても、再生できます。(DAWなら処理が追いつかなくてカクカクな音になるでしょう...)

DAWとの比較

音声編集ソフトである点はLogic ProのようなDAWと似ていますが、DAWではありません。 もしオープンソースのDAWをお探しなら、Ardourがおすすめです。 どのような点が違うのか説明してゆきましょう。

イフェクトチェーンの概念が無い

イコライザやコンプレッサなど基本的なイフェクトは揃っていますが、これらをチェーンにするという概念がありません。

普通のDAWでは、各種イフェクトを順番に並べてチェーンを作ります。チェーンの順番にもとの音声に対してイフェクトがかかってゆき、各チャネルの音が出来上がります。

Audacityでは、イフェクトを使うと、音声データが上書きされてゆきます。

例えば、ゲイン調整 - コンプレッサ - イコライザ - リバーブを順にイフェクトを適用した場合、後になってコンプレッサを調整し直すということは出来ません。(リバーブの後にイコライザを調整し直すのは、リバーブ・イコライザとも線型な処理なので可能でしょう。)

このメリットは、レンダリングが速いことです。 DAWの場合はレンダリング時に全てのイフェクトの処理を行いますが、Audacityではイフェクトを適用した時点でイフェクトが処理されているので、レンダリング (エクスポートと呼びます) はDAWと比べて高速です。

イフェクトのオートメーションが無い

DAWでは、時刻毎にパラメータを変えてゆく機能をオートメーションと呼んでいます。 (良さそうなパラメータを自動で見つけてくれるような機能ではありません。) コンプレッサの閾値など、イフェクトのパラメータをオートメーションで徐々に変えてゆくことは出来ません。 区間を区切って順番にイフェクトを適用してゆくことは出来ますが、区切る数が多くなるととても面倒です。

トラック毎のボリュームのオートメーションは有る

かろうじて、Envelope Toolという機能でボリュームのオートメーションに相当する機能はついています。

まとめ

Audacityは軽量な音声編集ツールで、簡単な音声編集やミキシングをする際には便利だと思います。貧弱なCPUでもさほど苦にならずに作業できます。 もし時間をかけてじっくりと編集するなら、ArdourやLogic ProのようなDAWが良いでしょう。

2020年5月4日月曜日

NDI HX Cameraの設定

iOS向けにNDI HX Cameraというアプリケーションがフリーで公開されています。 品質の設定が分かりにくいので、各設定がどのように振る舞うのか、実際に動かして確認しました。

品質の設定は、歯車アイコンを押してすぐ左に出てくる、アナログメーターアイコンで切り替えられます。針が右を指しているものが高、上が中、左が低品質になります。 設定によってフレームサイズが変わり、iPhone 8では以下のようになりました。

iPhone 8 リアカメラ
uyvy422(progressive), 3840x2160 [SAR 1:1 DAR 16:9], 3981312 kb/s, 30 tbr, 10000k tbn
uyvy422(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 995328 kb/s, 30 tbr, 10000k tbn
uyvy422(progressive), 640x480 [SAR 1:1 DAR 4:3], 147456 kb/s, 30 fps, 30 tbr, 10000k tbn
iPhone 8 リアカメラ
uyvy422(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 995328 kb/s, 30 tbr, 10000k tbn
uyvy422(progressive), 1280x720 [SAR 1:1 DAR 16:9], 442368 kb/s, 30 fps, 30 tbr, 10000k tbn
uyvy422(progressive), 640x480 [SAR 1:1 DAR 4:3], 147456 kb/s, 30 fps, 30 tbr, 10000k tbn
オーディオの有無や受信側でのバンド幅設定には依存しないようです。

もう公開されていないAndroidのアプリNewTek NDIでは以下のようになりました。

uyvy422(progressive), 640x480 [SAR 1:1 DAR 4:3], 147456 kb/s, 30 fps, 30 tbr, 10000k tbn
Xperia Z5 リアカメラ
Highuyvy422(progressive), 1280x720 [SAR 1:1 DAR 16:9], 442368 kb/s, 30 fps, 30 tbr, 10000k tbn
デフォルト
4Kのカメラが載っているのですが、以外なことに、720/30pで送られてきました。

OBS-NDI: バージョン4.9.0がリリースされました

OBS-NDIプラグイン4.9.0がリリースされました。

4.9.0になって、Sync modesの設定値 Internal が削除されました。 もし4.8.0や以前のバージョンでInternalに設定していた場合、Source Timingに設定が変更されます。 4.8.0まではデフォルトがNetworkでしたが、4.9.0からはSource Timingがデフォルトに変更されました。

Network設定は、NDI SDKのtimestampの情報をフレームの時刻として使うのですが、異なるマシン間でのやり取りの場合は、NTPなどでシステムの時計が同期されていることが期待されているようです。以下のようにNDI SDKのドキュメントにかかれています。

On modern sender systems this will have ~1uS accuracy; this can be used to synchronize streams on the same connection, between connections and between machines. For inter-machine synchronization, it is important to use external clock locking capability with high precision (such as NTP).
一方でSource Timing設定は、NDI SDKのtimecodeの情報をフレームの時刻として使うことになっています。 Timecodeとtimestampの違いは分かりにくいのですが、直近で送られたビデオとオーディオのtimecodeを合わせるなどのアルゴリズムが働くらしく、 OBSで使うにはtimecodeの方が適しているのではないでしょうか... なお、timecodeであっても、NTPで時刻の同期を取るべきのようです。

2020年5月2日土曜日

OBS-Studio: GDI+とFreetype2の違い

2種類のテキストソースの違いは?

Q: OBS-Studioには、2種類のテキストソース (GDI+とFreetype2) が用意されています。 どちらを使うのが良いのでしょうか...

A: WindowsではGDI+、それ以外ではFreetype2を使用しましょう。WindowsでFreetype2を使う理由はありません。

これらのプラグインは、フォントファイルの情報を元に、テキストを画像に描画し、その画像をソースとしてOBSのグラフィックスエンジンへと渡します。 GDI+とFreetype2の違いは、フォントを描画する方式の違いです。GDI+は、Windowsのコンポーネントを使うため、Windowsにしか対応していません。一方で、Freetype2は、FreeTypeというライブラリを使用します。Windowsに限らず、Mac OS XやLinuxでも動作します。

GDI+の方が機能が豊富

機能を比較すると、GDI+の方が豊富です。
プラグインGDI+Freetype2
ファイルから読み込み 可能 可能
フォント 設定できる 設定できる
位置揃え 左・中央・右 未実装、リクエストあり
テキストの色 色・透明度を設定できる 色だけ設定できる
色・透明度・太さを設定できる 黒・2px
背景色 背景として矩形を塗りつぶせる 未実装

ファイルの読み込み頻度

ファイルの読み込み頻度は、GDI+、Freetype2とも同じです。画像ソースも同じような実装です。 1秒間隔でファイルのタイムスタンプをポーリング、ファイルの変更を検出すると、さらに1秒後に読み込みます。ファイルを更新してから、最大で2秒の遅延が発生することになります。遅いですね。Windowsでは_wstatで1秒単位でのタイムスタンプしか取得できないので、このような実装になっているのだと思います。他のOSなら、更に速くしても問題ないはずです。 何度か (PR-1566など) リクエストは出ていますが、修正される見込みはなさそうです。 たぶん、ポーリング間隔を短くするよりは、FindFirstChangeNotificationinotifyのような機構を使って変更を検出するような仕組みにしたいのでしょう。

もし外部のプログラムやスクリプトからテキストを更新したい場合で最大2秒の遅延が気になるのであれば、obs-websocketを使いましょう。 Python3のライブラリsimpleobswsであれば、以下のようなコードで簡単にテキストを更新できます。もしasyncioを使うのが面倒であれば、obs-websocket-pyが良いです。

import simpleobsws
ws = simpleobsws.obsws(...)
ws.call('SetSourceSettings', {'sourceName': sourceName, 'sourceSettings': {'text': text}})

その他

Freetype2でも日本語を表示することができます。もし文字化けした場合、
  • 日本語を表示できるフォントが設定されているか、
  • ファイルからの読み込みの場合は文字コードの設定 (Linuxの場合はBOM無しのUTF-8が標準的です)
を確認しましょう。

歴史的な経緯としては、Freetype2が先に開発され、GDI+が後発のようです。 やはりWindowsユーザーの数が多く、GDI+が活発に機能を拡張してきたのでしょう。 Freetype2の実装をGDI+へ合わせてゆき、一つのプラグインへ統合するような流れになるのではないかと予想しています。

2020年4月24日金曜日

OBS websocketプラグインを使って遠隔操作する方法

OBS websocketプラグインとOBS Remote Tabletを使うと、携帯電話のブラウザなどからOBS Studioを遠隔操作できるようになります。
使用するツールとその接続は以下の図のようになります。
インストール手順を簡単に説明します。
  1. OBS Studioはきっと既にインストール済みでしょう...
  2. OBS websocketプラグインをインストールします。リリースページはこちら。
  3. インストールしてOBSを起動したら、メニューのTools → WebSockets Server Settingsから設定を確認します。
    LANにアクセスできる人が信用できる人に限られている場合は、すなわち不特定多数がLANにアクセスできない場合には、パスワードは設定しなくても良いでしょう。
  4. ファイアウォールのポートを設定します。(LAN内から接続できれば良いので、ルーターのポート解放などは不要です。)
    もしFirewalldを使っているのであれば、TCPの4444番ポートを解放するのは以下のコマンドになります。
    sudo firewall-cmd --permanent --add-port=4444/tcp
  5. 携帯電話またはタブレットから、http://t2t2.github.io/obs-tablet-remote/へアクセスします。 Hostには、OBSが走っているホストのIPアドレスを入れましょう。
    httpsではなくhttpでアクセスすることに注意しましょう。OBS websocketプラグインとの通信は暗号化されていませんが、ブラウザのセキュリティ設定によっては、httpsのページから暗号化されていない通信を行うことができません。
長所・短所など。
  • テキストのやりとりだけなので、動作が軽快です。その代わり、映像は見えません。最近になってOBS WebSocketsにソースのスクリーンショットを送る機能が追加されたのですが、いずれシーンのサムネイルを表示できるようになるかもしれません。
  • 何を表示するか、レイアウト設定から変えることができます。シーン切り替え以外に、トランジションの時間、表示中のソース、ストリーミングのステータスがあります。
  • スタジオモードには対応していないようです。シーン切り替えはすぐにライブへ行きます。
使用していて、以下の問題に気づきました。
  • IPv6とIPv4と両方のアドレスを持っている場合、websocketプラグインは片方のアドレスしかlistenしないようです。別のPCで使用していたときは問題なかった気がするので、デバッグが必要そうです。
  • iPhoneで使用すると、シーン切り替えでゆっくりタップすると、テキスト選択になり、シーンが切り替わらなくなることがあります。一度テキストが選択されると、同じ場所をタップしてもシーン切り替えの動作にはなりません。ページをリロードすることでテキスト選択を解除することができます。
    CSSで回避できるようなので、修正提案してみるかもしれません。 - 画面上の文字や画像を選択できないようにする

2020年4月14日火曜日

iPhone+OBS Studioでライブ配信する構成

スマートフォン (iPhone) のカメラで撮影し、NDIと呼ばれるプロトコルで、パソコン上のOBS Studioを経由してライブ配信する方法を紹介します。

最近のスマートフォンには高画質なイメージセンサーが搭載されることが多く、画角が広いことを除くと、ある程度綺麗な動画を撮影することができるようになってきました。 しかしながらスマートフォンのマイクはさほど良いものではなく、配信や記録しておくにはやや劣ってしまいます。 コンサートや礼拝ではオーディオミキサーを使用するでしょうから、PC上で音声をミキサーから取り込み、スマートフォンからの映像とあわせてライブ配信へと送ることを目指します。 もし複数のスマートフォンを使用すれば、設置場所を変えて複数のシーンを切り替えながら配信することもできます。

機材の構成

使用する機材を説明します。

  • iPhone - NDI HX Cameraをインストールしておきます。 以前はAndroidのアプリケーション (NewTek NDI) もあったのですが、残念なことに、今はPlay Storeで入手できません。
  • PC - Mac OS X, Windows, Linuxならなんでも良いです。システム要件を確認しておきましょう。もしIntelのCPU内蔵GPUを使用しているのであれば、インテル グラフィックス・コントローラーの対応APIからOpenGLあるいはDirectXのバージョンを確認すると良いです。 また、以下のソフトをインストールします。
    • OBS Studio - 配信するために使用します。
    • OBS NDIプラグイン - iPhoneから届くNDIの映像をOBSへ取り込むソースプラグインです。さらにOBSからNDIで送信するプラグイン (フィルターとアウトプット) も付属していますが、今回はソースだけを使用します。
    • NDIランタイムライブラリ - OBS NDIプラグインが、このランタイムライブラリを使用してNDIのパケットを受け取ります。
  • 無線LANアクセスポイント - iPhoneとPCとを同一のローカルネットに接続する必要があります。少なくとも802.11nに対応していると良いでしょう。よくあるルーター・ハブ機能付の無線LANアクセスポイントを使用しましょう。私はWZR-600DHPを使用しています。

Linuxでのインストール方法

  1. OBSのインストール方法 - 別記事で解説しましたので、こちらをご覧ください。近日中に、Centos8へのインストール方法を記事にしようと思っています。
  2. OBS NDI Pluginのビルド・インストールは、他のプラグインと同じで簡単です。
    git clone https://github.com/Palakis/obs-ndi.git
    mkdir obs-ndi/build
    cd obs-ndi/build
    cmake -DLIBOBS_INCLUDE_DIR=$PWD/../../obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr/local ..
    make
    sudo make install
        
  3. NDIランタイムライブラリのインストール - InstallNDISDK_v4_Linux.sh をダウンロードし、ファイルを展開、libndi.so*を/usr/local/libへコピーしましょう。他のファイルは不要です。あるいは、環境変数NDI_RUNTIME_DIR_V4にライブラリへのパスを設定しても読み込んでくれるはずです。
  4. NDIは、Bonjourをつかって情報をやり取りするようです。Avahiを走らせ、ファイアウォールを適切に設定しておきましょう。

その他の参考情報

  • Issue #448 - どうやら、音声にグリッチがのるなどの問題があるようです。iPhoneのNDI HX Camera側でオーディオをオフにしておくのがワークアラウンドになるようです。
  • ゲーム実況で使うPCについて理解しよう - もしPCを購入するのであれば、参考になる情報だと思います。要は、高性能なCPUが望ましいですが、メモリーはさほどコストをかけなくて良いということです。

色彩の印象について

このページに、PCCSトーンとその印象についてわかりやすく書かれていて参考になった。こんど映像を編集する機会があれば、このページを参考にしたいと思う。 著者は大学で映像制作を学んだ方のようで、基礎をわかりやすく説明されているように感じる。他の記事も読みたい。 【映像制作者が...