IOS视频播放器开发系列(二)——前期尝试或探索

前言


由于没有实现过此类需求功能,即为边学习边尝试的过程,此部分作简要记录,以便以后回头查看。



过程

(一)IOS官方库


两个分片延迟太大,使用的是AVFoundation下的AVplayer


方式是两个播放器实例进行切换,已对进行切换的分片进行了预加载,尝试过网络上的一些类似功能资源,均以失败告终


如: AVPlayer – looping video without “hiccup”/delays


              Pre-buffering for AVQueuePlayer


              Playing movies or videos in queue using AVQueuePlayer



当然我并不是说这些朋友些方法有什么问题,只是无法解决我所遇到问题,把这些贴在这里,也就是记录下这些问题的解


决方法,或许以后遇到以上这些问题时可以查阅下。



在探索过程中,有看到苹果的CoreMedia这个框架,其中官方描述有这样一个说法:


he Core Media framework provides a low-level C interface for managing and and playing audio-visual media in your iOS application.

说明根据该框架亦可以播放器,我猜测通过此C级别的皆可应该可以满足我的这个需求,但无奈自己技术还有限,无法通


过此框架来实现,需要继续学习,网络搜索后也未发现有类似的实现或讲解。如有朋友有实现或有相关资源,还请不啬共


享下呀。


有看到这样一篇文章: Decode video using CoreMedia.framework on iOS;这里面也有提到。



(二)FFMpeg


考虑IOS提供的库解决,另一个想法是针对H264编码的视频是可以实现硬件解码的。


然而事与愿违呀,所以就采用FFmpeg来解码并实现。



一开始寄希望于第三方基于FFmpeg的播放器或媒体库实现了包含mp4的m3u8的平滑播放,所以我对一些三方开源的项目


进行了编译,查看效果。


VLC:此库应该大家都熟悉,但很惭愧IOS版本编译出了点错,我未作相应的处理


mplayer以及mplayer2:


XBMC:这里我想说说这一个很强大的媒体播放中心,其实播放器只是它内部功能的一小部分。它的核心播放器库DVDPlayer


                是基于多种编解码库的实现,也对FFmpeg进行封装。针对该开源项目的编译就是使用内部的ios.readme文件而来


                的,编译成功。


                测试播放包含mp4的m3u8,可以正常播放第一个分片,但是,但是在第一分片完成后直接退出了播放。额,很是


                郁闷(说明:在AVplayer或者IOS系统播放器播放包含mp4的m3u8,会把mp4识别为音频,可以连续播放音频,


                无画面显示)。



尝试完后,亦没有解决方法。所以又开始回到老办法,基于FFmpeg的两个播放器实例进行切换,在此先不作FFmpeg编译


以及内部实现的介绍。



说明


对整个前期尝试作了简单记录。


以下是一些知识了解的链接:


HTTP Streaming Architecture


HTTP Live Streaming draft-pantos-http-live-streaming-06


Developing_XBMC_for_iOS