2011-08-27 36 views
16

Tôi đã quản lý để tải một đoạn video của một khung phim bằng cách khung thành một kết cấu OpenGL với AVFoundation. Tôi làm theo các bước được mô tả trong các câu trả lời ở đây: iOS4: how do I use video file as an OpenGL texture? và mất một số mã từ mẫu GLVideoFrame từ WWDC2010 mà có thể được tải về tại đây: http://bit.ly/cEf0rMAVFoundation: Video kết nối OpenGL hoạt động - Cách phát và đồng bộ hóa âm thanh?

Làm thế nào để chơi các âm thanh theo dõi của bộ phim đồng bộ với video. Tôi nghĩ rằng không nên chơi nó trong một máy nghe nhạc riêng biệt, nhưng để sử dụng bản âm thanh của cùng một AVAsset.

AVAssetTrack* audioTrack = [[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]; 

Tôi lấy một videoframe và đó là dấu thời gian trong CADisplayLink-callback qua

CMSampleBufferRef sampleBuffer = [self.readerOutput copyNextSampleBuffer]; 
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); 

nơi readerOutput là loại AVAssetReaderTrackOutput*

Làm thế nào để có được những âm thanh-mẫu tương ứng? Và cách chơi chúng?


Edit:

Tôi đã nhìn xung quanh một chút và tôi nghĩ rằng, tốt nhất là nên sử dụng AudioQueue từ AudioToolbox.framework sử dụng phương pháp này được mô tả ở đây: AVAssetReader and Audio Queue streaming problem

Ngoài ra còn một là trình phát âm thanh trong AVFoundation: AVAudioPlayer. Nhưng tôi không biết chính xác cách tôi nên chuyển dữ liệu đến số initWithData -initializer của mình, dự kiến ​​NSData. Hơn nữa tôi không nghĩ rằng đó là sự lựa chọn tốt nhất cho trường hợp của tôi bởi vì một AVAudioPlayer -instance mới sẽ phải được tạo ra cho mỗi đoạn âm thanh mới, như tôi đã hiểu.

Bất kỳ đề xuất nào khác? Cách tốt nhất để phát các mẫu âm thanh thô mà tôi nhận được từ AVAssetReaderTrackOutput là gì?

+0

Bạn đã bao giờ nhận được bất cứ đâu với điều này? – RyanSullivan

+0

Giải pháp của tôi là mở phim bằng AVAssetReader để lấy khung cho OpenGL và đồng thời mở lại cùng một tệp phim với một AVAudioPlayer và để cả hai cùng bắt đầu đồng thời. Nó không phải là một giải pháp tốt đẹp nhưng âm thanh và video khá đồng bộ. Kể từ đó tôi không có thời gian để làm việc trên một giải pháp tốt hơn. – j00hi

+0

Tôi cũng đang sử dụng AVAudioPlayer nhưng đồng bộ hóa âm thanh không phải là rất tốt. Có một giải pháp thực sự sẽ tốt hơn. –

Trả lời

Các vấn đề liên quan