2010-10-24 14 views
5

Tôi có một vấn đề lạ: Tôi muốn tạo ra một tập tin âm thanh mới ra khỏi hai soundfiles và im lặng.AVMutableCompositionTrack - insertTimeRange - insertEmptyTimeRange issue

sound1: 2 giây dài + im lặng: 2 giây im lặng + sound2: 2 giây dài

Khi tôi cố gắng mã dưới đây, tôi nhận được soundfile dài 6 giây với tất cả các bộ phận, nhưng trong một thứ tự khác! Đơn đặt hàng là: sound1, sound2, silence

Tôi không thể đặt sự im lặng này ở giữa bố cục này (cũng không phải lúc đầu). Đây có phải là một hành vi điển hình hay tôi làm điều gì sai?

Đây là đoạn mã để đưa các phân đoạn với nhau:

[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio1 duration]) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil]; 
[compositionAudioTrack insertEmptyTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(2, 1))]; 
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio2 duration]) ofTrack:clipAudioTrack2 atTime:CMTimeMake(4, 1) error:nil]; 

Có lẽ ai đó có một ý tưởng? Cảm ơn bạn trước!

Bằng cách: mã sau đây mà không có sự insertEmptyTimeRange-line không làm việc một trong hai, nó chỉ tạo ra 4 giây của âm thanh và sound2 slide đến hết sound1:

[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio1 duration]) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil]; 
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio2 duration]) ofTrack:clipAudioTrack2 atTime:CMTimeMake(4, 1) error:nil]; 

Dường như nó không phải là cho phép rằng có "không có gì" giữa các phân đoạn !?

Trả lời

1

Vẫn không biết điều này "insertEmptyTimeRange" có nghĩa là gì. Tôi đã làm một công việc xung quanh với một tập tin "âm thanh" im lặng mà không có gì trong đó. Tôi đặt tập tin âm thanh trống giữa hai tập tin âm thanh và điều này cho tôi. Câu hỏi đã đóng;) (Nhưng nếu ai đó có thể giải thích điều này "insertEmptyTimeRange" này sẽ vẫn còn thú vị ...)

+0

Bạn có sử dụng chế độ chuyển tiếp khi xuất thành phần không? – zoul

+0

bạn thích điều gì - chế độ truyền qua? tôi có cùng một vấn đề. Tôi đang chèn thông qua các hướng dẫn trong khoảng thời gian trống. – comonitos

1

tôi nhận nó làm việc như sau:

[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(2,1)) 
           ofTrack:audioTrack 
           atTime:kCMTimeZero 
           error:nil]; 
[compositionAudioTrack insertEmptyTimeRange:CMTimeRangeMake(CMTimeMake(2, 1), CMTimeMake(4, 1))]; 
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(2,1)) 
           ofTrack:audioTrack 
           atTime:CMTimeMake(4, 1) 
           error:nil]; 

Các "trống rỗng phạm vi thời gian" cần được (2,4) nếu âm thanh của bạn là từ (0,2) và (4,6).

0

Không chắc chắn nếu trễ của nó,

insertEmptyTimeRange: Nếu bạn chèn một khoảng thời gian trống vào theo dõi, bất kỳ phương tiện truyền thông rằng đã được trình bày trong khoảng thời gian đó trước khi chèn sẽ được trình bày thay vì ngay sau đó.

Vì vậy, tất cả các bạn phải làm là thêm cả clip đầu tiên và sau đó thêm khoảng emptytime lúc 2. này nên làm việc

insertTimeRange (0-2)
insertTimeRange (2-4)
insertEmptyTimeRange (2 đến 4)