问题描述
在我的 Xamarin.Forms.Android 应用中,我尝试播放使用 azure 媒体服务编码的 HLS 视频。
这在调试模式下有效。 但是当我在 release 模式下运行时,我看到以下问题:
- 视频似乎已加载,并开始播放(滑块移动)但屏幕保持黑色。 由于我的视频没有音频,我不确定音频是否有效。
我试图通过将我的 android 项目链接器设置从“仅 Sdk 程序集”设置为“无”来修复发布模式,这似乎解决了问题,将其推送到连接的设备时播放在发布模式下工作。
要在调试模式下重现问题,我必须同时进行
然后我看到了以下输出:
[VLC] [00000074f8240e90/4256] libvlc 窗口:AndroidNativeWindow jni 初始化失败 [VLC] [00000074f8240e90/4256] libvlc 窗口:InitJNIFields 失败 [VLC] [00000075175fdc90/4258] libvlc vout 显示:父窗口不可用 [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 窗口:AndroidNativeWindow jni 初始化失败 [VLC] [00000074f8241750/4259] libvlc 窗口:InitJNIFields 失败 [VLC] [000000751fe4ba90/4260] libvlc vout 显示:父窗口不可用 [VLC] [0000007517212f90/4259] libvlc 视频输出:视频输出创建失败 [VLC] [00000075001e6890/4259] libvlc 解码器:无法创建视频输出 [VLC] [00000074fcef7590/425a] libvlc 窗口:AndroidNativeWindow jni 初始化失败 [VLC] [00000074fcef7590/425a] libvlc 窗口:InitJNIFields 失败 [VLC] [00000075175fe890/4261] libvlc vout 显示:父窗口不可用
这使我得出结论,链接器删除了一些代码,vlc 媒体播放器需要这些代码来播放我的流。然而,文档没有说明修复链接器需要什么。
我正在使用
- Windows 10
- Visual Studio 16.9.0
- LibVLCSharp.Forms v3.4.9 在我的 XF android 和主 XF 项目中
- 我的 XF android 项目中的 VideoLAN.LibVLC.Android v3.2.0
在搜索错误代码时,我遇到了这个问题 https://code.videolan.org/videolan/LibVLCSharp/-/issues/255,它似乎解决了这个问题。如果这解决了问题,将发布更新
解决方法
是的,解决方案如问题中所述:
- 将文件添加到名为“r8.cfg”的 Xamarin.Android 应用根目录
- 在属性中将构建操作设置为“ProguardConfiguration”。
- 在此文件中添加行:
type Transform<T extends Record<keyof T,(...args: any) => any>> = {
[P in keyof T]: ReturnType<T[P]>
};
type User = Transform<typeof user>
/* type User = {
id: number;
name: string;
} */