音视频学习推荐

iOS系统自带播放器

1、MPMoviePlayerController

2、MPMoviePlayerViewController

3、AVPlayer

4、AVFoundation

视频播放器原理

1、通过流媒体协议如RTSP+RTP,HTTP,MMS等下载的数据通过解协议获得封装格式的数据。

(封装格式的数据是指如:AVI,MP4,FLV等)

2、对封装格式的数据进行解封装,提取音频流,视频流,字幕流进行分离待下一步处理

3、分离后获得音视频文件编码文件(音视频文件过大,需要进行压缩传输,即编码)常见的编码如:H.264编码的视频码流和AAC编码的音频码流。压缩编码的视频数据输出成为非压缩的颜色数据,如RGB;压缩编码的音频数据输出成为非压缩的音频抽样数据,如PCM数据

4、视音频同步,音频,视频,字母同步播放。

流媒体传输协议

RSVP:资源预留协议

RTP:实时传输协议

RTCP:实时传输控制协议

MMS:微软流媒体服务协议

RTSP:实时流传输协议

MIME:多目因特网电子邮件扩展协议

RTMP:adobe实时消息协议族

RTMFP:Adobe实施消息流协议(P2P协议)

封装格式

也叫容器,主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。

常见格式

AVI:微软在90年代初创立的封装标准,是当时为对抗quicktime格式(mov)而推出的,只能支持固定CBR恒定比特率编码的声音文件。

FLV:针对于h.263家族的格式。

MKV:万能封装器,有良好的兼容和跨平台性、纠错性,可带
外挂字幕。

MOV:MOV是Quicktime封装。

MP4:主要应用于mpeg4的封装

RM/RMVB:Real
Video,由RealNetworks开发的应用于rmvb和rm 。

TS/PS:PS封装只能在HDDVD原版。

WMV:微软推出的,作为市场竞争。

播放方式

视频直播,视频实时播放,不能进行快播,对网络延迟要求比较高

视频点播,可以播放以往的视频,进行快进或者后退等操作

FFmpeg

多媒体视频处理工具,功能非常强大包括视频的采集功能,视频格式转换,视频抓图,给视频加水印等

1、容器:就是文件格式,在FFmpeg中用来抽象文件格式的容器就是AVFormatContext

2、数据流:包含视频流,音频流,字幕流,在FFmpeg中指AVStream

3、解复用器或分流器:FFmpeg把要处理的多媒体文件看成多媒体数据流,先把多媒体数据流放入AVFormatContext,然后将数据流传入解复用器(在FFmpeg抽象为AVInputFormat),解复用器实际上就是把视频流,音频流,字幕流识别然后分开处理,把数据流分别送到视频,音频,字幕编解码器处理

4、数据包:分离的视频流在送往编解码器之前,要先放于缓存缓存中,同时添加一些附加信息,如时间戳。这个缓存空间就是数据包。由于数据流都是在时间轴上交错放置,所有的视频,音频,字幕都被分割成一段一段的数据,这些一段一段的数据从数据流中解析出来之后,就放到各自的数据包中(对于单纯的视频数据包来说,一个视频数据包可以存放一个视频帧,对于单纯的音频数据包来说,如果抽样率是固定的,一个音频数据包可以存放多个音频帧,如果是可变的,一个音频数据包只能存档一个音频帧)

三方库

Kxmovie

学习资料

流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) [http://blog.csdn.net/tttyd/article/details/12032357
视频流传输协议RTP/RTCP/RTSP/HTTP的区别 [http://blog.csdn.net/yangxt/article/details/7467457

视频编码标准汇总及比较 [http://blog.csdn.net/leixiaohua1020/article/details/12031631
视音频编解码技术零基础学习方法 [http://blog.csdn.net/leixiaohua1020/article/details/18893769

FFmpeg

[http://ffmpeg.org/doxygen/2.8/examples.html
官网介绍 [http://blog.csdn.net/leixiaohua1020/article/details/44084321
博客地址 [http://blog.csdn.net/beitiandijun/article/details/8280448
FFmpeg的基本概念

HTTP Live

Streaming直播(iOS直播)技术分析与实现:[http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html
HTT Live Streaming官方文档:[https://developer.apple.com/streaming/
FFmpeg深入分析之零-基础 [http://blog.chinaunix.net/uid-26611383-id-3976154.html
一篇大学论文,很长但是能让小白了解iOS流媒体都需要什么 [http://www.doc88.com/p-7098896030363.html
流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) [http://blog.csdn.net/tttyd/article/details/12032357
视频流传输协议RTP/RTCP/RTSP/HTTP的区别 [http://blog.csdn.net/yangxt/article/details/7467457
ffmpeg框架解读 [http://blog.csdn.net/allen_young_yang/article/details/6576303
流媒体博客 [http://blog.csdn.net/leixiaohua1020/article/details/15811977
[http://blog.csdn.net/beitiandijun/article/details/8280448
FFmpeg的基本概念视频编码标准汇总及比较 [http://blog.csdn.net/leixiaohua1020/article/details/12031631
视音频编解码技术零基础学习方法 [http://blog.csdn.net/leixiaohua1020/article/details/18893769

流媒体学习的基本步骤:

1.先学会使用系统的播放器进行视频播放

2.学会使用第三方Kxmovie

学会这两个,可以应付基本的视频开发

3.深入学习AVFoundation框架
我买的这本书 AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术 我还没看完

4.需要深入的话,需要多FFmpeg框架。当然需要先学习音视频开发的基础如RGB、YUV像素数据处理、PCM音频采样数据处理、H.264视频码流解析等等。

源文件

[http://www.cnblogs.com/booksky/p/5213198.html

你可能感兴趣的:(音视频学习推荐)