Skip to content

[Bug] armeabi-v7a Android TV(旧版 libmpv)播放含独立音频流的视频时黑屏无声音 #70

@TakChen

Description

@TakChen

检查清单

  • 搜索了 历史 issue ,并未发现相同问题
  • 正在使用最新版本。
  • 已排除网络问题
  • 已排除账号问题
  • 已排除设置问题

Assign

  • self-assign

版本号

7a6f5d9

复现步骤

  1. 在该 armeabi-v7a Android TV 上安装 PiliNara
  2. 打开任意需要独立音频流的普通视频(如用户投稿视频)
  3. 视频画面黑屏无声音

预期行为

视频和音频均正常播放。

实际行为

视频画面黑屏无声音。

错误日志


------- DEVICE INFO -------

id: SP1A.210812.016

board: huanglong

bootloader: unknown

brand: huanglong

device: newlink

display: newlink_hi3751v660 HuanglongV100R002C01SPC004B010

fingerprint: HiDPT/Hi3751V351_DMO/Hi3751V350:12/SP1A.210812.016/jenkins02032133:userdebug/dev-keys

hardware: huanglong

host: 220

isPhysicalDevice: true

manufacturer: HL2.0

model: huanglong

product: newlink_hi3751v660

tags: dev-keys

type: userdebug

versionBaseOs:

versionCodename: REL

versionIncremental: eng.jenkin.20260203.203802

versionPreviewSdk: 0

versionRelease: 12

versionSdk: 31

versionSecurityPatch: 2021-10-05

------- APP INFO -------

environment: debug

version: 2.0.2-aeb4235a5

appName: PiliNara debug

buildNumber: 4954

packageName: com.example.pilinara.debug

------- ERROR -------

Duplicate GlobalKey detected in widget tree.

The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:

