gpt4 book ai didi

修剪后的 ios 视频然后在非 ios 设备上播放音频/视频不同步

转载 作者:行者123 更新时间:2023-12-02 23:45:23 25 4
gpt4 key购买 nike

修剪视频,然后我将修剪的视频发送到 android 设备并播放,我发现音频/视频不同步,音频比视频晚几秒钟。但视频可以在 iOS 设备上正常播放。
1.我用这样的代码修剪视频:

 - (IBAction)showTrimmedVideo:(UIButton *)sender
{
[self deleteTmpFile];

NSURL *videoFileUrl = [NSURL fileURLWithPath:self.originalVideoPath];

AVAsset *anAsset = [[AVURLAsset alloc] initWithURL:videoFileUrl options:nil];
NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:anAsset];
if ([compatiblePresets containsObject:AVAssetExportPresetMediumQuality]) {

self.exportSession = [[AVAssetExportSession alloc]
initWithAsset:anAsset presetName:AVAssetExportPresetHighestQuality];
// Implementation continues.

NSURL *furl = [NSURL fileURLWithPath:self.tmpVideoPath];

self.exportSession.outputURL = furl;
self.exportSession.outputFileType = AVFileTypeMPEG4;

CMTime start = CMTimeMakeWithSeconds(self.startTime, anAsset.duration.timescale);
CMTime duration = CMTimeMakeWithSeconds(self.stopTime-self.startTime, anAsset.duration.timescale);
CMTimeRange range = CMTimeRangeMake(start, duration);
self.exportSession.timeRange = range;

self.trimBtn.hidden = YES;
self.myActivityIndicator.hidden = NO;
[self.myActivityIndicator startAnimating];
[self.exportSession exportAsynchronouslyWithCompletionHandler:^{

switch ([self.exportSession status]) {
case AVAssetExportSessionStatusFailed:
NSLog(@"Export failed: %@", [[self.exportSession error] localizedDescription]);
break;
case AVAssetExportSessionStatusCancelled:
NSLog(@"Export canceled");
break;
default:
NSLog(@"NONE");
dispatch_async(dispatch_get_main_queue(), ^{
[self.myActivityIndicator stopAnimating];
self.myActivityIndicator.hidden = YES;
self.trimBtn.hidden = NO;
[self playMovie:self.tmpVideoPath];
});
break;
}
}];
}
}

2.我将修剪后的视频发送到服务器,然后android设备从服务器获取视频,但他们发现音频/视频不同步,起初我认为服务器做错了,所以我只是用USB将视频发送到android设备,错误仍然存​​在。

3.所以我通过ffmpeg工具分析修剪后的视频:
ffmpeg -i trimVideo.mp4
然后我发现 trimVideo.mp4 start 是一个负数。
这是 ffmpeg 打印的内容:

元数据:
主要品牌:qt
次要版本:0
兼容品牌:qt
创建时间:2015-08-29 12:22:13
编码器:Lavf56.15.102
时长:00:02:21.77,开始:-4.692568,比特率:359 kb/s
流 #0:0(und):音频:aac (LC) (mp4a/0x6134706D),24000 Hz,立体声,fltp,69 kb/s(默认)
元数据:
创建时间:2015-08-29 12:22:13
handler_name : 核心媒体数据处理程序
流 #0:1(und):视频:h264(高)(avc1/0x31637661)、yuv420p、512x288 [SAR 1:1 DAR 16:9]、277 kb/s、15.16 fps、15.17 tbr、12136 tbn、30.34待定(默认)
元数据:
创建时间:2015-08-29 12:22:13
handler_name : 核心媒体数据处理程序
编码器:'avc1'

我已经被这个错误困扰了好几天了,我很抱歉我的英语不好,我真的需要你的帮助,谢谢。

最佳答案

好的,我终于找到了解决问题的方法。
我使用 SDAvassetExportSession 修剪视频,虽然结果视频长度有点长,但 A/V 可以在非 quicktime 播放器中同步。

关于修剪后的 ios 视频然后在非 ios 设备上播放音频/视频不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32287059/

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