大佬教程收集整理的这篇文章主要介绍了如何在Swift中流式传输MP3网址(iOS)?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
audio.scheduleFile(NSBundle.mainBundle().URLForresource(“Moon River”,withExtension:“mp3”)!)
它将正确播放本地文件.现在我希望能够流式传输非本地网址.
我需要做什么才能让我流式传输MP3网址?
class Audio: NSObject { var graph: AUGraph var filePlayerAU: AudioUnit var filePlayerNode: AUNode var outputAU: AudioUnit var filEID: AudioFilEID var currentFrame: Int64 override init () { graph = AUGraph() filePlayerAU = AudioUnit() filePlayerNode = AUNode() outputAU = AudioUnit() filEID = AudioFilEID() currentFrame = 0 super.init() NewAUGraph(&graph) // Add file player node var cd = AudioComponentDescription(componentType: OSType(kAudioUnitType_Generator),componentSubType: OSType(kAudioUnitSubType_AudioFilePlayer),componentManufacturer: OSType(kAudioUnitManufacturer_ApplE),componentFlags: 0,componentFlagsmask: 0) AUGraphAddNode(graph,&cd,&filePlayerNodE) // Add output node var outputNode = AUNode() cd.componentType = OSType(kAudioUnitType_Output) cd.componentSubType = OSType(kAudioUnitSubType_RemoteIO) AUGraphAddNode(graph,&outputNodE) // Graph must be opened before we can get node info! AUGraphOpen(graph) AUGraphNodeInfo(graph,filePlayerNode,nil,&filePlayerAU) AUGraphNodeInfo(graph,outputNode,&outputAU) AUGraphConnectNodeInput(graph,0) AUGraphInitialize(graph) registerCallBACkForAU(filePlayerAU,nil) } func scheduleFile(url: NSURL) { AudioFiLeopenURL(url,1,&filEID) // Step 1: schedule the file(s) // kAudioUnitProperty_scheduledFilEIDs takes an array of AudioFilEIDs var filesToschedule = [filEID] AudioUnitSetProperty(filePlayerAU,AudioUnitPropertyID(kAudioUnitProperty_scheduledFilEIDs),AudioUnitScope(kAudioUnitScope_Global),filesToschedule,UInt32(sizeof(AudioFilEID))) } func scheduleRegion() { // Step 2: schedule the regions of the file(s) to play // Swift forces us to fill out the structs completely,even if they are not used let smpteTime = SMPTETime(mSubframes: 0,mSubframeDivisor: 0,mCounter: 0,mType: 0,mFlags: 0,mHours: 0,mminutes: 0,mSeconds: 0,mFrames: 0) var timestamp = Audiotimestamp(mSampleTime: 0,mHostTime: 0,mRateScalar: 0,mWordClockTime: 0,mSMPTETime: smpteTime,mFlags: UInt32(kAudiotimestampSampleTimeValid),mReserved: 0) var region = scheduledAudioFileRegion() region.mtimestamp = timestamp region.mCompletionProc = nil region.mCompletionProcUserData = nil region.mAudioFile = filEID region.mLoopCount = 0 region.mStartFrame = currentFrame region.mFramesToPlay = UInt32.max AudioUnitSetProperty(filePlayerAU,AudioUnitPropertyID(kAudioUnitProperty_scheduledFileRegion),®ion,UInt32(sizeof(scheduledAudioFileRegion))) // Step 3: Prime the file player var primeFrames: UInt32 = 0 AudioUnitSetProperty(filePlayerAU,AudioUnitPropertyID(kAudioUnitProperty_scheduledFilePrimE),&primeFrames,UInt32(sizeof(UInt32))) // Step 4: schedule the start time (-1 = Now) timestamp.mSampleTime = -1 AudioUnitSetProperty(filePlayerAU,AudioUnitPropertyID(kAudioUnitProperty_scheduleStarttimestamp),×tamp,UInt32(sizeof(Audiotimestamp))) } }
以上是大佬教程为你收集整理的如何在Swift中流式传输MP3网址(iOS)?全部内容,希望文章能够帮你解决如何在Swift中流式传输MP3网址(iOS)?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。