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

来源:互联网 发布:软件设计师 好考吗 编辑:程序博客网 时间:2024/05/16 07:59

因工作问题,最近需要做到一个视频录制能在Android和IOS两个平台上播放,而Android已经把录制视屏的格式设置为3gp,(这样文件比较小适合流量小的传输)

那我们IOS这边也支持3gp吧

apple的官方文档上是支持3gp格式的视频文件的,但大多数人都发现真正播放的时候会出现 "cannot decode"(无法解码)


这意思是说你的3gp编解码格式不对,才不能播放的,那解决办法就是按照appple 的编码格式来录制视频就能播放了

那apple需要什么编码呢,看文档

Supported Formats

This class plays any movie or audio file supported in iOS. This includes both streamed content and fixed-length files. For movie files, this typically means files with the extensions.mov,.mp4, .mpv, and.3gp and using one of the following compression standards:

  • H.264 Baseline Profile Level 3.0 video, up to 640 x 480 at 30 fps. (The Baseline profile does not support B frames.)
  • MPEG-4 Part 2 video (Simple Profile)

If you use this class to play audio files, it displays a white screen with a QuickTime logo while the audio plays. For audio files, this class supports AAC-LC audio at up to 48 kHz, and MP3 (MPEG-1 Audio Layer 3) up to 48 kHz, stereo audio.


这就是说你的视频编码是h264的,每秒30帧(这里是支持到640x480 我用320x240也是没有问题的)


如果以上你做到了,你会发现……!!!还是播放不了的~~~

重点来了

你的音频编码格式可能不是AAC-LC的!

我不能不吐槽下了,录制视频跟音频有毛关系,但后来一想,也是,录制视频的时候其实音频也是录制的如果音频格式不是用AAC编码而是用AMR什么的编码,他仍然是播放不了的

至此,把录制视频时候的音频参数改为AAC-lc 你的3gp视频就可以播放了



另外普及下知识

3gp 和 H264 什么关系?还有什么MP4什么的什么意思

3gp和mp4都是container,就是文件格式,那什么是文件格式呢,举个例子,你有一张白纸,上面打上横向一条条的格,就是一种格式暂且叫他3gp吧,同样一张白纸,所有格子都是竖向的,那这是另外一种格式叫mp4,现在,看看你的纸,横向格子一般都是横向的写字,就像现在外面卖的笔记本(不是笔记本电脑~)一样,而竖向格子的,更像是过去的竹简方式的写字,他写字的方式书竖向的,这种不同打格子的方式就是不同的格式,3gp一种格式 mp4一种格式 avi又是另一种格式,不同的格子写出来的字存储信息量不一样,速度也不一样

h264是一种编码方式,上面说了3gp既然已经做好了格子,那我们就该写字了,但是你写什么字呢?汉字?英语?阿拉伯语?还是摩斯电码? 对于计算机来说,要想存储大量的数据就是需要一种把文字,转换为一个符号的方法,这样一页纸原本只能写100个汉字的内容,如果用英语写,可能是150个,摩斯电码可能是300个

h264就是其中一种编码格式,他把其中一些信息按照规定的方式编码成一个文件,等到播放时,在按照这个方式去解码,这样就可以播放了

例如,我们要发送下面的文字

“今晚你有空吗,我们一起去吃饭吧”

这几个文字如果我们定义一个密语为 jw,那么我们实际发送的信息内容就是jw

而对方收到jw后,按照解码方式解码,解完后的意思就是

“今晚你有空吗,我们一起去吃饭吧”


这样做的好处就是省去了空间,原本14个汉字要表达的意思,结果jw 2个英文就表达了,如果还想说点什么,可以在jw后接着写编码……




如何看视频的编码格式

最简单的方法是找到3gp文件,用KMplayer 打开,播放的时候右键-媒体信息,你就能看到视频和音频的编码格式了

下面是我的3gp视频编码格式

AVC就是H264,你会发现我的音频编码是AVC的,这也就是为什么我之前无法播放视频的原因

 General
      Format : AVC  
      Duration : 1974
   Video #1
      ID : 1
      Format : AVC
      Format/Info : Advanced Video Codec
      Format profile : Baseline@L3.0
      Format settings, CABAC : No
      Format settings, ReFrames : 1 frame
      Codec ID : avc1
      Codec ID/Info : Advanced Video Coding
      Duration : 1s 901ms
      Source duration : 1s 974ms
      Bit rate : 196 Kbps
      Width : 320 pixels
      Height : 240 pixels
      Display aspect ratio : 4:3
      Frame rate mode : Variable
      Frame rate : 28.880 fps
      Minimum frame rate : 9.376 fps
      Maximum frame rate : 32.514 fps
      Color space : YUV
      Chroma subsampling : 4:2:0
      Bit depth : 8 bits
      Scan type : Progressive
      Bits/(Pixel*Frame) : 0.089
      Stream size : 45.7 KiB (85%)
      Source stream size : 47.1 KiB (88%)
      Title : VideoHandle
      Language : English
      mdhd_Duration : 1901
   Audio #2
      ID : 1
      Format : AVC
      Format/Info : Advanced Video Codec
      Format profile : Baseline@L3.0
      Stream size : 8 bits
      Language : 45.7 KiB







0 0
原创粉丝点击