视频无法在某些设备上播放的原因是什么?

时间:2017-10-13 12:37:53

标签: android xamarin xamarin.android video-streaming samsung-galaxy

我正在制作一个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可以在浏览器中播放。

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

任何关于这可能出错的原因以及为什么大多数设备工作得很好?

2 个答案:

答案 0 :(得分:1)

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

  

ExoPlayer支持MediaPlayer不支持的动态自适应HTTP流传输(DASH),SmoothStreaming和Common Encryption等功能。它的设计易于定制和扩展。

来源:ExoPlayer

使用ExoPlayer我能够播放我之前可以播放的视频。

答案 1 :(得分:1)

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

关于来自Azure存储的流式传输,this blog post为我提供了一些非常有用的信息,因为如果我们尝试清理视频,我的Android应用会崩溃:

  1. 媒体内容类型已在媒体上正确设置。 mp4视频应该有一个mime类型的“video / mp4”
  2. 媒体文件本身可能是一个问题。 H.264 encoded files can sometimes have the index at the end of the file,表示在播放前必须下载整个文件。
  3. 如果您使用的是较旧的系统,则可能需要更新Azure存储版本view here。 x-ms-version标头应大于2012-02-12