(转)Android拍摄的视频无法在IOS播放

96
like_sunflower
2018.08.08 12:17 字数 819

https://blog.csdn.net/u012992171/article/details/50673305

公司最近的项目需要上线一个视频功能,在临近尾声的时候出现了一个比较坑爹的BUG,那就是开发Android的同事拍摄的视频上传到服务器之后,我这边用手机无法播放,而我自己拍摄的视频上传后是可以直接播放的。 我用浏览器访问了Android同事拍摄的视频的互联网
公司最近的项目需要上线一个视频功能,在临近尾声的时候出现了一个比较坑爹的BUG,那就是开发Android的同事拍摄的视频上传到服务器之后,我这边用手机无法播放,而我自己拍摄的视频上传后是可以直接播放的。

我用浏览器访问了Android同事拍摄的视频的互联网路径,在浏览器上是可以正常播放的,下载到本地,在Mac上用QuickTime也是正常播放,在此可以排除是文件损坏导致的问题。

我这边调试工程得到的错误信息如下:


image

是一个_itemFailedToPlayToEnd的KVO记录log,Google了这个错误,包括stackoverflow上给出的原因基本上都是视频URL有问题,不存在这个文件导致的,由于我已经检查过服务器上的文件,是可以正常访问并可以播放的,所以显然这个解决不了我的BUG。

在设置大量的MPMoviePlayerController的属性,问题依旧之后,我决定采用AVFoundation来自定义播放器来尝试播放这个视频,看看是不是由于IOS默认播放器对格式支持不全导致的。折腾了几个小时后,用AVFoundation写了个简单的视频播放器,将URL填了进去,发现仍然无法正常播放。

这时候我开始思考是不是视频本身的问题,我讲Android拍摄的视频文件,一个MP4文件通过QQ发送到我的iPhone之后,用QQ打开之后发现QQ直接卡住了,也是不能正常播放,这时候我已经确定一定是这个MP4文件和我这边拍摄的MP4肯定存在着格式上的不同。

于是我找到了一个MP4Info这款工具来分析两个MP4文件的不同,分析结果如下:
正常播放的MP4文件分析结果截图:

image

Android同事拍摄的问题MP4文件分析截图:

image

通过比较分析结果,发现无法播放的那个MP4文件的音频格式为SAMR,而我自己这边可以正常播放的音频格式为MP4A,我以这两个单词为关键字搜索了一下,找到了这篇文章

解决IOS无法播放3gp视频, 出现无法编码问题

在这边文章的帮助下,我让Android的同事将其录制视频时的音频编码设置为AAC之后,再重新拍摄并上传一个视频之后就能正常播放了。

swift学习
Gupao