TrueNAS SCALE上でJellyfinを運用している環境で、Tailscale経由による外部再生を試したところ、映像が緑色になったり、「致命的なエラー」が表示されたりする症状が発生しました。
最初はCPU性能不足やIntel Quick Sync(QSV)の設定ミスを疑いましたが、実際に設定画面やログを確認していくと、当初想像していた内容とは異なる結果になりました。
この記事の結論
今回の調査では、CPU性能不足やFFmpegの異常終了は確認できませんでした。FFmpegは終了コード0で正常終了しており、CPUトランスコードも正常に開始されていました。一方で、Jellyfin側ではIntel Quick Sync(QSV)が有効になっているにもかかわらず、「追加設定が必要です」と表示されていました。現在はCPUトランスコード構成で安定して再生できています。
この記事で分かること
- 緑画面・致命的なエラーが発生した際の切り分け方法
- Jellyfinログ・FFmpegログの見方
- Intel Quick Sync(QSV)設定を確認した結果
- 最終的に安定した構成
検証環境
| 項目 | 内容 |
|---|---|
| OS | TrueNAS SCALE 25.10.4 |
| Jellyfin | 10.11.11 |
| CPU | Intel Core i5-13400 |
| GPU | Intel UHD Graphics 730(CPU内蔵) |
| 接続方式 | Tailscale |
| クライアント | Android版 Jellyfin 2.6.3 |
発生した症状
- 映像が緑色になる
- 「致命的なエラー」と表示される
- 再生開始直後に停止する
- Android版Jellyfinアプリで正常に再生できない
- 同じ動画でも時間を置くと正常に再生できる場合がある
毎回同じ症状が発生するわけではなく、正常に再生できる場合もありました。そのため、サーバー・ネットワーク・Androidアプリのどこに原因があるのか、この時点では判断できませんでした。
まずはTrueNASの状態を確認
最初に確認したのは、TrueNAS自体の負荷です。CPU使用率やメモリ使用量を確認し、サーバーの処理能力に問題がないか調べました。

確認した時点ではCPU使用率はほぼ0%で推移しており、メモリにも十分な余裕がありました。
メモリの多くはZFSキャッシュとして利用されていましたが、これはTrueNASでは正常な動作です。
この時点では、CPU性能不足やメモリ不足が今回の症状の直接的な原因とは考えにくい状態でした。
Jellyfinのトランスコーディング設定を確認
続いてJellyfinの「トランスコーディング」設定を確認しました。

