我发现的第一个问题第一种方法:
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:URL];
AVAsset *asset = [item asset];
[asset loadValuesAsynchronouslyForKeys:@[@"tracks"] completionHandler:^{
if ([asset statusOfValueForKey:@"tracks" error:nil] == AVKeyValueStatusLoaded) {
NSArray *videoTracks = [asset tracksWithMediaType:AVMediaTypeVideo];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
//VIDEO
//videoOutput is a AVPlayerItemVideoOutput * property
[item addOutput:self.videoOutput];
//AUDIO
AVMutableAudioMixInputParameters *inputParams = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:[audioTracks objectAtIndex:0]];
MTAudioProcessingTapCallbacks callbacks;
callbacks.version = kMTAudioProcessingTapCallbacksVersion_0;
callbacks.clientInfo = (__bridge void *)self,
callbacks.init = tap_InitCallback;
callbacks.finalize = tap_FinalizeCallback;
callbacks.prepare = tap_PrepareCallback;
callbacks.unprepare = tap_UnprepareCallback;
callbacks.process = tap_ProcessCallback;
MTAudioProcessingTapRef tap;
OSStatus err = MTAudioProcessingTapCreate(kCFAllocatorDefault, &callbacks,
kMTAudioProcessingTapCreationFlag_PostEffects, &tap);
inputParams.audioTapProcessor = tap;
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
audioMix.inputParameters = @[inputParams];
item.audioMix = audioMix;
}];
然后创建CADisplayLink
的回调,这将回调displayPixelBuffer
:在每一个垂直同步。
self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCallback:)];
[[self displayLink] addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[self displayLink] setPaused:YES];
,在这种方法得到pixelBuffer并发送至输出 音频,做用AURenderCallbackStruct
在准备回调类似的任务。
嘿@Bisca,你有详细的代码如何使RTMP连接吗?我正尝试从Assets视频生活在Facebook上。 – AJit
@AJit我没有一个例子...你可以尝试使用VideoCore(https://github.com/jgh-/VideoCore-Inactive)或者lf(https://github.com/shogo4405/HaishinKit.swift )或另一个实现来做到这一点,并使用这个像素作为源pixelBuffer – Bisca
感谢@Bisca快速重放,我已经实现了VideoCore,但它支持CameraSource只有ATM,我不是很好用C++编程来调整源,所以如果你可以帮助这里吗? 这是我采取的参考:https://github.com/kciter/FBLiveAPISample-iOS – AJit