流媒体 :采用流式传输方式在网上播放的媒体格式
ffmpeg 不提供Server架构
ES流 :原始流 ,直接从编码器出来的数据流 里面的数据都是图像信息 、没有时间和包头信息
PES流:ES形成的分组称为PES分组,是用来传递ES一种数据布局 比ES多了时间戳信息 ,标识什么时候编码什么时候播放
TS流: PES形成的分组称为TS分组,是用来传递PES的一种数据布局 加了一些包头和flag值
没有ffmpeg
1.建立链接
2.读取数据
3.解数据包
4.封装格式
RTSP :实时流传输协议 是TCP/IP协议体系中的一个应用层协议
//rtsp 伪代码 没有ffmpeg 过程
while(true)
{
switch(command)
if(option)
return ALLFunctions;
if(describe)
return stop;
if(setup)
create session;
if(play)
start push data;
if(teardown)
close session;
}
//Rtsp Client
void GetDataFormCamera()
{
SendGetOptionMsg();
SendGetDiscribeMsg();
SendSetuoMsg();
SendPlayMsg();
while(true)
{
ReadPacketFromSocket();
}
}
//解数据包和封装
while(true)
{
GetOrignalDataFromRTP();
AddNewHeadToOrignalData();
WriteDataToFile();
}
//有了ffmpeg
1.avformat_open_input
2.avformat_find_stream_info//查找流信息
3.av_read_frame
4.av_write_frame