ハードウェアアクセラレーションには「Intel Quick Sync(QSV)」が選択されていました。
一方で、その直下には「ハードウェアアクセラレーションを利用するには追加設定が必要です。」というメッセージが表示されていました。
この画面だけでは原因は判断できませんが、「QSVが完全に利用できている状態ではない可能性」が考えられます。
ただし、この時点ではQSVが今回の症状の原因であるとは断定できません。
ここまでで確認できたこと
| 確認項目 | 結果 |
|---|---|
| CPU使用率 | 問題なし |
| メモリ使用量 | 十分余裕あり |
| QSV設定 | 有効 |
| 追加設定が必要という表示 | あり |
| 現時点で原因は判明したか | まだ判明していない |
ここまでの調査では、サーバー性能不足が原因とは考えにくいこと、そしてQSV設定について気になる点があることまでは確認できました。
次は実際のJellyfinログとFFmpegログを確認し、サーバー内部でどのような処理が行われていたのかを調査します。
JellyfinログとFFmpegログを確認する
ここまでの調査では、TrueNAS自体の負荷は低く、CPUやメモリ不足が原因とは考えにくいことが分かりました。また、JellyfinではIntel Quick Sync(QSV)が有効になっている一方、「追加設定が必要です」というメッセージも表示されていました。
しかし、設定画面だけでは原因は判断できません。そこで次は、実際にJellyfinとFFmpegのログを確認し、サーバー内部で何が起きていたのかを調査しました。
Jellyfinログを確認
まずJellyfinログを確認したところ、動画再生開始直後に再生が停止していることが分かりました。
[INF] Playback stopped reported by app Jellyfin Android
playing 0
さらに、ユーザーの再生ポリシーとして次の内容も記録されていました。
EnablePlaybackRemuxing: True
EnableVideoPlaybackTranscoding: True
EnableAudioPlaybackTranscoding: True
Remux・動画トランスコード・音声トランスコードはいずれも許可されており、設定によって再生が制限されている状態ではありませんでした。
WebSocket切断も記録されていた
ログには次のようなメッセージも記録されていました。
WebSocketConnection:
The remote party closed the WebSocket connection
without completing the close handshake.
WebSocket接続が切断されていることは確認できました。しかし、このログだけでは「WebSocket切断が原因で再生できなかった」のか、「再生停止の結果として切断された」のかは判断できません。
そこで、さらにFFmpegログを確認しました。
FFmpegログを確認
まず確認できたのは、Remux処理を実行しているログです。
-codec:v copy
-codec:a copy
-f hls
-hls_segment_type fmp4
この設定では映像・音声ともにコピーされるため、動画を再エンコードするのではなく、コンテナ形式のみを変換しています。
そしてログの最後には次のメッセージが記録されていました。
FFmpeg exited with code 0
終了コード0は、FFmpegが正常終了したことを意味します。
つまり、この時点ではFFmpeg自体がクラッシュして動画再生に失敗したわけではありませんでした。
CPUトランスコードも正常に開始していた
Intel Quick Sync(QSV)を無効化したあとに取得したログでは、CPUによるソフトウェアトランスコードも確認できました。
-codec:v libx264
-preset veryfast
-crf 23
-pix_fmt yuv420p
-codec:a copy
このログから、CPUによるH.264エンコードは正常に開始されていることが分かります。
つまり、「CPUトランスコードが開始できず再生できなかった」という状況ではありませんでした。
FFmpegはエラー終了していなかった
さらにログを追っていくと、FFmpegはエラーによって停止したのではなく、Jellyfinから停止指示を受けて終了していました。
Stopping ffmpeg process with q
FFmpeg exited with code 0
Deleting partial stream file(s)
Playback stopped reported by app
Jellyfin Android
このことから、FFmpegは正常に動作しており、Android版Jellyfinアプリ側から再生停止が通知されていたことが確認できました。
ログから確認できたこと
| 確認項目 | 結果 |
|---|---|
| Remux処理 | 正常開始 |
| CPUトランスコード | 正常開始 |
| FFmpeg | 終了コード0で正常終了 |
| WebSocket | 切断は確認できたが原因は不明 |
| Android版Jellyfin | 再生停止通知を送信していた |
ここまでで分かったこと
今回取得したログを見る限り、FFmpegがクラッシュした形跡は確認できませんでした。また、CPUによるトランスコードも正常に開始されていました。そのため、この時点では「サーバー側の動画変換処理が原因で再生できなかった」と断定できる状況ではありませんでした。
では、実際にもう一度同じ動画を再生するとどうなるのでしょうか。次は社宅側から改めて再生テストを実施し、そのときのCPU使用率や動作状況を確認します。
もう一度同じ動画を再生してみる
ログを確認したあと、症状が発生していた同じ動画を社宅側から改めて再生してみました。
すると、それまで表示されていた緑画面や「致命的なエラー」は発生せず、動画は正常に再生できました。
なぜ正常に再生できるようになったのかは、この時点では分かりません。しかし、再生中のTrueNASの状態を確認することで、いくつか新しい事実を確認できました。
CPU使用率を確認
動画再生中のCPU使用率を確認したところ、使用率は最大でも約4%程度でした。
CPUトランスコードを利用している状態でも負荷は非常に低く、CPU性能不足によって動画再生が停止している状況ではありませんでした。
また、メモリ使用量にも大きな変化はなく、サーバー全体としては余裕を持って動作していました。
現在の構成
| 項目 | 設定内容 |
|---|---|
| ハードウェアアクセラレーション | なし(CPUトランスコード) |
| 動画トランスコード | libx264 |
| 画質 | 自動 |
| 実効ビットレート | 約8Mbps |
| 接続方式 | Tailscale |
| 再生端末 | Android版 Jellyfin 2.6.3 |
現在はこの構成で問題なく動画を再生できています。
今回の調査で確認できたこと
| 確認項目 | 結果 |
|---|---|
| CPU使用率 | 動画再生中も約4%程度 |
| メモリ使用量 | 十分な余裕あり |
| FFmpeg | 終了コード0で正常終了 |
| CPUトランスコード | 正常開始 |
| Android版Jellyfin | 再生停止通知を送信していた |
| 再テスト | 同じ動画を正常再生できた |
今回の調査で分からなかったこと
重要
今回の検証では、「緑画面」や「致命的なエラー」が発生した直接の原因を特定することはできませんでした。
- 緑画面が発生した直接の原因
- 「致命的なエラー」が表示された直接の原因
- Intel Quick Sync(QSV)の設定がどこまで影響していたのか
- Android版Jellyfinアプリ固有の問題だったのか
- 通信状況が影響していたのか
同じ症状が発生した場合の確認ポイント
- TrueNASのCPU使用率・メモリ使用量を確認する。
- Jellyfinのトランスコーディング設定を確認する。
- Jellyfinログを確認する。
- FFmpegログを確認し、「FFmpeg exited with code 0」なのか、エラー終了なのかを確認する。
- Androidアプリだけでなく、ブラウザからも再生を試してみる。
- 別のネットワーク環境でも再現するか確認する。
まとめ
今回の調査では、当初疑っていたCPU性能不足やFFmpegの異常終了は確認できませんでした。ログを確認した結果、FFmpegは終了コード0で正常終了しており、CPUによるトランスコードも正常に開始されていました。
また、JellyfinではIntel Quick Sync(QSV)が有効になっていたものの、「追加設定が必要です」というメッセージも表示されていました。ただし、この設定が今回の症状に直接関係していたかどうかは判断できません。
再テストでは同じ動画を正常に再生できたことから、少なくとも今回取得した情報だけでは原因を一つに絞ることはできませんでした。
技術的なトラブルでは、最初に思い付いた原因だけを追いかけるのではなく、ログやサーバーの状態を一つずつ確認しながら切り分けることが重要だと改めて感じました。
この記事が、TrueNAS SCALEやJellyfinで同じような症状に悩んでいる方の調査や切り分けの参考になれば幸いです。

コメント