libaribcaptionにより、kodiのLive視聴からffmpegエンコードまでarib字幕に対応できた昨今。
自身にとって、仕組みは理解せずとも組込めば答えてくれる魔法のモジュールである。

TV録画したtsファイルのエンコードはtvサーバーのラズパイ4側で処理。
ffmpegを使用してmp4へ変換する。
変換したファイルはWindows上からTMPGEnc SmartRender4でトリム処理して完成である。

以前は、時間効率を考えて変換作業をWindows上からHandBrakeで処理していた。
ただ、HandBrakeはarib字幕未対応のため苦肉の策で現手順に変更したのだ。
しかし、時間は掛るがtvサーバー側で、しれっとエンコードさせるのも悪くない。
いや、それどころか実質はWindows側のトリム作業だけになるので効率が良い。

ところで、使わなくなったHandBrake。
もともと、変換速度の速さを気に入り使っていたのだが、このまま放置するのも勿体ない。
今では使う場面がないのだが、いざというときには役立つに違いない。
最新では変化があったのか、確認するためバイナリーリリースを使ってみた。

当然、arib字幕は未対応のようだ。
まぁ、予想通り劇的な変化はない。
とりあえず適当なものを変換してみて、そっ閉じか...。
そう思ったのだが、QSVが使えなくなっている!
よくよく調べると、最近のバージョンではIntel第三世代のCPUはダメなようだ。

もう使わないので、どうでもよい。
少しばかり強がってみたが...いや、チョット待てよ。
HandBrakeもffmpegのライブラリに依存しているはず。
libaribcaptionを取り込むことでarib字幕対応になるのでは?

安直な考えだが、今迄はそれで結果が出ている。
どうせ試すなら使えるものをと、当該cpuのQSV対応最終ver1.5.1を選択。

まずは、当該バージョンが依存しているffmpeg-4.4.1にlibaribcaptionを使うためのパッチをあてる。

https://github.com/nisdon/ffmpeg.diff

若干ビルドエラーが発生したがメッセージに従えば問題は解決した。
まずは、これで試してみる。
tsファイルを読み込ませたのだが認識しない。
少し楽観的に考えていたが、そのままではダメなようだ。

ビルドに掛った時間を返せっ。
結局は時間の無駄だったか?
そう思ったのだが、諦めきれない。
ソースを調べてみると読み込むだけなら何とかなりそうだ。
その他字幕の処理にならってarib字幕処理を追加してみた。

https://github.com/nisdon/HandBrake.aribcaption

今度は認識してくれた。


さてエンコードは出来るのか?

その結果。
字幕焼き付けの場合は:○
libaribcaptionでデコードしたものを、HandBrake側(libhb)でそのまま画像形式にしてしているようだ。
若干、文字が横長にみえるが出力されている。


字幕ストリームの追加は:×
logを確認するとlibaribcaptionでデコードした情報を、エンコードすることなくデータを取り込んでいる。
実現するには、当該情報を自前で変換処理する必要がありそうだ。
 

ちなみにass形式ではいずれの方法でもエンコードできた。
ただし、見た目は画像形式と異なる。
ass形式では文字色や位置の細かな体裁が端折られている。
また画像形式における字幕の枠表示は、文字の影に置き換えられていた。


いずれにしても、目標は画像形式での字幕埋め込みである。
しかし、更に踏み込んで調べるには、自身の力では荷が重いと感じた。
よって今回の試みは、ここで諦めることにした。

ところで、冒頭で記したツールSmartRender4だが、去年の暮れから起動しなくなってしまった。
原因はWindowsアップデートが影響しているらしい。
古いバージョンなのでメーカーからのサポートも期待できない状況だ。

上述の第三世代IntelチップセットのQSV切り捨ての件しかり。
Windows11の登場以来、雲行きが怪しくなってきている。

もし、これからもWindows10を使い続けるならば、Microsoftからの兵糧攻め覚悟で使う必要がありそうだ。
まだまだ現役のデストップ機に載る第三世代i7を捨て去るのはもったいない。

自宅は完全なオフライン環境の無敵ファイヤーウォールなのだ。
もう、こうなれば地獄は果てまで付き合ってやろう。
地獄でなぜ悪い...