2025年7月28日月曜日

31.1.2

公開されてましたが、まだリリースのLastestになっていない様子。


UI関連の視点ではYami.obtのスクロールバーのサイズが設定されるようになったことや、今までspacing: var(--spacing_small);と全体的に設定されていたものが、スライドバーやチェックボックス、ラジオボタン、メニューバー、グループボックスに限定されるなど微調整が入っている様子。

スピンエディットには変更がないようなので現行のままだと左右の余白が多すぎな状態でした。

個人的なカスタマイズ部分は変わりなくマージできたのでこの辺のテコ入れはなさそうと判断し、pullリクエストでも…とドキュメントを見たらちょっと面倒そうなのでこのままかなぁw


一応ソースは手前のリポジトリには上げてたりするので変更点はそれなりに行けるとは思うけど、 GitHubの特定のtagからのブランチとか上手くできないので常にその時点のmasterからしかできていないのが難点。GitHubの使い方もう少し調べないと…

あと、メインウィンドウのドック状態のサイズ変更のフォーカス時の区切り線が残ったりするようになった感じ…前からかもしれませんが。 

2025年7月24日木曜日

Windows 起動直後のボリュームがおかしい問題

前々から気になっていた現象の一つで、PCの電源を入れ起動後のボリュームがなんかおかしい状態になるという問題。

最初に気づいたときは、モニターはHDMI接続でモニターの電源が入っていなかったり、接続コネクターが今までとは違うコネクターにつないだためにボリュームがおかしくなったのかと思っていました。

そのうちに気づいたのはPCの電源を入れた後、起動音が鳴るようになったこと。弄った記憶はなかったのですが、起動音が聞こえるのに気づきました。

その後、なんかスピーカーのボリュームが最大になっていることが多いなとは感じていました。

確実におかしいと気づいたときにはスピーカー出力の左右のバランスが変わる現象が起るように。実際には左だけボリュームが0になっていたり。

ログイン後のデスクトップのスピーカーボリュームの表示が最大になっているにもかかわらず、実際のボリュームはいつもと変わらない大きさ(10~20)で出力されている。しかし、これをタスクトレイ上のアイコンの上でマウスでボリュームを小さくしようとするといきなり大音量(98ぐらいかな?)に。表示は100でそこから小さくしたので98になるのは理解できる。けど困りますがw

で、そんな状態で使い続けていましたが、今日おもむろに起動音いらなくね?と

サウンドの設定からサウンドの詳細設定、で旧コントロールパネルでおなじみのダイアログウィンドウの設定ウィンドウから、サウンドタブへ切替て、Windowsスタートアップのサウンドを再生する(P)のチェックボックスをオフへ。


PCを再起動し、ログインし、デスクトップが表示されるとボリュームがまともな表示に。

 

いままで、サウンドの既定のデバイスを切り替えたりいろいろしても何ともならなかったのですが、これで落ち着いてくれるといいなぁ…スタートアップのサウンドが鳴らなくなるのでちょっと寂しいですが… 

2025年7月18日金曜日

ffmpeg(ver 7.1.1) 動画をカットしたら音声だけ抜け落ちた

最近古い動画ファイルの不要な部分をカットしようとしたところ音声がない動画ファイルになってしまうという症状に悩んでいました。

やってることは再エンコなしで

ffmpeg -to 00:15:00 -i FileName -c copy CutedFileName

といった感じで不要な末尾をカットしているだけなのですが…

動画ファイルの日付を見ると2022/10/05とか結構昔のファイルです。

ffprobeで元ファイルとカット後のファイルを比べてみると映像と音声のストリームは存在するものの、音声ストリームのDURATIONが00:00:00.000000000となってしまっている。

確かにファイルサイズも音声分サイズが小さくなっている感じにw

色々と検索して調べてみるものの、似たような現象はあるものの、そちらでは音声のみ切り出せるようなのですが、こちらでは切り出しは行えず、再エンコーディングすれば音声を取り出せるのみ。

少し現象が違うものの、原因はffmpegの過去のバグに起因するっぽい感じ。 

aacで再エンコするとかなり高音域の音が歪まくるのでflacを使用するという手もあるのですが、ファイルサイズがそれなりに大きくなってしまうので、割り切って作業を進めることもできず途方に暮れていました。最悪、ffmpegのソースに手を入れて、バグ回避させてビルドすることも考えたのですが、手元にgcc環境が無いので少し時間をおいてみることに。

そして今日、過去のffmpegのバイナリーを使って試してみようかと。

現状メインで使っているのはffmpeg 7.1.1ですが、公式のリンクから存在したのはオートビルドのバイナリが格納されているBtbNさんのところで、現時点で最古のものはAuto-Build 2023-08-31 12:54のもの。

試しにmasterではなく、バージョン4.4.4-6を試してみました。

結果としては、あっさりと音声付きの動画を作ることができました。

同様に、5.1.3-16, 6.0-34でも問題なく動画が作成されました。