- [GlobalKey#a1e0c]

This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.

The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:

- Stack(alignment: AlignmentDirectional.topStart, fit: loose, clipBehavior: none, dependencies: [Directionality], renderObject: RenderStack#0c216)

A GlobalKey can only be specified on one widget at a time in the widget tree.

------- STACK TRACE -------

#0 BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:3409:15)

#1 BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3434:8)

#2 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1309:19)

#3 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:495:5)

#4 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1430:15)

#5 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1345:9)

#6 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1198:5)

#7 _invoke (dart:ui/hooks.dart:356:13)

#8 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:444:5)

#9 _drawFrame (dart:ui/hooks.dart:328:31)

------- CUSTOM INFO -------

BuildConfig:

Build Time: 2026-04-07 15:27:13

Commit Hash: aeb4235a516af7224370b9d1491ad68f507df8f8

------- DEVICE INFO -------

id: SP1A.210812.016

board: huanglong

bootloader: unknown

brand: huanglong

device: newlink

display: newlink_hi3751v660 HuanglongV100R002C01SPC004B010

fingerprint: HiDPT/Hi3751V351_DMO/Hi3751V350:12/SP1A.210812.016/jenkins02032133:userdebug/dev-keys

hardware: huanglong

host: 220

isPhysicalDevice: true

manufacturer: HL2.0

model: huanglong

product: newlink_hi3751v660

tags: dev-keys

type: userdebug

versionBaseOs:

versionCodename: REL

versionIncremental: eng.jenkin.20260203.203802

versionPreviewSdk: 0

versionRelease: 12

versionSdk: 31

versionSecurityPatch: 2021-10-05

------- APP INFO -------

environment: debug

version: 2.0.2-aeb4235a5

appName: PiliNara debug

buildNumber: 4954

packageName: com.example.pilinara.debug

------- ERROR -------

A RenderFlex overflowed by 80 pixels on the right.

------- STACK TRACE -------

null

------- CUSTOM INFO -------

BuildConfig:

Build Time: 2026-04-07 15:27:13

Commit Hash: aeb4235a516af7224370b9d1491ad68f507df8f8

------- DEVICE INFO -------

id: SP1A.210812.016

board: huanglong

bootloader: unknown

brand: huanglong

device: newlink

display: newlink_hi3751v660 HuanglongV100R002C01SPC004B010

fingerprint: HiDPT/Hi3751V351_DMO/Hi3751V350:12/SP1A.210812.016/jenkins02032133:userdebug/dev-keys

hardware: huanglong

host: 220

isPhysicalDevice: true

manufacturer: HL2.0

model: huanglong

product: newlink_hi3751v660

tags: dev-keys

type: userdebug

versionBaseOs:

versionCodename: REL

versionIncremental: eng.jenkin.20260203.203802

versionPreviewSdk: 0

versionRelease: 12

versionSdk: 31

versionSecurityPatch: 2021-10-05

------- APP INFO -------

environment: debug

version: 2.0.2-aeb4235a5

appName: PiliNara debug

buildNumber: 4954

packageName: com.example.pilinara.debug

------- ERROR -------

error: main: Command loadfile: argument index can't be parsed: option parameter could not be parsed.

------- STACK TRACE -------

#0 Catcher2.reportCheckedError (package:catcher_2/core/catcher_2.dart:512:31)

#1 Utils.reportError (package:PiliPlus/utils/utils.dart:201:18)

#2 PlPlayerController._startListeners.<anonymous closure> (package:PiliPlus/plugin/pl_player/controller.dart:996:19)

#3 _RootZone.runUnaryGuarded (dart:async/zone.dart:891:10)

#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381:11)

#5 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:312:7)

#6 _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:154:11)

#7 _DistinctStream._handleData (dart:async/stream_pipe.dart:532:14)

#8 _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:184:13)

#9 _RootZone.runUnaryGuarded (dart:async/zone.dart:891:10)

#10 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381:11)

#11 _DelayedData.perform (dart:async/stream_impl.dart:573:14)

#12 _PendingEvents.handleNext (dart:async/stream_impl.dart:678:11)

#13 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649:7)

#14 _microtaskLoop (dart:async/schedule_microtask.dart:40:35)

#15 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)

------- CUSTOM INFO -------

BuildConfig:

Build Time: 2026-04-07 15:27:13

Commit Hash: aeb4235a516af7224370b9d1491ad68f507df8f8

------- DEVICE INFO -------

id: SP1A.210812.016

board: huanglong

bootloader: unknown

brand: huanglong

device: newlink

display: newlink_hi3751v660 HuanglongV100R002C01SPC004B010

fingerprint: HiDPT/Hi3751V351_DMO/Hi3751V350:12/SP1A.210812.016/jenkins02032133:userdebug/dev-keys

hardware: huanglong

host: 220

isPhysicalDevice: true

manufacturer: HL2.0

model: huanglong

product: newlink_hi3751v660

tags: dev-keys

type: userdebug

versionBaseOs:

versionCodename: REL

versionIncremental: eng.jenkin.20260203.203802

versionPreviewSdk: 0

versionRelease: 12

versionSdk: 31

versionSecurityPatch: 2021-10-05

------- APP INFO -------

environment: debug

version: 2.0.2-aeb4235a5

appName: PiliNara debug

buildNumber: 4954

packageName: com.example.pilinara.debug

------- ERROR -------

error: main: The loadfile option must be an integer: audio-files="https\://upos-sz-estgoss.bilivideo.com/upgcxcode/72/29/33381352972/33381352972-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&mid=0&uipk=5&nbs=1&oi=2742939466&os=estgoss&trid=1bd9b22849e94527b2029d2ef35dda2u&deadline=1775665564&platform=pc&gen=playurlv3&og=ali&upsig=eae5a6616bc4deb4e5ef3001879ec4ec&uparams=e,mid,uipk,nbs,oi,os,trid,deadline,platform,gen,og&bvc=vod&nettype=0&bw=165912&buvid=F6E15B13-02A5-4CBE-8543-24957377E82F43300infoc&build=0&dl=0&f=u_0_0&qn_dyeid=e91ce52f6f77375d0076b24269d6657c&agrr=0&orderid=1,3"

------- STACK TRACE -------

#0 Catcher2.reportCheckedError (package:catcher_2/core/catcher_2.dart:512:31)

#1 Utils.reportError (package:PiliPlus/utils/utils.dart:201:18)

#2 PlPlayerController._startListeners.<anonymous closure> (package:PiliPlus/plugin/pl_player/controller.dart:996:19)

#3 _RootZone.runUnaryGuarded (dart:async/zone.dart:891:10)

#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381:11)

#5 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:312:7)

#6 _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:154:11)

#7 _DistinctStream._handleData (dart:async/stream_pipe.dart:532:14)

#8 _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:184:13)

#9 _RootZone.runUnaryGuarded (dart:async/zone.dart:891:10)

#10 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381:11)

#11 _DelayedData.perform (dart:async/stream_impl.dart:573:14)

#12 _PendingEvents.handleNext (dart:async/stream_impl.dart:678:11)

#13 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649:7)

#14 _microtaskLoop (dart:async/schedule_microtask.dart:40:35)

#15 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)

------- CUSTOM INFO -------

BuildConfig:

Build Time: 2026-04-07 15:27:13

Commit Hash: aeb4235a516af7224370b9d1491ad68f507df8f8

------- DEVICE INFO -------

id: SP1A.210812.016

board: huanglong

bootloader: unknown

brand: huanglong

device: newlink

display: newlink_hi3751v660 HuanglongV100R002C01SPC004B010

fingerprint: HiDPT/Hi3751V351_DMO/Hi3751V350:12/SP1A.210812.016/jenkins02032133:userdebug/dev-keys

hardware: huanglong

host: 220

isPhysicalDevice: true

manufacturer: HL2.0

model: huanglong

product: newlink_hi3751v660

tags: dev-keys

type: userdebug

versionBaseOs:

versionCodename: REL

versionIncremental: eng.jenkin.20260203.203802

versionPreviewSdk: 0

versionRelease: 12

versionSdk: 31

versionSecurityPatch: 2021-10-05

------- APP INFO -------

environment: debug

version: 2.0.2-aeb4235a5

appName: PiliNara debug

buildNumber: 4954

packageName: com.example.pilinara.debug

------- ERROR -------

invalid parameter

------- STACK TRACE -------

#0 Catcher2.reportCheckedError (package:catcher_2/core/catcher_2.dart:512:31)

#1 Utils.reportError (package:PiliPlus/utils/utils.dart:201:18)

#2 PlPlayerController._startListeners.<anonymous closure> (package:PiliPlus/plugin/pl_player/controller.dart:1049:17)

#3 _RootZone.runUnaryGuarded (dart:async/zone.dart:891:10)

#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381:11)

#5 _DelayedData.perform (dart:async/stream_impl.dart:573:14)

#6 _PendingEvents.handleNext (dart:async/stream_impl.dart:678:11)

#7 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649:7)

#8 _microtaskLoop (dart:async/schedule_microtask.dart:40:35)

#9 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)

------- CUSTOM INFO -------

BuildConfig:

Build Time: 2026-04-07 15:27:13

Commit Hash: aeb4235a516af7224370b9d1491ad68f507df8f8

相关信息

  • 用户投稿视频无法播放
  • 影视分区视频能正常播放

根因分析

根因 1:旧版 mpv 不支持 loadfile 的 options 参数

media_kit 内部调用 loadfile <url> replace 0 audio-files="https\://..." 时,旧版 libmpv 无法解析 options 字符串参数,整个 loadfile 命令失败,视频和音频都无法加载。

错误信息:Command loadfile: argument index can't be parsed

根因 2:loadfile replace 会清除预设的 audio-files 属性

即使跳过 extras,提前通过 change-list audio-files set 预设的值也会在 loadfile replace 执行时被清除,导致音频流失效。

根因 3:change-list audio-files set <url> 中 URL 的 : 未转义

旧版 mpv 的选项值解析器将 : 作为 key-value 分隔符,https://... 被错误解析为:

  • key: https
  • value: //upos-sz-mirror08h.bilivideo.com/...(不完整路径)

错误信息:Cannot open file 'https': No such file or directory

相关文件

  • lib/plugin/pl_player/controller.dart_createVideoControllerrefreshPlayerstream.error 处理)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions