1. 引言
我们知道多媒体的同步主要是为了能让多个流中具有相同时间戳(timestamp)的媒体资源在同一时刻被播放出来,比如播放电影时需要使得视频、音频同步的被播放出来,而不至于出现画面相对于声音超前或者落后的情况出现。
在Gstreamer中有一套同步机制,其所涉及到的内容包括buffer、segment、stream 以及 clock 。。。
2. Clock
GstClock 的时间精度为纳秒级,其时钟源的选择可以为系统时间、音频设备等。
GStPipline 会选择一个时钟源并分发到其他各个elements,GstClock 的值不必要从零开始。
3. Running time
Running time 是根据时钟计算出来的,也就是pipline出在PLAYING状态下的时间总和:
- 当pipline在NULL/READY转台下时,GstClock并没有被定义;
- 在PAUSED状态下,running time暂停计数;
- 在flushing seek操作之后,running time为0.
C.running_time = absolute_time - base_time
4. stream time
Stream time 可理解为在stream中的位置,其值介于零和媒体文件总长度之间。
stream time可以用于:
- 响应POSTION query;