gpt4 book ai didi

ios - 移动和修复手机 iOS 上录制的视频的 moov 原子

转载 作者:行者123 更新时间:2023-11-28 18:24:58 26 4
gpt4 key购买 nike

问题是您如何找到并移动 iOS 设备上记录的 .mov 文件的 moov 原子,以便您可以通过 http 流式传输它。有一种方法可以做到这一点,但这需要将其导出到文件,理论上这会让您复制整个文件,然后您就可以流式传输它。

还有其他方法吗?

最佳答案

  • 使用 iOS AV Foundation 框架和几行 Objective-C(你也可以从 MOV 转换为 MP4,因为 Android 无法读取 MOV):

    所以使用这个代码没有缓冲从 Live URL 播放流畅的视频它的作品但是在上传视频到你的服务器之前使用这个代码和转换您的视频并在上传后。所以视频就像播放视频一样没有任何负载的 snapchat。

    不要忘记将下面的框架添加到您的项目中。😊

#import <AVFoundation/AVAsset.h>
#import <AVFoundation/AVAssetExportSession.h>
#import <AVFoundation/AVMediaFormat.h>
+ (void) convertVideoToMP4AndFixMooV: (NSString*)filename toPath:(NSString*)outputPath {

NSURL *url = [NSURL fileURLWithPath:filename];
AVAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];
AVAssetExportSession *exportSession = [AVAssetExportSession
exportSessionWithAsset:avAsset
presetName:AVAssetExportPresetPassthrough];

exportSession.outputURL = [NSURL fileURLWithPath:outputPath];
exportSession.outputFileType = AVFileTypeAppleM4V;

// This should move the moov atom before the mdat atom,
// hence allow playback before the entire file is downloaded
exportSession.shouldOptimizeForNetworkUse = YES;

[exportSession exportAsynchronouslyWithCompletionHandler:
^{

if (AVAssetExportSessionStatusCompleted == exportSession.status) {}
else if (AVAssetExportSessionStatusFailed == exportSession.status) {
NSLog(@"AVAssetExportSessionStatusFailed");
}
else
{
NSLog(@"Export Session Status: %d", exportSession.status);
}
}];
}

关于ios - 移动和修复手机 iOS 上录制的视频的 moov 原子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095682/

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