uni-app Android平台下video组件播放网络视频非常缓慢

发布于 1周前 作者 eggper 来自 Uni-App

uni-app Android平台下video组件播放网络视频非常缓慢

类别 信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 window 11
HBuilderX类型 正式
HBuilderX版本号 4.24
手机系统 Android
手机系统版本号 Android 12
手机厂商 iqoo
手机机型 iqoo Z1
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

在app内我使用了WiFi的直连方法(WifiNetworkSpecifier),连接了物联网设备的WiFi,并且绑定了network, connectivityManager.bindProcessToNetwork(network),播放一个该物联网设备下的视频(大小固定在170Mb),播放器加载的速度就非常的缓慢,大概是8s-15s左右;

预期结果:

预期想要达到2-3s,甚至更加快

实际结果:

实际是8-15s之间

bug描述:

在app内我使用了WiFi的直连方法(WifiNetworkSpecifier),连接了物联网设备的WiFi,并且绑定了network, connectivityManager.bindProcessToNetwork(network)

在以上的方式下,我选择播放一个该物联网设备下的视频(大小固定在170Mb),播放器加载的速度就非常的缓慢,大概是8s-15s左右;

此时我通过对比试验发现,如果我在设置页面打开WiFi,选择连接该物联网设备的WiFi,再回到app播放同样的视频,这个时候加载速度就会在2s左右,不会超过3s;

这个时候我怀疑是WiFi的连接方式导致的问题;

为此我做了对比是实验,通过以上两种方式进行视频资源的下载,对于下载速度,这两种方式是一样的;

这个证明了问题出现在播放器上,请问您这边是否能够有效的解决方案来解决这个问题?

ps:因为我是在物联网设备下的网络资源,我这边提供不了具体的网络链接。


1 回复

在uni-app中,如果遇到Android平台下video组件播放网络视频非常缓慢的问题,通常需要从多个角度进行优化和调整。以下是一些具体的代码案例和优化措施,旨在帮助你提升视频播放性能。

1. 使用H5播放器优化

在Android平台上,uni-app默认使用的是原生播放器。如果遇到性能问题,可以尝试切换到H5播放器,看看是否能改善播放效果。

<video
  id="video"
  src="https://example.com/video.mp4"
  controls
  autoplay
  x5-video-player-type="h5" <!-- 指定使用H5播放器 -->
  x5-video-player-fullscreen="true"
  webkit-playsinline="true"
  playsinline="true"
></video>

2. 缓存视频文件

对于频繁访问的视频文件,可以考虑在本地进行缓存,以减少网络延迟和提升播放速度。

// 假设你有一个用于缓存视频文件的函数
function cacheVideo(url) {
  uni.request({
    url: url,
    method: 'GET',
    responseType: 'arraybuffer',
    success: (res) => {
      const fs = uni.getFileSystemManager();
      const filePath = `${uni.env.USER_DATA_PATH}/video.mp4`;
      fs.writeFile({
        filePath,
        data: res.data,
        encoding: 'binary',
        success: () => {
          console.log('视频缓存成功');
        },
        fail: (err) => {
          console.error('视频缓存失败', err);
        },
      });
    },
    fail: (err) => {
      console.error('视频下载失败', err);
    },
  });
}

3. 优化网络请求

确保你的网络请求是高效的,可以使用CDN加速视频文件的分发。

4. 硬件加速

在AndroidManifest.xml文件中,确保你的应用启用了硬件加速。

<application
    android:hardwareAccelerated="true"
    ... >
    ...
</application>

5. 调整视频编码格式和分辨率

确保视频文件的编码格式和分辨率与设备兼容,避免因为格式不兼容或分辨率过高导致的播放缓慢。

6. 使用第三方视频插件

如果以上方法都无法解决问题,可以考虑使用第三方视频插件,这些插件可能提供了更高效的视频播放解决方案。

// 示例:安装并使用第三方视频插件(具体插件使用方式请参考插件文档)
const videoPlugin = require('path-to-video-plugin');
videoPlugin.playVideo('https://example.com/video.mp4');

请根据实际情况选择合适的优化措施,并测试其效果。如果问题依然存在,可能需要进一步分析网络状况、设备性能等因素。

回到顶部