基础环境
客户端:飞牛FnOS TV版 最新版(底层基于ExoPlayer TV分支)
播放硬件:芝杜电视盒子
服务端:飞牛NAS
传输:有线局域网,网络带宽充足,排除网络问题
复现片源
影片:惊奇队长
封装规格:4K HDR,内置 DTS + Dolby Surround 双音轨
Captain.Marvel.2019.BluRay.2160p.x265.10bit.HDR.3Audios.mUHD-FRDS.mkv
来源PT站


蜘蛛侠3
Spider-Man No Way Home 2021 UHD BluRay REMUX 2160p HEVC Atmos TrueHD7.1-CHD
来源PT站


完整复现步骤与现象
1. TV端飞牛打开【音频直通】,播放本片;
2. 1倍速正常播放:画面周期性卡顿、随机向前跳转数秒;
3. 切换任意倍速(0.75x/1.25x/1.5x)播放,跳片、卡顿现象完全消失;
4. 在播放设置内关闭音频直通,重新1倍速播放,影片流畅无跳转;
5. 对照测试:同一份影片,局域网内使用芝杜播放器、手机端飞牛播放全程正常,不存在跳帧问题。
复现过程视频无法上传,有需要可联系微信:wb19038900004
技术原因参考
飞牛TV播放器依托ExoPlayer TV分支,开启音频直通后启用帧校验机制。
直通模式下视频流、DTS音轨分开透传,存在两套独立时钟;1倍速播放时音视频同步约束严格,时钟漂移触发缓冲区纠错逻辑,直接丢弃视频帧,表现为画面跳跃。
非1倍速变速模式下播放器启用动态时间拉伸,规避了该同步冲突。该问题在带有DTS音轨的片源更容易触发。
开发侧建议修复方案
改这个分支
https://github.com/jellyfin/jellyfin-androidtv
在 ExoPlayerBackend.kt 增加同步模式参数,指定基于显示时钟对齐:
player.setPlaybackParameters(
PlaybackParameters.Builder()
.setVideoSyncMode(PlaybackParameters.VIDEO_SYNC_MODE_DISPLAY)
.build()
)
用户临时规避方案
1. 短期方案:TV客户端关闭「音频直通」功能;缺点:无法源码输出点亮DTS全景声标识
2. 片源方案:优先选择仅EAC3/AC3音轨版本,避开带有DTS音轨的片源