当前位置: 首页 > 知识库问答 >
问题:

从iPod M4TS库读取原始数据时如何添加?

郜卓君
2023-03-14

客观的

阅读通过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头?

共有1个答案

南宫炜
2023-03-14

首先,您不需要trackOutput,它与您已经拥有的readerOutput相同。

更新我的错误,你完全正确。我以为通常的0xFFFsync单词是AAC的一部分,而不是ADT标题。因此,您必须在每个AAC数据包中添加一个ADTS报头,以将它们作为ADT或“AAC”流式传输。我认为你有两个选择:

>

  • 使用AudioFileInitializeWithCallbackskAudioFileAAC_ADTSType获取AudioFileAPI为您添加标题。您将AAC数据包写入音频文件ID,它将调用您的写回调,您可以在ADT中传输AAC。

    自己将标题添加到数据包中。它们只有7个字节(9个有校验和,但谁使用它们呢?)。这里和这里都有一些可读的实现

    无论哪种方式,您都需要调用CMSampleBufferGetAudioStreamPacketDescriptionsCMSampleBufferCallBlockForEachSampleCMSampleBufferRef获取单个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。有一个错误像