客观的
阅读通过Avassetrader从iTunes商店购买的m4a
文件。通过HTTP
传输,并被MobileVLCKit
使用。
我所尝试的
据我所知,AVAssetReader
只生成音频原始数据,所以我想我应该在每个样本前面添加ADTS标头。
NSError *error = nil;
AVAssetReader* reader = [[AVAssetReader alloc] initWithAsset:asset error:&error];
if (error != nil) {
NSLog(@"%@", [error localizedDescription]);
return -1;
}
AVAssetTrack* track = [asset.tracks objectAtIndex:0];
AVAssetReaderTrackOutput *readerOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:track
outputSettings:nil];
[reader addOutput:readerOutput];
[reader startReading];
while (reader.status == AVAssetReaderStatusReading){
AVAssetReaderTrackOutput * trackOutput = (AVAssetReaderTrackOutput *)[reader.outputs objectAtIndex:0];
CMSampleBufferRef sampleBufferRef;
@synchronized(self) {
sampleBufferRef = [trackOutput copyNextSampleBuffer];
}
CMItemCount = CMSampleBufferGetNumSamples(sampleBufferRef);
...
}
所以,我的问题是,如何循环每个样本并添加ADTS头?
首先,您不需要trackOutput
,它与您已经拥有的readerOutput
相同。
更新我的错误,你完全正确。我以为通常的0xFFF
sync单词是AAC的一部分,而不是ADT标题。因此,您必须在每个AAC数据包中添加一个ADTS报头,以将它们作为ADT或“AAC”流式传输。我认为你有两个选择:
>
使用AudioFileInitializeWithCallbacks
kAudioFileAAC_ADTSType
获取AudioFile
API为您添加标题。您将AAC数据包写入音频文件ID
,它将调用您的写回调,您可以在ADT中传输AAC。
自己将标题添加到数据包中。它们只有7个字节(9个有校验和,但谁使用它们呢?)。这里和这里都有一些可读的实现
无论哪种方式,您都需要调用CMSampleBufferGetAudioStreamPacketDescriptions
或CMSampleBufferCallBlockForEachSample
从CMSampleBufferRef
获取单个AAC数据包。
介绍 有时候,浏览器会通过post发送很多数据。在webpy,你可以这样操作。 代码 class RequestHandler(object): def POST(self): data = web.data() # 通过这个方法可以取到数据
我正在尝试读取我的Flutter应用程序中的firebase实时数据库中的数据,并将其分配给模型类,但是,我在控制台中得到了以下错误。 下面是我到目前为止所做的代码 员工类别 我不知道我做错了什么,请帮我解决这个问题
如何从设备读取RAW数据?
我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据
我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(
我正在集成cxf webservices,没有spring,消息是签名的。作为一个指南,我已经使用了本教程CXF安全性。我想在数据库中存储x509证书或密钥库。 我已经重写了WSS4JOUTInterceptor.LoadCryptoFromPropertiesFile方法。 但是这里有几个问题: 1。有一个错误像