iOS|iOS AVPlayer和MP无法播放MP4格式的问题
最近在处理视频和音频,要保证安卓和苹果端互相兼容,之前这方面接触的并不是很多,现在处理起来也是整天查东查西不停地爬坑。昨天遇到的是苹果的播放器播放不了它本应该支持的格式。
这个问题也包括其它的格式,比如3gp、avi等。我在使用AVPlayer播放安卓端上传的MP4文件时无法打开,只能读取到文件信息(比如时长)。
这个问题就要考虑到视频生成时的编码格式了。我们知道一个视频可以看做是画面和音频和合成,画面的生成对应着编码格式,同样音频的也对应着它的编码格式。就拿MP4这个格式来说,安卓端在生成mp4文件时的配置如下:
文章图片
92715D2EB0A3AD2835C65F668B934BAC.png
文章图片
CF8FA8006D04F0EE7CD1896BD9CA3DBA.png 可以看到在画面上他可能用到H264或者MPEG4,在音频上他可能用到如图所示的那么多种类,这就导致了虽然最后生成的文件是MP4格式,但实际上只是很多种MP4格式的其中之一,。苹果的视频播放器虽然写着支持MP4,但很可能它只是支持某一种编码的视频格式,并不是所有的都支持,所以播放不出来。
最后解决的方式是:安卓端在处理音频编码时选择AAC格式(之前是AMR,苹果的播放器并不能播放AMR,导致整个视频无法播放)。
【iOS|iOS AVPlayer和MP无法播放MP4格式的问题】但是数据库里面还是存留着之前AMR编码格式的音频。。。所以我就开始看ffmpeg。。。这个对小白来说真的很头大,不过还好现在已经可以进行格式转化了,同时也处理了一些BUG,等有空了记录下。但我觉得在手机端进行格式转化真的非常不好,我在测试的时候发现手机运行内存明显升高,手机发热,转化效率超级低(10秒的3gp转mov大概需要10秒)。。。所以尽量从源头设置好编码格式让两端都能支持。
推荐阅读
- idea之Recompile、Rebuild和Build之间的区别及说明
- 一文详解Pinia和Vuex与两个Vue状态管理模式
- 构建和谐家庭
- iOS学习笔记02-UIScrollView
- 就从Java8开始吧(二)lambda表达式和方法引用
- 「装逼」和「伪知识分子」才不是一丘之貉
- Reactor 之 onErrorContinue 和 onErrorResume
- FOC相关|FOC项目知识点总结一 | 概念扫盲——从有刷直流电机到PMSM和BLDC
- 5年50万理财本金小目标,送给未来的宝贝和我自己~
- 笔若的诗|女人和果实(经典三行诗71-80_朦胧诗_总8辑/10集)