Xamarin.Forms.Android 发布模式黑屏播放链接设置为 "SDK assemblies only" 的 HLS 视频
Xamarin.Forms.Android black screen in release mode playing back HLS video with linking set to "SDK assemblies only"
在我的 Xamarin.Forms.Android 应用程序中,我正在尝试播放使用 azure 媒体服务编码的 HLS 视频。
这适用于调试模式。
但是当我在 release 模式下 运行 时,我看到以下问题:
- 视频似乎确实加载了,并且开始播放(滑块移动)但屏幕仍然黑屏。
由于我的视频没有音频,我不确定音频是否有效。
我试图通过将我的 android 项目链接器设置从“仅 Sdk 程序集”设置为“none”来修复发布模式,这似乎可以解决问题,当播放在发布模式下工作时将其推送到连接的设备。
要在调试模式下重现问题,我必须同时进行
- 将链接器设置为“仅限 SDK 程序集”
- 将代码收缩器设置为 r8
然后我看到了以下输出:
[VLC] [00000074f8240e90/4256] libvlc window: AndroidNativeWindow jni 初始化失败
[VLC] [00000074f8240e90/4256] libvlc window: InitJNIFields 失败
[VLC] [00000075175fdc90/4258] libvlc vout 显示:父 window 不可用
[VLC] [00000074f385e990/4256] libvlc 视频输出:视频输出创建失败
[VLC] [00000074edff459003-04 13:35:46.832 E/VLC (15716): [00000075001e6890/4256] libvlc 解码器:无法创建视频输出
[VLC] [00000075001e6890/4256] libvlc 解码器:不透明 Vout 请求失败
[VLC] [00000074f8241750/4259] libvlc window: AndroidNativeWindow jni 初始化失败
[VLC] [00000074f8241750/4259] libvlc window: InitJNIFields 失败
[VLC] [000000751fe4ba90/4260] libvlc vout 显示:父 window 不可用
[VLC] [0000007517212f90/4259] libvlc 视频输出:视频输出创建失败
[VLC] [00000075001e6890/4259] libvlc 解码器:无法创建视频输出
[VLC] [00000074fcef7590/425a] libvlc window: AndroidNativeWindow jni 初始化失败
[VLC] [00000074fcef7590/425a] libvlc window: InitJNIFields 失败
[VLC] [00000075175fe890/4261] libvlc vout 显示:父级 window 不可用
这使我得出结论,链接器剥离了 vlc 媒体播放器播放我的流所需的代码。但是文档没有说明修复链接器需要什么。
我正在使用
- Windows 10
- Visual studio 16.9.0
- LibVLCSharp.Forms 我的 XF android 和主 XF 项目中的 v3.4.9
- VideoLAN.LibVLC.Android 我的 XF android 项目中的 v3.2.0
在搜索错误代码时,我遇到了这个问题 https://code.videolan.org/videolan/LibVLCSharp/-/issues/255,这似乎可以解决问题。如果这解决了问题,post 会更新吗
是的,解决方案如问题中所述:
- Add a file to your Xamarin.Android app root named "r8.cfg"
- in the properties set Build Action to "ProguardConfiguration".
- In this file add lines:
-keep class org.videolan.** { *; }
-dontwarn org.videolan.**
在我的 Xamarin.Forms.Android 应用程序中,我正在尝试播放使用 azure 媒体服务编码的 HLS 视频。
这适用于调试模式。 但是当我在 release 模式下 运行 时,我看到以下问题:
- 视频似乎确实加载了,并且开始播放(滑块移动)但屏幕仍然黑屏。 由于我的视频没有音频,我不确定音频是否有效。
我试图通过将我的 android 项目链接器设置从“仅 Sdk 程序集”设置为“none”来修复发布模式,这似乎可以解决问题,当播放在发布模式下工作时将其推送到连接的设备。
要在调试模式下重现问题,我必须同时进行
- 将链接器设置为“仅限 SDK 程序集”
- 将代码收缩器设置为 r8
然后我看到了以下输出:
[VLC] [00000074f8240e90/4256] libvlc window: AndroidNativeWindow jni 初始化失败 [VLC] [00000074f8240e90/4256] libvlc window: InitJNIFields 失败 [VLC] [00000075175fdc90/4258] libvlc vout 显示:父 window 不可用 [VLC] [00000074f385e990/4256] libvlc 视频输出:视频输出创建失败 [VLC] [00000074edff459003-04 13:35:46.832 E/VLC (15716): [00000075001e6890/4256] libvlc 解码器:无法创建视频输出 [VLC] [00000075001e6890/4256] libvlc 解码器:不透明 Vout 请求失败 [VLC] [00000074f8241750/4259] libvlc window: AndroidNativeWindow jni 初始化失败 [VLC] [00000074f8241750/4259] libvlc window: InitJNIFields 失败 [VLC] [000000751fe4ba90/4260] libvlc vout 显示:父 window 不可用 [VLC] [0000007517212f90/4259] libvlc 视频输出:视频输出创建失败 [VLC] [00000075001e6890/4259] libvlc 解码器:无法创建视频输出 [VLC] [00000074fcef7590/425a] libvlc window: AndroidNativeWindow jni 初始化失败 [VLC] [00000074fcef7590/425a] libvlc window: InitJNIFields 失败 [VLC] [00000075175fe890/4261] libvlc vout 显示:父级 window 不可用
这使我得出结论,链接器剥离了 vlc 媒体播放器播放我的流所需的代码。但是文档没有说明修复链接器需要什么。
我正在使用
- Windows 10
- Visual studio 16.9.0
- LibVLCSharp.Forms 我的 XF android 和主 XF 项目中的 v3.4.9
- VideoLAN.LibVLC.Android 我的 XF android 项目中的 v3.2.0
在搜索错误代码时,我遇到了这个问题 https://code.videolan.org/videolan/LibVLCSharp/-/issues/255,这似乎可以解决问题。如果这解决了问题,post 会更新吗
是的,解决方案如问题中所述:
- Add a file to your Xamarin.Android app root named "r8.cfg"
- in the properties set Build Action to "ProguardConfiguration".
- In this file add lines:
-keep class org.videolan.** { *; }
-dontwarn org.videolan.**