AVAssetTrack.duration比AVURLAsset.duration短

时间:2015-12-18 15:39:34

标签: ios video avmutablecomposition

这很奇怪,下班后'测试我仍然无法弄明白。
好的,这就是我要做的事情:合并两个视频,即一个接一个地追加。
我拍了两个视频,然后有两个网址。然后我使用以下方法创建了两个AVURLAsset:

 AVURLAsset* video1 = [[AVURLAsset alloc]initWithURL:url1 options:options];
 AVURLAsset* video2 = [[AVURLAsset alloc]initWithURL:url2 options:options];

然后我得到相应的曲目:

AVAssetTrack *videoAsset1Track = [[video1 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
AVAssetTrack *videoAsset2Track = [[video2 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];

然后,我有几个CMTime要比较:

CMTime endtime1 = videoAsset1Track.timeRange.duration;
CMTime endtime2 = videoAsset2Track.timeRange.duration;
CMTime starttime1 = videoAsset1Track.timeRange.start;
CMTime starttime2 = videoAsset2Track.timeRange.start;

然后发生奇怪的事情。当我记录时:

NSLog(@"video 1 duration : %f , start : %f, end : %f ", CMTimeGetSeconds(video1.duration), CMTimeGetSeconds(starttime1), CMTimeGetSeconds(endtime1));
NSLog(@"video 2 duration : %f , start : %f, end : %f ", CMTimeGetSeconds(video2.duration), CMTimeGetSeconds(starttime2), CMTimeGetSeconds(endtime2));

始终伴随着: video 1 duration : 4.738333 , start : 0.000000, end : 4.738333 video 2 duration : 4.736871 , start : 0.000000, end : 3.090011 视频1总是好的,而视频2:跟踪的持续时间<1。资产的持续时间。

顺便说一下,我正在使用GPUImageVideoCameraGPUImageMovieWriter(但我认为重要的是视频1总是好的)拍摄视频并合并。< / p>

修改
上帝,我有另一个超级奇怪的观察:
每当我拍摄视频时,曲目的持续时间总是短于资产的持续时间。 但是,如果我第二次检查它,一切都会好的......那...... 在两次检查期间我该怎么办?我只是使用AVPlayer来播放网址...

再次编辑
伙计这超级超级怪异!!!我只是玩网址,世界变得更好。我不知道为什么,但至少找到出路......(不,这种方式有时候仍然不起作用......)

1 个答案:

答案 0 :(得分:0)

好的经过疲惫的调查后,我终于明白了。
它最终证明与GPUImageVideoCamera有关。任何使用该库的人都可能会注意:如果你只写[GPUImageMovieWriter finishRecording],那还不够(这意味着文件没有完成)。
你必须写[videoCamera stopCameraCapture]来关闭相机捕获,然后文件关闭并完成。

... WEIRD