tsukumijima / KonomiTV

KonomiTV: Kept Organized, Notably Optimized, Modern Interface TV media server
MIT License
597 stars 37 forks source link

SandyBridge環境で動画を再生できない #94

Closed Hayao0819 closed 2 months ago

Hayao0819 commented 2 months ago

概要

こちらのDockerfileで構成したMirakurunをバックエンドとしてKonomiTVをインストールしました。番組表等は正常に閲覧できるのですが、映像の再生を行うことができません。

以下で挙動を確認できます。 https://youtu.be/MNqP1j-t2YA

動作環境

Server

OS: Ubuntu 22.04.4 LTS x86_64 Kernel: 6.5.0-45-generic CPU: Intel Xeon E31275 (8) @ 3.800GHz GPU: Intel HD Graphics Memory: DDR3-1333 11837MiB Mirakurun: 3.9.0-rc.4 EPGStation: 2.7.1 Tuner: PX-S1UD (dvb device)

Client

以下のクライアントでこの現象を確認しました

MacBook Pro 2020 13-inch OS: macOS Sonoma 14.5 CPU: M1 RAM: 8GB Browser: Google Chrome 126.0.6478.183(Official Build)(arm64)

Dell Inspiron 5490 OS: ArchLinux CPU: Intel Core i5-10210U RAM: 20GB Browser: Google Chrome Canary128.0.6601.2 dev(amd64)

自作PC OS: Windows 11 Home 64bit CPU: Ryzen 9 7900X RAM: DDR5 48GB GPU: AMD Radeon Vega 64

Hayao0819 commented 2 months ago

このIssueを書きながら色々試したところ エンコードをffmpegにしたところ改善したため、やはりSandy Bridgeの問題の可能性が高そうです。

intel-vaapi-driverのようなものを利用してもQVEncの利用は難しいのでしょうか?

tsukumijima commented 2 months ago

@Hayao0819

こちら に記載しています通り、Linux 版の Intel QSV は、Broadwell (第5世代) 以上の Intel CPU でのみ利用できます。 そのため、Haswell (第4世代) 以下の CPU では、Intel Media Driver のインストール有無にかかわらず、QSVEncC を利用できません。

VA-API であれば Haswell 以下でもハードウェアエンコードが可能なようですが、Intel Media Driver に依存する QSVEncC は動作しません。 FFmpeg の VA-API によるハードウェアエンコード機能も存在は認知していますが、KonomiTV 側の対応コストが極めて高くなること、またハードウェアのパフォーマンスを最大限引き出す上で QSVEncC / NVEncC / VCEEncC / rkmppenc の方が性能が高くインターレースフィルタの実装も優秀なことから、FFmpeg のハードウェアエンコード機能に対応する予定はありません。ご了承ください。 元よりハードウェアエンコーダーには種類や機種ごとに固有の癖や複雑な仕様があります。こうした問題に一つずつ rigaya 氏と連絡を取りながら対処を続け、相当の労力を掛けようやくどの環境でも概ね安定動作するようになった経緯があります。

どのみち Sandy ~ Haswell 世代のショボい QSV よりも Intel N95 / N100 あたりの1万円台ミニ PC にもれなくついてくる QSV の方が性能も画質も良いと思いますので、買い替えや別 PC へのインストールをおすすめします。 KonomiTV は何もチューナーと同一の PC で動かす必要はなく、異なる PC でも Mirakurun or EDCB・録画フォルダ・キャプチャフォルダへの (ローカルネットワーク越し) アクセスが可能であれば動作します。

なお、Windows 版の Intel QSV は、Sandy Bridge (第2世代) ~ Haswell (第4世代) の CPU でも利用できます。 ただし rigaya 氏いわく古い CPU は積極的にサポートされていないようで、新機能の実装やライブラリ更新などで意図せず動作しなくなる場合があります。私も Core i7-2600K / Intel Graphics 3000 環境を未だに録画 PC として運用していますが、最新の Windows 版 QSVEncC で動作するかはしばらく確認していません (代わりに NVEncC を使っている) 。


なお、今後今回のような再生エラーが発生した場合は、サーバー設定からエンコーダーログを出力する設定に変更した上で、エンコーダーのログを確認してみることを推奨します。 KonomiTV で映像を再生できない場合、95%の確率でチューナー・エンコーダー・エンコーダーの動作環境のいずれかが原因です。

KonomiTV の視聴配信ロジックは私自身がここまで 3 年の歳月を掛け試行錯誤を重ね、実際に運用しながら安定性を磨き上げていったものです。うまくライブストリーミングできない場合のほとんどは KonomiTV の外 (接続が不安定な Wi-Fi / モバイル回線・GPU ドライバが古い・GPU ドライバが入ってない・チューナーが 0Mbps 病で応答がない・ハードウェアエンコーダーが当該 PC のハードウェア構成に対応していない・特定 GPU ではハードウェアエンコードが不安定 …etc) に原因があります。

このような返信を書くのにもそれなりに手間が掛かっていますので、恐れ入りますが可能な限り自己解決していただきますようお願いいたします。