gpt4 book ai didi

ios - AVAssetTrack.duration 比 AVURLAsset.duration 短

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:19 25 4
gpt4 key购买 nike

这很奇怪,经过数小时的测试我仍然无法弄清楚。
好的,这就是我要做的:合并两个视频,也就是一个接一个地追加。
我拍摄了两个视频,然后有两个网址。然后我使用以下方法创建了两个 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));

它总是带有 :
视频 1 持续时间:4.738333,开始:0.000000,结束:4.738333
视频 2 持续时间:4.736871,开始:0.000000,结束:3.090011
视频 1 始终正常,而视频 2:轨道的持续时间 < Assets 的持续时间。

顺便说一下,我正在使用 GPUImageVideoCameraGPUImageMovieWriter(但我认为这不重要,因为视频 1 总是可以的)拍摄视频并合并.


编辑
天哪,我还有另一个 super 奇怪的观察结果:
每当我拍摄视频时,轨道的持续时间总是比 Assets 的短。但是,如果我第二次检查它,一切都会好的......那是......在两次检查期间我应该做什么?我只是使用 AVPlayer 来播放 url...


再次编辑
伙计们,这太奇怪了!!!我只是播放 url,世界变得更美好。我不知道为什么,但至少找到了一条出路...(不,这种方式有时仍然行不通...)

最佳答案

好的,经过一番调查,我终于明白了。
最终证明与GPUImageVideoCamera有关。而同样在使用该库的人可能会注意:如果只写[GPUImageMovieWriter finishRecording],是不够的(也就是说,文件没有完成)。
您必须编写 [videoCamera stopCameraCapture] 来关闭相机捕获,然后文件关闭并完成。

奇怪...

关于ios - AVAssetTrack.duration 比 AVURLAsset.duration 短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34359119/

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