FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp). 顾名思义,前者是解码的时间,后者是显示的时间.要仔细理解这两个概念,需要先了解FFmpeg中的packet和frame的概念. FFmpeg中用AVPacket结构体来描述解码前或编码后的压缩包,用AVFrame结构体来描述解码后或编码前的信号帧. 对于视频来说,AVFrame就是视频的一帧图像.这帧图像什么时候显示给用户,就取决于它的PTS.DTS是AVPa…
一.引言 MPEG-2系统用于视音频同步以及系统时钟恢复的时间标签分别在ES,PES和TS这3个层次中.在ES层,与同步有关的主要是视频缓冲验证VBV(Video Buffer Verifier),用以防止解码器的缓冲器出现上溢或者下溢:在PES层,主要是在PES头信息里出现的显示时间标签PTS(Presentation Time Stamp)和解码时间标签DTS(Decoding Time Stamp):在TS层中,TS头信息包含了节目时钟参考PCR(Program Clock Referen…
之前上传了一个开源播放器工程ffplay for mfc.它将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下,并且使用MFC做了一套界面.它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出.此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等:以及一些码流分析功能:视频解码分析和音频解码分析. 详细的软件使用就不仔细介绍了,本文简单介绍其中比较重要的模块的流程.以防长时间不看的话忘了~ 软件信息:…
1. SrsHls::on_video /* * mux the video packets to ts. * @param shared_video, directly ptr, copy it if need to save it. * @param is_sps_pps, whether the video is h.264 sps/pps. */ int SrsHls::on_video(SrsSharedPtrMessage* shared_video, bool is_sps_pps…