1.视频播放器原理
- 通过流媒体协议如RTSP+RTP、HTTP、MMS等下载的数据通过解协议获得封装格式数据,何为封装格式的数据。如AVI、MP4、FLV等;
- 对于封装格式的数据进行解封装,提取视频流、音频流、字幕流进行分离待下一步准备处理,
-分离后获得音视频文件编码文件(音视频文件过大需要进行压缩进行传输,即编码),常见的编码如H.264编码的视频码流和AAC编码的音频码流。压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。 - 视音频同步,视频流、音频流、字幕流等进行同步播放。
流媒体传输协议
一般点播采用HTTP ,而直播的话,大部分还是采用RTMP或者私有协议,原因是延时会比较小,RTMP本身也是为了直播设计的
- RSVP:资源预留协议
- RTP:实时传输协议
- RTCP:实时传输控制协议
- MMS:微软流媒体服务协议
- RTSP:实时流传输协议
- MIME:多目因特网电子邮件扩展协议
- RTMP(RTMPE/RTMPS/RTMPT):Adobe实时消息协议簇
- RTMFP:Adobe实施消息流协议(P2P协议)
- HLS(Http Live Streaming)
流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)
视频流传输协议RTP/RTCP/RTSP/HTTP的区别
封装格式
封装格式(也叫容器)主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。
常见格式
- 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:微软推出的,作为市场竞争。
4.编码标准
视频编码的主要作用是将视频像素数据(RGB、YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能要上百G的空间。
视频编码标准汇总及比较
5.播放方式
视频直播,是对视频源的实时的观看,不能快进等操作,注重实时性,对网络延迟要求比较高,相当于视频的广播
视频点播,是对以往的视频源进行回放,可以执行快进后退等操作
6.FFmpeg
官网介绍
博客地址
FFmpeg的基本概念
多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
FFmpeg的基本概念:
容器(container):就是文件格式,在FFMPEG中,用来抽象文件格式的容器就是AVFormatContext;
数据流(stream):数据流就是我们平时看到的多媒体数据流,它包含几种基本的数据流,包括:视频流、音频流、字幕流;按照我的理解,数据流在FFMPEG中的抽象为AVStream。
解复用器或者说分流器(demuxer):FFMPEG将要处理的多媒体文件看成多媒体数据流,先把多媒体数据流放入容器(AVFormatContext),然后将数据流送入解复用器(demuxer),demuxer在FFMPEG中的抽象为AVInputFormat,我更愿意把demuxer称为分流器,因为demuxer就是把交错的各种基本数据流识别然后分开处理,将分开的数据流分别送到视频、音频、字幕编解码器处理。
数据包(packet)当然分开的数据流在送往编解码器处理之前,要先放于缓存中,同时添加一些附属信息例如打上时间戳,以便后面处理,那么这个缓存空间就是数据包;由于数据流是在时间轴上交错放置,所以所有的视频、音频、字幕都被分割成一段一段的数据,这些一段段的数据从数据流中解析出来之后,就是存放在各自的packet,那么在这里要说明一下,单纯的视频数据包来说,一个视频数据包可以存放一个视频帧,对于单纯的音频帧来说,如果抽样率(sample-rate)是固定不变的,一个音频数据包可以存放几个音频帧,若是抽样率是可变的,则一个数据包就只能存放一个音频帧。
网友评论