Это странно, после часовых испытаний я до сих пор не могу понять это.
Хорошо, это то, что я собираюсь сделать: объединить два видео, то есть добавить один за другим.
Я снимаю два видео, а затем два URL-адреса. Затем я создал два AVURLAsset с помощью:
AVAssetTrack.duration короче AVURLAsset.duration
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
Video 1 всегда хорошо, в то время как видео 2: продолжительность продолжительность трека < актива.
Кстати, я использую GPUImageVideoCamera
и GPUImageMovieWriter
(Но я не думаю, что это важно, поскольку видео 1 всегда в порядке) для съемки видео и слияния.
Редактировать
Бог у меня есть еще один супер странное наблюдение:
Всякий раз, когда я снимаю видео, продолжительность трека всегда короче, чем стоимость актива. Однако, если я проверю его во второй раз, все будет в порядке ... Это ... Что мне делать в течение двух проверок? Я просто использовать AVPlayer
играть URL ...
Edit Опять
Ребята это супер супер странно !!! Я просто играю в URL, и мир становится лучше. Я не знаю, почему, но, по крайней мере, найти выход ... (Нет, этот способ иногда по-прежнему не работает ...)
Вы можете перебрать все треки в VIDEO2, чтобы увидеть, если есть другой (возможно, аудио) с большей продолжительностью по какой-то причине? Кроме того, какая из двух длительностей (4.73 или 3.09) вы считаете правильной? – kleezy
Я также проверил продолжительность звука, которая равна активу, который является правильным (более длинным). – DrustZ
Но я понятия не имею, почему это будет короче ... процесс почти такой же, за исключением того, что во второй раз я собираюсь объединить их ... – DrustZ