2020年3月20日金曜日

OBS Studio テキストプラグインのファイルポーリング間隔の変更

OBS Studioでローカルファイルを読み込むようにすると、1秒間隔でしかファイルの更新がチェックされません。 これでは遅延が気になるので、変更する方法を探しました... 残念ながら設定項目はないので、ソースコードを変更することになります。

以下のように0.1秒毎にファイルのタイムスタンプをチェックするよう書き換えます。変更自体は簡単なのですが、ビルドしなおすのは面倒です。

diff --git a/plugins/obs-text/gdiplus/obs-text.cpp b/plugins/obs-text/gdiplus/obs-text.cpp
index c452821..9b8c804 100644
--- a/plugins/obs-text/gdiplus/obs-text.cpp
+++ b/plugins/obs-text/gdiplus/obs-text.cpp
@@ -803,11 +803,11 @@ inline void TextSource::Tick(float seconds)
 
        update_time_elapsed += seconds;
 
-       if (update_time_elapsed >= 1.0f) {
+       if (update_time_elapsed >= 0.1f) {
                time_t t = get_modified_timestamp(file.c_str());
                update_time_elapsed = 0.0f;
 
                if (update_file) {
                        LoadFileText();
                        TransformText();
                        RenderText();
diff --git a/plugins/text-freetype2/text-freetype2.c b/plugins/text-freetype2/text-freetype2.c
index bc2dd18..a63621f 100644
--- a/plugins/text-freetype2/text-freetype2.c
+++ b/plugins/text-freetype2/text-freetype2.c
@@ -244,11 +244,11 @@ static void ft2_video_tick(void *data, float seconds)
        if (!srcdata->from_file || !srcdata->text_file)
                return;
 
-       if (os_gettime_ns() - srcdata->last_checked >= 1000000000) {
+       if (os_gettime_ns() - srcdata->last_checked >= 100000000) {
                time_t t = get_modified_timestamp(srcdata->text_file);
                srcdata->last_checked = os_gettime_ns();
 
                if (srcdata->update_file) {
                        if (srcdata->log_mode)
                                read_from_end(srcdata, srcdata->text_file);
                        else

2箇所変更したのですが、どうやらLinuxではtext-freetype2の方を変更すれば良かったようです。 obs-text/gdiplusは、名前からしてWindows用なのでしょう。

0 件のコメント:

コメントを投稿

色彩の印象について

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