Gstreamer流

本文介绍了流媒体系统中数据流的基本组成,包括事件(如NEW_SEGMENT和EOS)、数据缓冲区等,并详细阐述了它们如何在流中传递及同步机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Streams
----------------------
    这篇文档描述在流线程中从一个元素传递到另一个元素的对象。

Stream objects 
~~~~~~~~~~~~~~
    如下的对象可能会出现在流线程中。
    - events
        - NEW_SEGMENT (NS)
        - EOS  (EOS)                  *
        - TAG               (T)
     - buffers              (B)          *
    *号标记的对象表示这些对象需要被同步到时钟。

Typical stream 
~~~~~~~~~~~~~~
    一个典型的流以一个标记了buffer有效时间范围的newsegment event开始,发送了newsegment event后,数据buffer就一个接一个被发送 ,最后一个buffer后,EOS标记了流的结束。在EOS event后,不会再有buffer被处理。如下图:
    +--+ +-++-+     +-+ +---+ 
    |NS| |B||B| ... |B| |EOS|
    +--+ +-++-+     +-+ +---+
    1)NEW_SEGMENT, rate, start/stop, time
     - start,stop标记了buffer的有效时间。
     - time标记了stream time.
     - rate标记了待请求的播放速率.
     - applied_rate标记了已经采用的播放速率.
    2) N buffers
     - displayable buffers 的时间戳应于start和stop之间,范围之外的buffer应该被丢弃。
     - running_time: 
         if (NS.rate > 0.0) 
            running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum 
         else 
             running_time = (NS.stop - B.timestamp) / NS.abs_rate + NS.accum
     - stream_time:
         stream_time = (B.timestamp - NS.start) * NS.abs_applied_rate + NS.time
         stream_time介于0和媒体长度之间.
  3) EOS
     - 标记数据的结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值