これらのバージョンで作成された後のファイルは7.1.1でも正しく処理が通るようになりました。 

今度は逆にどこまでのバージョンがこのバグ回避が行えるか気になったので調べてみると、Auto-Build 2025-07-17 14:10の6.1.2-192でも問題なし。しかし7.1.1-56では音声が無くなる状況に。

version 7ベースで最古のものが Auto-Build 2024-04-30 12:51に含まれていた7.0-21を試したところ、こちらは音声が含まれ問題がなさそうでした。

結論として7.1以上では、どうもバグのあるファイルでは-acodec copyが機能しなくなるのでしょう。

公式でwindows版のビルドを公開しているhttps://www.gyan.dev/ffmpeg/builds/ではprevious release version: 7.0.2が残っているので試したところ問題はない様子。

問題がなければ、現状ffmpegは7.0.2を使うのが幸せなのかな?
  

2025年7月16日水曜日

地味に設定画面が画面からはみ出てるので…

obs-studioをビルドして確認するために実行する。

すると、メインで使っている画面で設定画面を開くと、設定のウィンドウが微妙に画面からはみ出しているという…

タスクバーを隠れるようにすればいいんだろうけど。というわけで、設定値を確認してみると、\obs-studio\frontend\forms\OBSBasicSettings.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>OBSBasicSettings</class>
 <widget class="QDialog" name="OBSBasicSettings">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>981</width>
    <height>730</height>
   </rect>
  </property>
:

現在使用中のモニターを見ると1920x1080で大丈夫そうですが、拡大/縮小で150%(推奨)というのが問題になってそうです…

まぁ何と言うか、とりあえずやっつけでデフォルト値を弄っておけばいいかな?

ザックリ考えると、古典的な考えで800x600とかでいいかとか。

まぁとりあず画面内に収まってるからこれで良しとしようw

一般的にはメインウィンドウが存在するデスクトップウィンドウのサイズを取得して、作業領域に収まるように表示させるのですが、あまり凝りすぎると付加処理が悪さをすることも。まぁその辺は気が向いたらコードを弄るのがよさげかな?
 

QSpinBox padding

グレー枠の原因はあきらめて、31.1からやたら大きくなってしまったSpinBoxの原因を探ってみました。

色々と見て行くとどうやらYami.obtというstylesheetフォーマットのファイル中にたどりつきました。

ただ実際にどのように反映されているのか良くわかっていなく、このファイルを反映するにはリビルドすることが必須となってしまっていてトライアンドエラー方式で確認するのは結構痛いかった。そのうちpowershellでfindstrを使ってソース検索したときに

obs-studio\build_x64\rundir\Release\data\obs-studio\themes\Yami.obt

obs-studio\frontend\data\themes\Yami.obt

と表示され、単純にコピーされているだけという事実に…。記憶でどこかにobs-studioを使い始めたときにスタイルシートがどこかに入っていた記憶があったのだが、ユーザーフォルダ内のAppData\Roamingの中を探してなかったのであきらめていたが、よく考えればインストールフォルダにあるのが当然なのですが。

コンパイルの必要が無くなり、ようやく細かな点を確認できるようになりました。 

31.1からスペーシングやパディングを変更したために悪影響が出ているのと、全体的に修正作業がやっつけっぽいので細かいところでいろいろとおかしくなっています。

ザックリと31.0.4のYami.obtの比較しても全体的に修正が加わっているためにパッと見ではよくわかりませんが、細かく見て行くとQSpinBoxはベースとなるQPlainTextEditとQSpinBoxに付随するup-button,down-buttonが組み合わさって構成されていました。(Qtのドキュメントを見た方が早いとは思う…が、) 

最初にQSpinBoxのpaddingの記述が違っているのでそこから様子を見ることに。

結論から言えば、QSpinBoxは内部のQPlainTextEditのpadding分と自身のpadding分が反映されるため、巨大化しているようです。極端な話、QSpinBoxのpaddingを 0px 0pxで指定すれば全体的にスッキリします。ただ、スピンのボタンが小さくなりすぎるので、UIデザイン的には反則気味にw

31.1の変更状態を考慮すると、marginは触らずにpaddingだけで行っている感じがするのと、QSpinBoxはやはり大きめにしたいのではないかと考え、

QSpinBox,
QDoubleSpinBox {
    background-color: var(--input_bg);
    border: 1px solid var(--input_bg);
    border-radius: var(--border_radius);
    padding: var(--input_padding) var(--input_text_padding);
    padding: var(--input_padding) 0px;
    height: var(--input_height);
    max-height: var(--input_height);
}

としてみました。左右の無駄なパディングを消した形です。31.0.4と比べ、height指定が増えていますが、これ、正直意味をなしていないようで…。

あとは気になるポイントとしてはスピンボタンの上下にある間の隙間。それとこれでも右側の隙間が無駄に存在している点も気にはなります。min-widthとか設定できたりするのかな?

試行錯誤中の状態がこちら 



何となく行けそうな雰囲気?