IOS视频播放器开发系列(二)——前期尝试或探索
前言
由于没有实现过此类需求功能,即为边学习边尝试的过程,此部分作简要记录,以便以后回头查看。
过程
(一)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