问题:
在每次播放期间,音频都在视频后1-2秒.
设置:
资产从媒体流加载AVURLAssets.
为了编写合成,我使用了具有不对称时间尺度的AVMutableCompositions和AVMutableCompositionTracks.音频和视频都流式传输到设备.音频的时间刻度是44100; 视频的时间刻度是600.
使用AVPlayer完成播放.
尝试的解决方案:
videoAssetTrack.timeRange了[composition insertTimeRange].CMTimeRangeMake(kCMTimeZero, videoAssetTrack.duration);CMTimeRangeMake(kCMTimeZero, videoAssetTrack.timeRange.duration);代码:
+(AVMutableComposition*)overlayAudio:(AVURLAsset*)audioAsset
withVideo:(AVURLAsset*)videoAsset
{
AVMutableComposition* mixComposition = [AVMutableComposition composition];
AVAssetTrack* audioTrack = [self getTrackFromAsset:audioAsset withMediaType:AVMediaTypeAudio];
AVAssetTrack* videoTrack = [self getTrackFromAsset:videoAsset withMediaType:AVMediaTypeVideo];
CMTime duration = videoTrack.timeRange.duration;
AVMutableCompositionTrack* audioComposition = [self composeTrack:audioTrack withComposition:mixComposition andDuration:duration andMedia:AVMediaTypeAudio];
AVMutableCompositionTrack* videoComposition = [self composeTrack:videoTrack withComposition:mixComposition andDuration:duration andMedia:AVMediaTypeVideo];
[self makeAssertionAgainstAudio:audioComposition andVideo:videoComposition];
return mixComposition;
}
+(AVAssetTrack*)getTrackFromAsset:(AVURLAsset*)asset withMediaType:(NSString*)mediaType
{
return [[asset tracksWithMediaType:mediaType] objectAtIndex:0];
}
+(AVAssetExportSession*)configureExportSessionWithAsset:(AVMutableComposition*)composition toUrl:(NSURL*)url
{
AVAssetExportSession* exportSession …Run Code Online (Sandbox Code Playgroud)