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

前言

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

过程

(一)IOS官方库

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

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

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

              Pre-buffering for AVQueuePlayer

              Playing movies or videos in queue using AVQueuePlayer

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

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

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

[plain]  view plain copy

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

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

享下呀。

有看到这样一篇文章: 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