如何设置数据源以进行实时流数据提取

时间:2019-07-15 07:36:10

标签: android android-ndk

我有一个函数,可以获取RTP数据包的有效载荷及其长度。调用此函数后,我将数据推入队列,并在该函数内执行以下操作(使用NdkMediaExtractor.cpp实现),

AMediaDataSource *poMediaDataSource = AMediaDataSource_new();
AMediaDataSource_setUserdata(poMediaDataSource, userData);
AMediaDataSource_setReadAt(poMediaDataSource, setReadAt);
AMediaDataSource_setGetSize(poMediaDataSource, setGetSize);
media_status_t status = AMediaExtractor_setDataSourceCustom(poExtractor, poMediaDataSource);

setReadAt(void *userData, off64_t offset, void *buffer, size_t size)回调实现中,我从队列中弹出数据。但是我不了解setReadAt()函数的工作原理。请帮助我了解MediaExtractor_setDataSourceCustom()及其回调。

我尝试将100个RTP数据包有效负载写入一个文件(即,仅缓冲100帧用于测试目的),并使用AMediaExtractor_setDataSourceFd()成功提取了数据。

对于AMediaExtractor_setDataSourceCustom()方法,我将5帧插入队列,然后致电AMediaExtractor_setDataSourceCustom()。我很困惑setReadAt()回调的工作原理。

我希望可以设置数据源,并且需要从媒体提取器成功提取数据。

非常感谢您。

0 个答案:

没有答案