SampleSource

SampleSource 可能会导出一个或多个tacks。通过SampleSourceReader.getFormat(int) 可以查询每个track的媒体格式;通过SampleSoureReader.getTraceCount() 可以获得track 的数量。
它只有一个成员函数:

public SampleSourceReader register();
处理samples的对象应该调用这个函数,用这个函数返回SampleSourceReader 访问这个source。

SampleSource这个接口有一个子接口,是SampleSourceReader 。
这个接口的主要方法有:

public boolean prepare(long positionUs);
准备Source。这个准备操作可能会从数据源请求数据(比如确定可用的tracks 和 formats)。如果没有足够的数据可用,这个接口返回false,而不是阻塞。这个方法可以重复调用,直到返回成功。 参数表示播放器当前播放的位置。

public int getTrackCount();
返回这个source导出的tracks数。

public MediaFormat getFormat(int track);
返回指定track的媒体格式。

public void enable (int track, long positionUs)
Enable 指定的track。这行这一步操作后才能调用readData(int, long, MediaFormatHolder, SampleHolder) 方法读取track的格式个样本数据。这个方法只能在source准备完成, 并且指定的track已被禁用后调用

public boolean continueBuffering(int track, long positionUs);
这个方法告诉source,应该为指定的track继续缓存数据。

public int readData(int track, long positionUs, MediaFormatHolder formatHolder,
SampleHolder sampleHolder);
尝试从这个Source中读取一个样本数据或新的媒体格式。这个方法只能在指定的track的状态处于enabled状态时调用。注意,在多个tracks同时处于enabled状态下时,如果将要读取的下一片数据不属于这个方法的参数指定的track而是属于其他track那么这个方法将会返回NOTHING_READ

public void seekToUs(long positionUs);
跳转到指定的位置。至少有一个track可用时才能调用这个方法。

public long getBufferedPositionUs();
获取已缓冲时长。至少有一个track可用时才能调用这个方法。

public void disable(int track);
禁用指定的track

public void release();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值