一再愈、抽象類AVCaptureFileOutput
AVCaptureFileOutput 是AVCaptureOutput
的子類铛楣,可以將捕獲的數(shù)據(jù)記錄到文件中刀荒。
1、設(shè)置屬性
屬性 | 數(shù)據(jù)類型 | 描述 |
---|---|---|
delegate |
id |
委托對象窄陡;AVCaptureFileOutputDelegate 協(xié)議將能夠沿樣本邊界準確的監(jiān)測和控制記錄炕淮。 |
maxRecordedDuration |
CMTime |
允許錄制的最長時間;默認值為kCMTimeInvalid 表示無限制跳夭。 |
maxRecordedFileSize |
int64_t |
允許錄制數(shù)據(jù)的最大字節(jié)涂圆;默認值為0,表示沒有限制币叹。 |
minFreeDiskSpaceLimit |
int64_t |
錄制時要求指定磁盤的最小可用空間量润歉。 |
outputFileURL |
NSURL |
只讀屬性,錄制文件的存儲路徑URL颈抚。 |
recordedDuration |
CMTime |
只讀屬性踩衩,當前錄制的時間 |
recordedFileSize |
int64_t |
只讀屬性,當前錄制的數(shù)據(jù)的大蟹泛骸(字節(jié)) |
recording |
BOOL |
只讀屬性驱富,當前是否正在錄制。 |
recordingPaused |
BOOL |
只讀屬性匹舞,當前錄制是否暫停褐鸥。 |
對于錄制文件的限制屬性:maxRecordedFileSize
、maxRecordedDuration
和minFreeDiskSpaceLimit
赐稽,達到限制時將停止錄制并且調(diào)用協(xié)議方法-captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:
顯示相應(yīng)的錯誤叫榕。
2浑侥、開始,停止晰绎,暫停和恢復(fù)錄制
2.1锭吨、開始錄制
給定文件的存儲路徑URL,開始錄制寒匙。
- (void)startRecordingToOutputFileURL:(NSURL *)outputFileURL
recordingDelegate:(id<AVCaptureFileOutputRecordingDelegate>)delegate;
- 參數(shù)
outputFileURL
:錄制文件的輸出路徑;如果不是有效的fileURL躏将,則此方法拋出異常NSInvalidArgumentException
锄弱。 - 參數(shù)
delegate
:記錄會話的委托對象。
如果錄制開始時已存在給定URL的文件祸憋,則記錄到新文件將失敗会宪。
在macOS中,在調(diào)用此方法錄制另一個文件時蚯窥,不需要去調(diào)用-stopRecording
掸鹅。如果在已經(jīng)記錄現(xiàn)有輸出文件的同時調(diào)用此方法,則舊文件和新文件之間不會丟棄任何數(shù)據(jù)拦赠。
在iOS中巍沙,不支持幀文件精確切換。在再次調(diào)用此方法之前荷鼠,必須調(diào)用-stopRecording
以避免任何錯誤句携。
當通過調(diào)用-stopRecording
、通過使用此方法更改文件或由于錯誤而停止記錄時允乐,需要包含到文件中的其余數(shù)據(jù)將在后臺寫入矮嫉。因此,必須指定一個委托牍疏,當使用-captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:
方法將所有數(shù)據(jù)寫入文件時蠢笋,該委托將被通知。錄制委托還可以選擇性地實現(xiàn)一些方法鳞陨,當數(shù)據(jù)開始寫入昨寞、錄制暫停并重新開始以及錄制即將結(jié)束時通知它。
在macOS中炊邦,如果在 -captureOutput:didOutputSampleBuffer:fromConnection:
代理方法中調(diào)用此方法编矾,則保證寫入新文件的第一個樣本是傳遞給該方法的樣本緩沖區(qū)中包含的樣本。
2.2馁害、停止錄制
當前文件停止錄制窄俏。
- (void)stopRecording;
如果停止將新數(shù)據(jù)記錄到當前文件、并且不想繼續(xù)記錄到另一個文件時可以調(diào)用此方法碘菜。
如果要從一個文件切換到另一個文件凹蜈,則應(yīng)該使用新的fileURL調(diào)用-startRecordingToOutputFileURL:recordingDelegate:
方法限寞。
通過調(diào)用此方法停止錄制;通過使用-startRecordingToOutputFileURL:recordingDelegate:
方法更改文件仰坦;或者由于錯誤叫倍,需要包含在文件中的剩余數(shù)據(jù)將在后臺寫入。因此昧谊,在使用該文件之前褥蚯,必須等到使用-captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:
方法將所有數(shù)據(jù)寫入文件時,通知-startRecordingToOutputFileURL:recordingDelegate:
中指定的委托妈橄。
在macOS中庶近,如果在-captureOutput:didOutputSampleBuffer:fromConnection:
代理方法中調(diào)用此方法,則保證寫入當前文件的最后一個樣本是在傳遞給該方法的樣本緩沖區(qū)中的那些樣本之前立即輸出的樣本眷蚓。
2.3鼻种、暫停錄制
文件暫停錄制。
- (void)pauseRecording;
調(diào)用-resumeRecording
方法將多個不連續(xù)的媒體段記錄到單個文件中沙热。
在macOS中叉钥,如果在-captureOutput:didOutputSampleBuffer:fromConnection:
代理方法中調(diào)用此方法,則保證寫入當前文件的最后一個樣本是在傳遞給該方法的樣本緩沖區(qū)中的那些樣本之前立即輸出的樣本篙贸。
2.4投队、暫停后恢復(fù)錄制
調(diào)用-pauseRecording
方法暫停后,調(diào)用下述方法恢復(fù)錄制到當前輸出文件outputFileURL
爵川。
- (void)resumeRecording;
在macOS中蛾洛,如果在-captureOutput:didOutputSampleBuffer:fromConnection:
代理方法中調(diào)用此方法,則保證寫入當前文件的第一個樣本是傳遞給該方法的樣本緩沖區(qū)中包含的樣本雁芙。
3轧膘、AVCaptureFileOutputDelegate
AVCaptureFileOutputDelegate 該協(xié)議為AVCaptureFileOutput
對象的委托定義了一個接口,用于監(jiān)視或控制媒體文件錄制兔甘。
3.1谎碍、是否需要準確的幀記錄
是否允許委托選擇在-captureOutput:didOutputSampleBuffer:fromConnection:
方法中構(gòu)建準確的記錄。
- (BOOL)captureOutputShouldProvideSampleAccurateRecordingStart:(AVCaptureOutput *)output;
- 參數(shù)
captureOutput
:與委托關(guān)聯(lián)的AVCaptureOutput
實例洞焙。 - 返回值:是否需要準確的幀記錄蟆淀。
在OS X Mountain Lion
系統(tǒng)之前的應(yīng)用程序中,實現(xiàn)-captureOutput:didOutputSampleBuffer:fromConnection:
方法的代理可以通過在回調(diào)中調(diào)用-startRecordingToOutputFileURL:recordingDelegate:
或-stopRecording
來確保啟動和停止記錄是幀精確的澡匪。幀準確記錄要求在AVCaptureSession
開始運行時AVCaptureOutput
應(yīng)用outputSettings
熔任,因此它可以在任何給定的幀邊界上開始和/或停止記錄。在整個會話期間應(yīng)用壓縮設(shè)置會產(chǎn)生功耗唁情,散熱和CPU影響疑苔。
在OS X Mountain Lion
系統(tǒng)之后的應(yīng)用程序中,委托必須實施此方法以指示是否需要幀精確記錄甸鸟。AVCaptureFileOutput
僅在添加委托時調(diào)用此方法一次惦费,而不再調(diào)用兵迅。如果返回NO,則AVCaptureFileOutput
僅在調(diào)用-startRecordingToOutputFileURL:recordingDelegate:
時應(yīng)用壓縮設(shè)置薪贫,并在錄制停止后禁用這些設(shè)置恍箭。
3.2、
讓委托有機會檢查錄制的數(shù)據(jù)瞧省,并在準確的時間開始和停止記錄扯夭。
- (void)captureOutput:(AVCaptureFileOutput *)output
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection;
- 參數(shù)
output
:接收媒體數(shù)據(jù)的AVCaptureFileOutput
。 - 參數(shù)
sampleBuffer
:包含樣本數(shù)據(jù)和有關(guān)樣本的其他信息鞍匾,例如其格式和顯示時間勉抓。 - 參數(shù)
connection
:附加到接收示例數(shù)據(jù)的文件輸出的AVCaptureConnection
對象。
每當文件輸出從給定連接接收到單個示例緩沖區(qū)(例如候学,單個視頻幀或音頻緩沖區(qū))時,就會調(diào)用此方法纵散。這使委托有機會在精確的樣本邊界開始和停止記錄或更改輸出文件梳码。如果在此方法中調(diào)用,文件輸出的-startRecordingToOutputFileURL:recordingDelegate:
和-resumeRecording
方法保證在新文件中包含接收到的樣本緩沖區(qū)伍掀,而對-stopRecording
和-pauseRecording
的調(diào)用保證在現(xiàn)有文件中包含當前樣本緩沖區(qū)中的所有樣本掰茶。
可以通過檢查CMSampleBuffer
對象來收集特定于樣本的信息。如果從此方法調(diào)用蜜笤,樣本緩沖區(qū)始終包含單幀視頻濒蒋,但也可能包含多個音頻樣本。對于B幀視頻格式把兔,樣本始終按呈現(xiàn)順序傳送沪伙。
如果需要在此方法的作用域之外引用CMSampleBuffer
對象,則必須保留它县好,然后在用完之后釋放它围橡。
為了保持最佳性能,一些樣本緩沖區(qū)直接引用可能需要由設(shè)備系統(tǒng)和其他捕獲輸入重用的內(nèi)存池缕贡。對于未壓縮的設(shè)備本機捕獲翁授,通常會出現(xiàn)這種情況,其中盡可能少地復(fù)制內(nèi)存塊晾咪。如果多個樣本緩沖區(qū)長時間引用此類內(nèi)存池收擦,則輸入將無法再將新樣本復(fù)制到內(nèi)存中,并且這些樣本將被丟棄谍倦。如果應(yīng)用程序通過保留提供的CMSampleBuffer
對象太長時間而導(dǎo)致刪除樣本塞赂,但需要長時間訪問樣本數(shù)據(jù),請考慮將數(shù)據(jù)復(fù)制到新緩沖區(qū)中昼蛀,然后在樣本緩沖區(qū)上調(diào)用CFRelease()
(如果以前保留過)减途,以便可以重用它引用的內(nèi)存酣藻。
不應(yīng)該假定這個方法將在特定的線程上被調(diào)用。此外鳍置,這種方法經(jīng)常被調(diào)用辽剧,因此必須有效地防止捕獲性能問題。
4税产、AVCaptureFileOutputRecordingDelegate
AVCaptureFileOutputRecordingDelegate 為AVCaptureFileOutput
的協(xié)議接口怕轿,以響應(yīng)記錄單個文件的過程中發(fā)生的事件。AVCaptureFileOutput
對象的委托必須實現(xiàn)該協(xié)議的方法辟拷。
-captureOutput:willFinishRecordingToOutputFileAtURL:fromConnections:error:
方法和-captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:
方法總是被調(diào)用撞羽,即使沒有寫入數(shù)據(jù)。
4.1衫冻、開始錄制
- (void)captureOutput:(AVCaptureFileOutput *)output
didStartRecordingToOutputFileAtURL:(NSURL *)fileURL
fromConnections:(NSArray<AVCaptureConnection *> *)connections;
輸出開始寫入文件時通知委托:
- 參數(shù)
output
:開始寫入文件的捕獲文件輸出诀紊。 - 參數(shù)
fileURL
:正在寫入的文件的文件URL。 - 參數(shù)
connections
:附加到文件輸出的AVCaptureConnection
對象數(shù)組隅俘,提供正在寫入文件的數(shù)據(jù)邻奠。
如果錯誤條件阻止寫入任何數(shù)據(jù),則可能不會調(diào)用此方法为居。
4.2碌宴、即將停止錄制
在以下情況下將調(diào)用該方法:
- 即將停止錄制文件時;
- 調(diào)用了
-startRecordingToOutputFileURL:recordingDelegate:
方法時蒙畴; - 寫入文件發(fā)生錯誤時贰镣;
- (void)captureOutput:(AVCaptureFileOutput *)output
willFinishRecordingToOutputFileAtURL:(NSURL *)fileURL
fromConnections:(NSArray<AVCaptureConnection *> *)connections
error:(NSError *)error;
當輸出即將停止向文件寫入新示例時通知委托:
- 參數(shù)
output
:捕獲文件輸出將完成寫入文件。 - 參數(shù)
fileURL
:正在寫入的文件的fileURL
膳凝。 - 參數(shù)
connections
:附加到文件輸出的AVCaptureConnection
對象數(shù)組碑隆,提供正在寫入文件的數(shù)據(jù)。 - 參數(shù)
error
:描述導(dǎo)致文件停止錄制的錯誤原因蹬音,如果沒有錯誤則為nil干跛。
即使沒有數(shù)據(jù)成功寫入文件,也始終為每個記錄請求調(diào)用此方法祟绊。
4.3楼入、已經(jīng)停止錄制
在以下情況下將調(diào)用該方法:
- 已經(jīng)停止錄制文件時;
- 調(diào)用了
-startRecordingToOutputFileURL:recordingDelegate:
方法時牧抽; - 寫入文件發(fā)生錯誤時嘉熊;
- (void)captureOutput:(AVCaptureFileOutput *)output
didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL
fromConnections:(NSArray<AVCaptureConnection *> *)connections
error:(NSError *)error;
當所有待寫入數(shù)據(jù)寫入輸出文件時通知委托:
- 參數(shù)
output
:已完成寫入文件的捕獲文件輸出。 - 參數(shù)
outputFileURL
:正在寫入的文件的文件fileURL
扬舒。 - 參數(shù)
connections
:附加到文件輸出的AVCaptureConnection
對象數(shù)組阐肤,提供正在寫入文件的數(shù)據(jù)。 - 參數(shù)
error
:描述導(dǎo)致文件停止錄制的錯誤原因,如果沒有錯誤則為nil孕惜。
只要文件結(jié)束愧薛,就會調(diào)用此方法。即使沒有數(shù)據(jù)成功寫入文件衫画,也始終為每個記錄請求調(diào)用此方法毫炉。
4.4、成功暫停錄制
- (void)captureOutput:(AVCaptureFileOutput *)output
didPauseRecordingToOutputFileAtURL:(NSURL *)fileURL
fromConnections:(NSArray<AVCaptureConnection *> *)connections;
當正在錄制時調(diào)用削罩,并根據(jù)請求成功暫停錄制:
- 參數(shù)
output
:暫停其文件記錄的捕獲文件輸出瞄勾。 - 參數(shù)
fileURL
:正在寫入的文件的fileURL
。 - 參數(shù)
connections
:附加到文件輸出的AVCaptureConnection
對象數(shù)組弥激,提供正在寫入文件的數(shù)據(jù)进陡。
只要調(diào)用-pauseRecording
方法,就會調(diào)用此方法微服。
委托對象可以安全地從此方法中更改文件輸出當前正在執(zhí)行的操作:例如趾疚,啟動新文件。如果手動或由于錯誤而停止記錄到文件以蕴,則無法保證調(diào)用此方法糙麦,即使先前調(diào)用了-pauseRecording
。
4.5舒裤、恢復(fù)錄制暫停文件
- (void)captureOutput:(AVCaptureFileOutput *)output
didResumeRecordingToOutputFileAtURL:(NSURL *)fileURL
fromConnections:(NSArray<AVCaptureConnection *> *)connections;
只要調(diào)用-resumeRecording
方法,就會調(diào)用此方法觉吭。
委托對象可以安全地從此方法中更改文件輸出當前正在執(zhí)行的操作:例如腾供,啟動新文件。如果手動或由于錯誤而停止記錄到文件鲜滩,則無法保證調(diào)用此方法伴鳖,即使先前調(diào)用了-resumeRecording
也是如此。
二徙硅、視頻錄制AVCaptureMovieFileOutput
AVCaptureMovieFileOutput 繼承自AVCaptureFileOutput
榜聂,將視頻和音頻記錄到QuickTime電影文件的捕獲輸出。
這個類相當于AVCapturePhotoOutput
的電影文件嗓蘑。使用它從AVCaptureSession
內(nèi)容導(dǎo)出或保存電影文件须肆。
第一個軌道段的timeMapping.target.start
必須是kCMTimeZero
,并且當傳入前一個AVCompositionTrackSegment
的timeMapping.target
時桩皿,每個后續(xù)軌道段的timeMapping.target.start
必須等于CMTimeRangeGetEnd
豌汇。可以使用-validateTrackSegments:error:
確保軌道段數(shù)組符合此規(guī)則泄隔。
從ios12開始拒贱,照片格式不再列出不支持的AVCaptureMovieFileOutput
類。如果構(gòu)造一個以照片格式作為輸入和電影文件輸出的AVCaptureSession
,則可以錄制電影逻澳。電影中視頻軌道的分辨率遵循AVCaptureVideoDataOutput
建立的約定闸天。也就是說,使用photo preset
時斜做,會收到與屏幕大小近似的視頻緩沖區(qū)苞氮。視頻輸出是此配置中照片預(yù)覽的代理。如果將AVCaptureDevice
格式設(shè)置為高分辨率照片格式陨享,將收到全分辨率(5,8,12mp)的視頻緩沖區(qū)。如果AVCaptureSession
的automatedConfiguresCaptureDeviceForWideColor
屬性設(shè)置為YES抛姑,則AVCaptureSession
選擇sRGB作為影片中的視頻顏色空間赞厕。可以通過向AVCaptureSession
添加AVCapturePhotoOutput
并為照片輸出配置其照片格式或AVCaptureSessionPresetPhoto
預(yù)設(shè)設(shè)置來覆蓋此行為定硝。
1皿桑、配置電影
每個片段寫入的輸出秒數(shù); 默認值為10秒。kCMTimeInvalid
禁用電影片段寫入蔬啡。
@property(nonatomic) CMTime movieFragmentInterval;
QuickTime電影包含媒體示例和一個表诲侮,表中標識它們在文件中的位置。沒有示例表的電影文件是不可讀的箱蟆。在處理后的文件中沟绪,示例表通常出現(xiàn)在文件的開頭。它也可能出現(xiàn)在文件的末尾空猜,在這種情況下绽慈,標頭包含指向末尾示例表的指針。在記錄新影片文件時辈毯,由于尚不知道文件的大小坝疼,因此不可能編寫示例表。相反谆沃,必須在記錄完成時寫入表钝凶。如果沒有采取其他操作,這意味著如果記錄沒有成功完成(例如唁影,在發(fā)生崩潰的情況下)耕陷,文件數(shù)據(jù)就不可用(因為沒有示例表)。通過定期將“電影片段”插入到電影文件中据沈,可以逐步構(gòu)建示例表啃炸。這意味著如果文件沒有完全寫入,那么電影文件仍然是可用的(直到最后一個片段寫入時為止)卓舵。
// 輸出文件的元數(shù)據(jù)南用。可以使用它向錄制的電影文件添加元數(shù)據(jù),例如版權(quán)裹虫,創(chuàng)建日期等肿嘲。
@property(nonatomic, copy) NSArray<AVMetadataItem *> *metadata;
2、管理輸出設(shè)置
2.1筑公、目前支持錄制文件的視頻編解碼器類型
@property(nonatomic, readonly) NSArray<AVVideoCodecType> *availableVideoCodecTypes;
此列表中的第一個編解碼器是錄制電影文件的默認編解碼器雳窟。要使用不同的編解碼器進行錄制,調(diào)用-setOutputSettings:forConnection:
方法匣屡,傳遞視頻設(shè)置字典封救,其中包含與此列表中其他值匹配的AVVideoCodecKey
值。
2.2捣作、獲取設(shè)置字典支持的鍵的列表
- (NSArray<NSString *> *)supportedOutputSettingsKeysForConnection:(AVCaptureConnection *)connection;
2.3誉结、獲取記錄時用于從給定連接重新編碼媒體的選項
- (NSDictionary<NSString *,id> *)outputSettingsForConnection:(AVCaptureConnection *)connection;
- 參數(shù)connection:提供要重新編碼的媒體的連接。
- 返回值:輸出設(shè)置字典券躁。
如果返回空字典惩坑,則在寫入文件之前,不會更改連接中的媒體格式也拜。
如果使用nil字典調(diào)用-setOutputSettings:forConnection:
此方法返回一個非nil以舒,反映AVCaptureSession
當前sessionPreset
使用的設(shè)置。
2.4慢哈、設(shè)置用于在記錄時從給定連接重新編碼媒體的選項字典
- (void)setOutputSettings:(NSDictionary<NSString *,id> *)outputSettings
forConnection:(AVCaptureConnection *)connection;
- 參數(shù)
outputSettings
:輸出設(shè)置字典蔓钟。傳遞一個空字典,指定在寫入文件之前不應(yīng)更改連接中的媒體格式卵贱。傳遞nil以指定輸出格式應(yīng)由會話預(yù)設(shè)確定滥沫。 - 參數(shù)
connection
:提供要重新編碼的媒體的連接。
有關(guān)輸出設(shè)置的詳細信息艰赞,請參閱音頻設(shè)置和音頻連接格式或視頻連接的視頻設(shè)置詞典佣谐。
3肚吏、設(shè)置方向
3.1方妖、獲取捕獲設(shè)備是否記錄視頻方向
- (BOOL)recordsVideoOrientationAndMirroringChangesAsMetadataTrackForConnection:(AVCaptureConnection *)connection;
3.2、設(shè)置捕獲設(shè)備是否設(shè)置視頻方向
- (void)setRecordsVideoOrientationAndMirroringChanges:(BOOL)doRecordChanges
asMetadataTrackForConnection:(AVCaptureConnection *)connection;
三罚攀、音頻錄制AVCaptureAudioFileOutput
AVCaptureAudioFileOutput 繼承自AVCaptureFileOutput
党觅,用于記錄音頻并將錄制的音頻保存到文件中。
AVCaptureAudioFileOutput實現(xiàn)AVCaptureFileOutput聲明的完整文件記錄接口斋泄,用于將媒體數(shù)據(jù)寫入音頻文件杯瞻。 此外,還可以配置特定于音頻文件格式的選項炫掐,包括將元數(shù)據(jù)集合寫入每個文件以及指定音頻編碼選項魁莉。然而,AVCaptureAudioFileOutput并不能調(diào)用-startRecordingToOutputFileURL:recordingDelegate:
方法,改用-startRecordingToOutputFileURL:outputFileType:recordingDelegate:
方法旗唁。
1畦浓、發(fā)現(xiàn)支持的類型
返回包含UTI的數(shù)組,標識AVCaptureAudioFileOutput
可以寫入的文件類型检疫。
+ (NSArray<AVFileType> *)availableOutputFileTypes;
2讶请、開始錄制
告知接收方開始記錄指定格式的新文件,并指定在記錄完成時將通知的代理屎媳。
- (void)startRecordingToOutputFileURL:(NSURL *)outputFileURL
outputFileType:(AVFileType)fileType
recordingDelegate:(id<AVCaptureFileOutputRecordingDelegate>)delegate;
- 參數(shù)
outputFileURL
:輸出文件路徑夺溢;如果URL不是有效的fileURL
,則此方法拋出NSInvalidArgumentException
烛谊;如果錄制開始時已存在給定URL的文件风响,則記錄到新文件將失敗。 - 參數(shù)
fileType
:UTI晒来,指示要寫入的文件的格式钞诡;常見音頻文件類型的UTI在AVMediaFormat.h
中聲明。 - 參數(shù)
delegate
:必須指定一個AVCaptureFileOutputRecordingDelegate
委托湃崩,以便在錄制完成時收到通知荧降。
在另一個錄制正在進行時,無需在調(diào)用此方法之前調(diào)用-stopRecording
攒读。如果在已經(jīng)記錄現(xiàn)有輸出文件的同時調(diào)用此方法朵诫,則舊文件和新文件之間不會丟棄任何媒體樣本。
當調(diào)用-stopRecording``錄制停止時薄扁,通過使用此方法更改文件剪返,或者由于錯誤,需要包含在文件中的剩余數(shù)據(jù)將在后臺寫入邓梅。因此脱盲,必須指定一個委托,當使用將所有數(shù)據(jù)寫入文件時將通知該委托
-captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:```方法日缨。委托還可以選擇性地實現(xiàn)在數(shù)據(jù)開始寫入時钱反,暫停和恢復(fù)記錄時以及即將完成記錄時通知它的方法。
在macOS中匣距,如果在-captureOutput:didOutputSampleBuffer:fromConnection:
代理方法中調(diào)用此方法面哥,則保證寫入新文件的第一個樣本是傳遞給該方法的樣本緩沖區(qū)中包含的樣本。
3毅待、配置輸出
屬性 | 數(shù)據(jù)類型 | 描述 |
---|---|---|
audioSettings |
NSDictionary |
輸出之前解碼或重新編碼的設(shè)置字典尚卫。此屬性的值是一個字典,音頻設(shè)置鍵值包含AVAudioSettings.h 中尸红。如果將此屬性的值設(shè)置為nil吱涉,則輸出將以其設(shè)備本機格式檢出樣本刹泄。 |
metadata |
NSArray |
錄制文件的元數(shù)據(jù)集合。僅支持ID3 v2.2怎爵,v2.3或v2.4樣式元數(shù)據(jù)項 |