乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      iPhone OS音頻視頻編程指南

       求知665 2014-10-07
       控制回放音量

      音頻隊(duì)列對(duì)象為您提供兩種控制回放音量的方法。

      您可以通過(guò)調(diào)用AudioQueueSetParameter函數(shù)并傳入kAudioQueueParam_Volume參數(shù)來(lái)直接設(shè)置回放的音量,如程序清單7-8所示,音量的變化會(huì)立即生效。

      程序清單7-8  直接設(shè)置回放的音量

      Float32 volume = 1;    // linear scale, range from 0.0 through 1.0 
      AudioQueueSetParameter ( 
          myAQstruct.audioQueueObject, 
          kAudioQueueParam_Volume, 
          volume 
      ); 

      您還可以通過(guò)AudioQueueEnqueueBufferWithParameters函數(shù)來(lái)設(shè)置音頻隊(duì)列緩沖區(qū)的回放音量。這個(gè)函數(shù)可以指定音頻隊(duì)列緩沖區(qū)進(jìn)入隊(duì)列時(shí)攜帶的音頻隊(duì)列設(shè)置。通過(guò)這個(gè)函數(shù)做出的改變?cè)谝纛l隊(duì)列緩沖區(qū)開始播放的時(shí)候生效。

      在上述的兩種情況下,對(duì)音頻隊(duì)列的音量所做的修改都會(huì)一直保持下來(lái),直到再次被改變。

      指示回放音量

      您可以通過(guò)下面的方式得到音頻隊(duì)列對(duì)象的當(dāng)前回放音量:

      1. 啟用音頻隊(duì)列對(duì)象的音量計(jì),具體方法是將其kAudioQueueProperty_EnableLevelMetering屬性設(shè)置為true。

      2. 查詢音頻隊(duì)列對(duì)象的kAudioQueueProperty_CurrentLevelMeter屬性。

      這個(gè)屬性的值是一個(gè)AudioQueueLevelMeterState結(jié)構(gòu)的數(shù)組,每個(gè)聲道都有一個(gè)相對(duì)應(yīng)的結(jié)構(gòu)。程序清單7-9顯示了這個(gè)結(jié)構(gòu)的內(nèi)容:

      程序清單7-9  AudioQueueLevelMeterState結(jié)構(gòu)

      typedef struct AudioQueueLevelMeterState { 
          Float32     mAveragePower; 
          Float32     mPeakPower; 
      };  AudioQueueLevelMeterState; 
      同時(shí)播放多路聲音

      為了同時(shí)播放多路聲音,需要為每路聲音創(chuàng)建一個(gè)回放音頻隊(duì)列對(duì)象,并對(duì)每個(gè)音頻隊(duì)列調(diào)用 AudioQueueEnqueueBufferWithParameters函數(shù),將第一個(gè)音頻緩沖區(qū)排入隊(duì)列,使之開始播放。

      在基于iPhone OS的設(shè)備中同時(shí)播放聲音時(shí),音頻格式是很關(guān)鍵的。如果要同時(shí)播放,您需要使用線性PCM (無(wú)壓縮) 音頻格式或特定的有壓縮音頻格式,具體描述請(qǐng)參見“音頻回放和錄制格式”部分。

      使用OpenAL播放和定位聲音

      開源的OpenAL音頻API位于iPhone OS系統(tǒng)的OpenAL框架中,它提供了一個(gè)優(yōu)化接口,用于定位正在回放的立體聲場(chǎng)中的聲音。使用OpenAL進(jìn)行聲音的播放、定位、和移動(dòng)是很簡(jiǎn)單的—其工作方式和其它平臺(tái)一樣。此外,OpenAL還可以進(jìn)行混音。OpenAL使用Core Audio的I/O單元進(jìn)行回放,從而使延遲最低。

      由于所有的這些原因,OpenAL是iPhone OS設(shè)備中游戲程序的最好選擇。當(dāng)然,OpenAL也是一般的iPhone OS應(yīng)用程序進(jìn)行音頻播放的良好選擇。

      iPhone OS對(duì)OpenAL 1.1的支持是構(gòu)建在Core Audio之上的。更多的信息請(qǐng)參見iPhone OS系統(tǒng)的OpenAL FAQ。如果需要有關(guān)OpenAL的文檔,請(qǐng)參見http://的OpenAL網(wǎng)站;如果需要演示如何播放OpenAL音頻的示例程序,請(qǐng)參見oalTouch。

      錄制音頻

      在iPhone OS系統(tǒng)上,可以通過(guò)AVAudioRecorder類和音頻隊(duì)列服務(wù)來(lái)進(jìn)行音頻錄制,而Core Audio則為其提供底層的支持。這些接口所做的工作包括連接音頻硬件、管理內(nèi)存、以及在需要時(shí)使用編解碼器。您可以錄制“音頻的回放和錄制格式”部分列出的所有格式的音頻。

      本部分將介紹如何通過(guò)AVAudioRecorder類和音頻隊(duì)列服務(wù)在iPhone OS系統(tǒng)上錄制音頻。

      通過(guò)AVAudioRecorder類進(jìn)行錄制

      iPhone OS上最簡(jiǎn)單的錄音方法是使用AVAudioRecorder類,類的具體描述請(qǐng)參見AVAudioRecorder類參考。該類提供了一個(gè)高度精簡(jiǎn)的Objective-C接口。通過(guò)這個(gè)接口,您可以輕松實(shí)現(xiàn)諸如暫停/重啟錄音這樣的功能,以及處理音頻中斷。同時(shí),您還可以對(duì)錄制格式保持完全的控制。

      進(jìn)行錄制時(shí),您需要提供一個(gè)聲音文件的URL、建立音頻會(huì)話、以及配置錄音對(duì)象。進(jìn)行這些準(zhǔn)備工作的一個(gè)良好時(shí)機(jī)就是應(yīng)用程序啟動(dòng)的時(shí)候,如程序清單7-10所示。諸如soundFileURLrecording這樣的變量都在類接口文件中進(jìn)行聲明。

      程序清單7-10  建立音頻會(huì)話和聲音文件的URL

      - (void) viewDidLoad { 
        
          [super viewDidLoad]; 
        
          NSString *tempDir = NSTemporaryDirectory (); 
          NSString *soundFilePath = [tempDir stringByAppendingString: @"sound.caf"]; 
        
          NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; 
          self.soundFileURL = newURL; 
          [newURL release]; 
        
          AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
          audioSession.delegate = self; 
          [audioSession setActive: YES error: nil]; 
        
          recording = NO; 
          playing = NO; 
      } 

      您需要在接口聲明中加入AVAudioSessionDelegate、AVAudioRecorderDelegateAVAudioPlayerDelegate(如果同時(shí)支持聲音回放的話)協(xié)議。

      然后,就可以實(shí)現(xiàn)如程序清單7-11所示的錄制方法。

      程序清單7-11  一個(gè)基于AVAudioRecorder類的錄制/停止方法

      -(IBAction) recordOrStop: (id) sender { 
        
          if (recording) { 
        
              [soundRecorder stop]; 
              recording = NO; 
              self.soundRecorder = nil; 
        
              [recordOrStopButton setTitle: @"Record" forState: UIControlStateNormal]; 
              [recordOrStopButton setTitle: @"Record" forState: UIControlStateHighlighted]; 
        
              [[AVAudioSession sharedInstance] setActive: NO error: nil]; 
        
          } else { 
        
              [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryRecord error: nil]; 
        
              NSDictionary *recordSettings = 
                  [[NSDictionary alloc] initWithObjectsAndKeys: 
                      [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey, 
                      [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey, 
                      [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey, 
                      [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey, 
                  nil]; 
        
              AVAudioRecorder *newRecorder = [[AVAudioRecorder alloc] initWithURL: soundFileURL 
                                                                         settings: recordSettings 
                                                                            error: nil]; 
              [recordSettings release]; 
              self.soundRecorder = newRecorder; 
              [newRecorder release]; 
        
              soundRecorder.delegate = self; 
              [soundRecorder prepareToRecord]; 
              [soundRecorder record]; 
              [recordOrStopButton setTitle: @"Stop" forState: UIControlStateNormal]; 
              [recordOrStopButton setTitle: @"Stop" forState: UIControlStateHighlighted]; 
        
              recording = YES; 
          } 
      } 

      有關(guān)AVAudioRecorder類的更多信息,請(qǐng)參見AVAudioRecorder類參考。

      用音頻隊(duì)列服務(wù)進(jìn)行錄制

      用音頻隊(duì)列服務(wù)進(jìn)行錄制時(shí),您的應(yīng)用程序需要配置音頻會(huì)話、實(shí)例化一個(gè)錄音音頻隊(duì)列對(duì)象,并為其提供一個(gè)回調(diào)函數(shù)。回調(diào)函數(shù)負(fù)責(zé)將音頻數(shù)據(jù)存入內(nèi)存以備隨時(shí)使用,或者寫入文件進(jìn)行長(zhǎng)期存儲(chǔ)。

      聲音的錄制發(fā)生在iPhone OS的系統(tǒng)定義級(jí)別(system-defined level)。系統(tǒng)會(huì)從用戶選擇的音頻源取得輸入—比如內(nèi)置的麥克風(fēng)、耳機(jī)麥克風(fēng)(如果連接到iPhone上的話)、或者其它輸入源。

      和聲音的回放一樣,您可以通過(guò)查詢音頻隊(duì)列對(duì)象的kAudioQueueProperty_CurrentLevelMeter屬性來(lái)取得當(dāng)前的錄制音量,具體描述請(qǐng)見“指示回放音量”部分。

      有關(guān)如何通過(guò)音頻隊(duì)列服務(wù)錄制音頻的詳細(xì)實(shí)例,請(qǐng)參見音頻隊(duì)列服務(wù)編程指南錄制音頻部分,實(shí)例代碼則請(qǐng)見iPhone Dev Center網(wǎng)站上的SpeakHere。

      解析音頻流

      為了播放音頻流內(nèi)容,比如來(lái)自網(wǎng)絡(luò)連接的音頻流,可以結(jié)合使用音頻文件流服務(wù)和音頻隊(duì)列服務(wù)。音頻文件流服務(wù)負(fù)責(zé)從常見的、采用網(wǎng)絡(luò)位流格式的音頻文件容器中解析出音頻數(shù)據(jù)和元數(shù)據(jù)。您也可以用它來(lái)解析磁盤文件中的數(shù)據(jù)包和元數(shù)據(jù)。

      iPhone OS可以解析的音頻文件和位流格式和Mac OS X相同,具體如下:

      • MPEG-1 Audio Layer 3,用于.mp3文件

      • MPEG-2 ADTS,用于.aac音頻數(shù)據(jù)格式

      • AIFC

      • AIFF

      • CAF

      • MPEG-4,用于.m4a、.mp4、和.3gp文件

      • NeXT

      • WAVE

      在取得音頻數(shù)據(jù)包之后,您就可以以任何iPhone OS系統(tǒng)支持的格式進(jìn)行播放,這些格式在“音頻回放和錄制格式”部分中列出。

      為了獲得最好的性能,處理網(wǎng)絡(luò)音頻流的應(yīng)用程序應(yīng)該僅使用來(lái)自Wi-Fi連接的數(shù)據(jù)。您可以通過(guò)iPhone OS提供的System Configuration框架及其SCNetworkReachability.h頭文件定義的接口來(lái)確定什么網(wǎng)絡(luò)是可到達(dá)和可用的。如果需要實(shí)例代碼,請(qǐng)參見iPhone Dev Center網(wǎng)站的Reachability工程。

      為了連接網(wǎng)絡(luò)音頻流,可以使用iPhone OS系統(tǒng)中的Core Foundation框架中的接口,比如CFHTTPMesaage接口,具體描述請(qǐng)見CFHTTPMessage參考。通過(guò)音頻文件流服務(wù)解析網(wǎng)絡(luò)數(shù)據(jù)包,將它恢復(fù)為音頻數(shù)據(jù)包,然后放入緩沖區(qū),發(fā)送給負(fù)責(zé)回放的音頻隊(duì)列對(duì)象。

      音頻文件流服務(wù)依賴于音頻文件服務(wù)定義的接口,比如AudioFramePacketTranslation結(jié)構(gòu)和AudioFilePacketTableInfo結(jié)構(gòu),具體描述請(qǐng)見音頻文件服務(wù)參考。

      有關(guān)如何使用流的更多信息,請(qǐng)參見音頻文件流服務(wù)參考。實(shí)例代碼則請(qǐng)參見位于<Xcode>/Examples/CoreAudio/Services/目錄下的AudioFileStream例子工程,其中<Xcode>是開發(fā)工具所在的目錄。

      iPhone OS系統(tǒng)上的音頻單元支持

      iPhone OS提供一組音頻插件,稱為音頻單元,可以用于所有的應(yīng)用程序。您可以通過(guò)Audio Unit框架提供的接口來(lái)打開、連接、和使用音頻單元;還可以定義定制的音頻單元,在自己的應(yīng)用程序內(nèi)部使用。由于應(yīng)用程序必須靜態(tài)連接定制的音頻單元,所以iPhone OS系統(tǒng)上的其它應(yīng)用程序不能使用您開發(fā)的音頻單元。

      表7-3列出了iPhone OS提供的音頻單元。

      表7-3  系統(tǒng)提供的音頻單元

      音頻單元

      描述

      轉(zhuǎn)換器單元

      轉(zhuǎn)換器單元,類型為kAudioUnitSubType_AUConverter,用于音頻數(shù)據(jù)的格式轉(zhuǎn)換。

      iPod均衡器單元

      iPod EQ單元,類型為kAudioUnitSubType_AUiPodEQ,提供一個(gè)簡(jiǎn)單的、基于預(yù)設(shè)的均衡器,可以在應(yīng)用程序中使用。

      3D混音器單元

      3D混音器單元,類型為kAudioUnitSubType_AU3DMixerEmbedded,用于混合多個(gè)音頻流,指定立體聲輸出移動(dòng),操作采樣率,等等。

      多通道混音器單元

      多通道混音器單元,類型為kAudioUnitSubType_MultiChannelMixer,用于將多個(gè)音頻流混合成為單一的音頻流。

      一般輸出單元

      一般輸出單元,類型為kAudioUnitSubType_GenericOutput,支持和線性PCM格式互相轉(zhuǎn)換,可以用于開始或結(jié)束一個(gè)音頻單元圖。

      I/O單元

      I/O單元,類型為kAudioUnitSubType_RemoteIO,用于連接音頻輸入和輸入硬件,支持實(shí)時(shí)I/O。如何使用音頻單元的實(shí)例代碼請(qǐng)見aurioTouch工程。

      語(yǔ)音處理I/O單元

      語(yǔ)音處理I/O單元,類型為kAudioUnitSubType_VoiceProcessingIO,具有I/O單元的特征,同時(shí)為了支持雙向交流,加入了回響抑制功能。

      有關(guān)系統(tǒng)音頻單元的更多信息,請(qǐng)參見系統(tǒng)音頻單元訪問(wèn)指南。

      iPhone音頻的最佳實(shí)踐

      操作音頻的貼士

      在操作iPhone OS系統(tǒng)上的音頻內(nèi)容時(shí),您需要記住表7-4列出的基本貼士。

      表7-4  音頻貼士

      貼士

      動(dòng)作

      正確地使用壓縮音頻

      對(duì)于AAC、MP3、和ALAC (Apple Lossless) 音頻,解碼過(guò)程是由硬件來(lái)完成的,雖然比較有效,但同時(shí)只能解碼一個(gè)音頻流。如果您需要同時(shí)播放多路聲音,請(qǐng)使用IMA4 (壓縮) 或者線性PCM (無(wú)壓縮) 格式來(lái)存儲(chǔ)那些文件。

      將音頻轉(zhuǎn)換為您需要的數(shù)據(jù)格式和文件格式

      Mac OS X的afconvert工具可以進(jìn)行很多數(shù)據(jù)格式和文件類型的轉(zhuǎn)換。請(qǐng)參見“iPhone OS偏好的音頻格式” 部分和afconvert工具的手冊(cè)頁(yè)面。

      評(píng)價(jià)音頻的內(nèi)存使用問(wèn)題

      當(dāng)您使用音頻隊(duì)列服務(wù)播放音頻時(shí),需要編寫一個(gè)回調(diào)函數(shù),負(fù)責(zé)將較短的音頻數(shù)據(jù)片斷發(fā)送到音頻隊(duì)列的緩沖區(qū)。在某些情況下,將整個(gè)音頻文件載入內(nèi)存是最佳 的選擇,這樣可以使播放時(shí)的磁盤訪問(wèn)盡最少;而在另外一些情況下,最好的方法則是每次只載入足夠填滿緩沖區(qū)的數(shù)據(jù)。請(qǐng)測(cè)試和評(píng)價(jià)哪種策略對(duì)您的應(yīng)用程序最 好。

      限制音頻的采樣率和位深度,減少音頻文件的尺寸

      采樣率和每個(gè)樣本的位深度對(duì)無(wú)壓縮音頻的尺寸有直接的影響。如果您需要播放很多這樣的聲音,則應(yīng)該考慮降低這些指標(biāo),以減少音頻數(shù)據(jù)的內(nèi)存開銷。舉例來(lái) 說(shuō),相對(duì)于使用采樣率為44.1 kHz的音頻作為聲音效果, 您可以使用采樣率為32 kHz(或可能更低)的音頻,仍然可以得到很合理的品質(zhì)。

      選擇恰當(dāng)?shù)募夹g(shù)

      使用Core Audio的系統(tǒng)聲音服務(wù)來(lái)播放警告和用戶界面聲音效果。當(dāng)您希望使用便利的高級(jí)接口來(lái)定位立體聲場(chǎng)中的聲音,或者要求很低的回放延遲時(shí),則應(yīng)該使用 OpenAL。如果需要從文件或網(wǎng)絡(luò)數(shù)據(jù)流中解析出音頻數(shù)據(jù),可以使用音頻文件服務(wù)接口。如果只是簡(jiǎn)單回放一路或多路聲音,則應(yīng)該使用AVAudioPlayer類。對(duì)于具有其它音頻功能的應(yīng)用程序,包括音頻流的回放和音頻錄制,可以使用音頻隊(duì)列服務(wù)。

      低延遲編碼

      如果需要盡可能低的回放延遲,可以使用OpenAL,或者直接使用I/O單元。

      iPhone OS偏好的音頻格式

      對(duì)于無(wú)壓縮(最高品質(zhì))音頻,請(qǐng)使用封裝在CAF文件中的、16位、低位在前(little endian)的線性PCM音頻數(shù)據(jù)。您可以用Mac OS X的afconvert命令行工具來(lái)將音頻文件轉(zhuǎn)換為上述格式:

      /usr/bin/afconvert -f caff -d LEI16 {INPUT} {OUTPUT} 

      afconvert工具可以進(jìn)行廣泛的音頻數(shù)據(jù)格式和文件類型轉(zhuǎn)換。您可以通過(guò)afconvert的手冊(cè)頁(yè)面,以及在shell提示符下鍵入afconvert -h命令獲取更多信息。

      對(duì)于壓縮音頻,當(dāng)每次只需播放一個(gè)聲音,或者當(dāng)不需要和iPod同時(shí)播放音頻時(shí),適合使用AAC格式的CAF或m4a文件。

      當(dāng)您需要在同時(shí)播放多路聲音時(shí)減少內(nèi)存開銷時(shí),請(qǐng)使用IMA4 (IMA/ADPCM) 壓縮格式,這樣可以減少文件尺寸,同時(shí)在解壓縮過(guò)程中對(duì)CPU的影響又最小。和線性PCM數(shù)據(jù)一樣,請(qǐng)將IMA4數(shù)據(jù)封裝在CAF文件中。

      在iPhone OS使用視頻

      錄制視頻

      從iPhone OS 3.0開始,您可以在具有錄制支持的設(shè)備上錄制視頻,包括當(dāng)時(shí)的音頻。顯示視頻錄制界面的方法是創(chuàng)建和推出一個(gè)UIImagePickerController對(duì)象,和顯示靜態(tài)圖片照相機(jī)界面完全一樣。

      在錄制視頻時(shí),您必須首先檢查是否存在照相機(jī)源類型 (UIImagePickerControllerSourceTypeCamera) ,以及照相機(jī)是否支持電影媒體類型 (kUTTypeMovie) 。根據(jù)您為mediaTypes屬性分配的媒體類型的不同,選擇器對(duì)象可以直接顯示靜態(tài)圖像照相機(jī),或者視頻攝像機(jī),還可以顯示一個(gè)選擇界面,讓用戶選擇。

      使用UIImagePickerControllerDelegate協(xié)議,注冊(cè)為圖像選擇器的委托。在視頻錄制完成時(shí),您的委托對(duì)象的 imagePickerController:didFinishPickingMediaWithInfo:方法會(huì)備調(diào)用。

      對(duì)于支持錄制的設(shè)備,您也可以從用戶照片庫(kù)中選擇之前錄制的視頻。

      有關(guān)如何使用圖像選擇器的更多信息,請(qǐng)參見UIImagePickerController類參考。

      播放視頻文件

      在iPhone OS系統(tǒng)上,應(yīng)用程序可以通過(guò)Media Player框架(MediaPlayer.framework) 來(lái)播放視頻文件。視頻的回放只支持全屏模式,需要播放場(chǎng)景切換動(dòng)畫的游戲開發(fā)者或需要播放媒體文件的其它開發(fā)者可以使用。當(dāng)應(yīng)用程序開始播放視頻時(shí),媒體 播放器界面就會(huì)接管,將屏幕漸變?yōu)楹谏缓鬂u漸顯示視頻內(nèi)容。視頻播放界面上可以顯示或者不顯示調(diào)整回放的用戶控件。您可以通過(guò)部分或全部激活這些控件 (如圖7-2所示),使用戶可以改變音量、改變回放點(diǎn)、開始或停止視頻的播放。如果禁用所有的控件,視頻會(huì)一直播放,直到結(jié)束。

      圖7-2  帶有播放控制的媒體播放器界面

      Media player interface with transport controls

      在開始播放前,您必須知道希望播放的URL。對(duì)于應(yīng)用程序提供的文件,這個(gè)URL通常是指向應(yīng)用程序包中某個(gè)文件的指針;但是,它也可以是指向遠(yuǎn)程服務(wù)器文件的指針。您可以用這個(gè)URL來(lái)實(shí)例化一個(gè)新的MPMoviePlayerController類的實(shí)例。這個(gè)類負(fù)責(zé)視頻文件的回放和管理用戶交互,比如響應(yīng)用戶對(duì)播放控制(如果顯示的話)的觸擊動(dòng)作。簡(jiǎn)單調(diào)用控制器的play方法,就可以開始播放了。

      程序清單7-12顯示一個(gè)實(shí)例方法,功能是播放位于指定URL的視頻。play方法是異步的調(diào)用,在電影播放時(shí)會(huì)將控制權(quán)返回給調(diào)用者。電影控制器負(fù)責(zé)將電影載入一個(gè)全屏的視圖,并通過(guò)動(dòng)畫效果將電影放到應(yīng)用程序現(xiàn)有內(nèi)容的上方。在視頻回放完成后,電影控制器會(huì)向委托對(duì)象發(fā)出一個(gè)通告,該委托對(duì)象負(fù)責(zé)在不再需要時(shí)釋放電影控制器。

      程序清單7-12  播放全屏電影

      -(void)playMovieAtURL:(NSURL*)theURL 
      { 
          MPMoviePlayerController* theMovie = [[MPMoviePlayerController alloc] initWithContentURL:theURL]; 
        
          theMovie.scalingMode = MPMovieScalingModeAspectFill; 
          theMovie.movieControlMode = MPMovieControlModeHidden; 
        
          // Register for the playback finished notification. 
          [[NSNotificationCenter defaultCenter] addObserver:self 
                      selector:@selector(myMovieFinishedCallback:) 
                      name:MPMoviePlayerPlaybackDidFinishNotification 
                      object:theMovie]; 
        
          // Movie playback is asynchronous, so this method returns immediately. 
          [theMovie play]; 
      } 
        
      // When the movie is done, release the controller. 
      -(void)myMovieFinishedCallback:(NSNotification*)aNotification 
      { 
          MPMoviePlayerController* theMovie = [aNotification object]; 
        
          [[NSNotificationCenter defaultCenter] removeObserver:self 
                      name:MPMoviePlayerPlaybackDidFinishNotification 
                      object:theMovie]; 
        
          // Release the movie instance created in playMovieAtURL: 
          [theMovie release]; 
      } 

      有關(guān)Media Player框架的各個(gè)類的更多信息,請(qǐng)參見Media Player框架參考。有關(guān)它支持的視頻格式列表,請(qǐng)參見iPhone OS技術(shù)概覽。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多