0

我正在开发一个 Xamarin 应用程序,该应用程序允许用户创建具有 4 种不同内容类型 [文本、图像、声音、视频] 的消息。

在将视频添加到混音之前,一切正常。

正在发送文件并将其存储在 blob 数据库中。它适用于我们的大多数设备,例如:

  • LG Nexus 5 (???)
  • LG Nexus 5X (8.0)
  • 三星 Galaxy S3 Neo (4.4.2)

但不知何故,它不适用于我们的三星 Galaxy S7 (7.0) 和三星 Galaxy S4 (???)。

在第一台设备上,我可以制作/选择视频并将它们发送到服务器,它们将可以在所有其他设备(甚至 SGS7 和 SGS4)上的 Android VideoView 中播放。视频是使用外部相机应用程序制作的。

当我使用 SGS7/SGS4 制作/选择视频时,视频可以在预览中播放。但是在它们被发送到服务器并且您尝试阅读消息后,视频将不会在任何设备上播放(甚至不是制作它们的设备)。但是视频确实存在,因为它的 URL 可以在浏览器中播放。

我一整天都在调试,没有什么特别的。发送文件时我没有收到任何错误。

关于这可能出错的地方以及为什么大多数设备工作正常的任何想法?

4

2 回答 2

1

ExoPlayer 可能是您最好的选择。Xamarin.Forms MediaPlayer 插件也使用它。

关于从 Azure 存储流式传输,这篇博文为我提供了一些非常有用的信息,因为如果我们尝试清理视频,我的 Android 应用程序将会崩溃:

  1. 在媒体上正确设置了媒体内容类型。mp4 视频的 mime 类型应为“video/mp4”
  2. 媒体文件本身可能是一个问题。H.264 编码文件有时会在文件末尾有索引,这意味着在播放之前必须下载整个文件。
  3. 如果您使用的是旧系统,则可能需要更新此处的 Azure 存储版本视图。x-ms-version 标头应大于 2012-02-12
于 2017-10-16T13:54:03.600 回答
1

使用默认的 MediaPlayer 有一些限制:

ExoPlayer 支持基于 HTTP 的动态自适应流 (DASH)、SmoothStreaming 和通用加密等功能,MediaPlayer 不支持这些功能。它的设计易于定制和扩展。

资料来源:ExoPlayer

使用 ExoPlayer,我可以播放以前可以播放的视频。

于 2017-10-16T12:57:52.107 回答