gpt4 book ai didi

ios - 使用 ASIHTTPRequest 将 .caf 发送到服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:59 26 4
gpt4 key购买 nike

我正在使用 AVAssetReader 创建一个可以在我的计算机上本地播放的 .caf 文件。但是,当我尝试将 .caf 上传到服务器时,无法再读取上传的文件。这是我的代码:

NSLog(@"Posting to server");
NSURL *serverURL = [NSURL URLWithString:serverString];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:serverURL];
[request setRequestMethod:@"POST"];
[request setData:songData
withFileName:@"exported.caf"
andContentType:@"audio/x-caf"
forKey:@"musicfile"];
[request setDelegate:self];
[request startAsynchronous];

有趣的是,当我执行以下操作时,生成的文件可以在我的计算机上运行:

NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"test.caf"];
[songData writeToFile:storePath atomically:NO];

我是否必须将某种类型的 header 附加到 musicData 才能正确格式化 .caf?

最佳答案

这里有一些故障排除说明来确定问题:

  1. 确保您在服务器上播放歌曲时使用的音频阅读器应用程序与您在本地播放时使用的完全相同(即消除服务器音频应用程序具有适当的解码器来读取 的可能性) .caf 文件。您可以通过尝试在远程服务器上播放原始文件(即不是您自己创建的,已证明有效的).caf 文件来轻松解决该问题。

  2. 每当您遇到无法确定原因的问题时.. 然后退后一步并使用第一原则。在这种情况下.. 下载像 hexfiend 这样的十六进制编辑器并将您在本地获得的可以读取的文件与服务器上的文件进行比较。如果您发现值有任何差异,则意味着这些值在传输过程中被弄乱了。这是因为整个 big endian/small endian 网络传输 issue (你可以找到关于 big/small endian 意味着什么的很好的讨论 here ,你通过使用类似 CFSwapInt16BigToHost 等的函数来解决这个问题(用作示例......它可能不是你最终必须使用的那个) .

  3. 您正在使用 ASIHTTPRequest API.. 它是 CFNetwork API 的包装器。它声明的目的是让您的生活更轻松,但在这种情况下,如果隐藏在幕后的东西太多(即您无法轻松调试问题),则该目的将不再实现。如果是这样,我建议您跳得更深并使用 CFNetwork API直接地。 (这并不难,而且绝对更容易调试)。

关于ios - 使用 ASIHTTPRequest 将 .caf 发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com