我使用avfoundation从我的设备录制视频,然后使用imagepicker从图库中选择视频,然后将其上传到本地服务器。 每当我从服务器获取上传的视频时,它都不会通过使用mpmovieplayer播放,但如果我存储了.mov格式的其他视频,它将播放得很好。有时我的视频也播放得很好。 我的问题是: - 这是因为视频的帧率 - 或者这是因为流媒体问题?
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:outputFileURL])
{
[library writeVideoAtPathToSavedPhotosAlbum:outputFileURL
completionBlock:^(NSURL *assetURL, NSError *error)
{
if (error && [delegate respondsToSelector:@selector(assetLibraryError:forURL:)]) {
[delegate assetLibraryError:error forURL:assetURL];
}
}];
} else {
if ([delegate respondsToSelector:@selector(cannotWriteToAssetLibrary)])
{
[delegate cannotWriteToAssetLibrary];
}
}
[[NSUserDefaults standardUserDefaults] setObject:outputFileURL forKey:@"StoreVideo"];
[library release];
if ([[UIDevice currentDevice] isMultitaskingSupported]) {
[[UIApplication sharedApplication] endBackgroundTask:[self backgroundRecordingID]];
}
if ([delegate respondsToSelector:@selector(recordingFinished)]) {
[delegate recordingFinished];
}
以上是我在录制后用于在资产库中保存视频的代码。
答案 0 :(得分:1)
为了从服务器流式传输视频并使用MPMoviePlayer播放,需要使用mediafilesegmenter工具对文件进行分段。我不确定这是否与Snow Leopard一起提供,但由于这些工具经常根据Apple更新,因此您应该下载最新版本。有关如何获取这些工具的详细信息,请参阅Technical Note TN2224。
这个想法是将文件分成小段,比如每个10秒,以方便流式传输。该工具将创建一个m3u8扩展名的播放列表。此文件的URL是您需要提供给MPMoviePlayer的URL。
即使您没有进行实时流式传输,您仍然需要对视频进行分段,否则它可能会在某些iOS版本的某些iOS设备上播放,但不能保证。