Tôi có một chương trình sử dụng đơn vị âm thanh của trình phát tệp để phát, tạm dừng và dừng tệp âm thanh. Cách tôi thực hiện điều này là bằng cách khởi tạo đơn vị âm thanh của trình phát tệp để phát tệp ở vị trí 0 và sau đó khi người dùng nhấn nút tạm dừng, tôi dừng biểu đồ AUGraph, nắm bắt vị trí hiện tại và sau đó sử dụng vị trí đó làm vị trí bắt đầu khi người dùng nhấn nút phát. Mọi thứ đều hoạt động tốt, nhưng cứ 3 hoặc 4 lần tôi lại dừng lại và sau đó chơi, bài hát bắt đầu chơi một nửa đến một giây đầy TRƯỚC KHI điểm tôi dừng lại.Trong âm thanh lõi IOS, làm cách nào để bạn tìm thấy vị trí đầu phát hiện tại thực của một đơn vị âm thanh của trình phát tệp?
Tôi không thể hiểu tại sao điều này xảy ra, bạn có nghĩ gì không? đây là một phiên bản đơn giản của mã của tôi.
//initialize AUGraph and File player Audio unit
...
...
...
//Start AUGraph
...
...
...
// pause playback
- (void) pauseAUGraph {
//first stop the AuGrpah
result = AUGraphStop (processingGraph);
// get current play head position
AudioTimeStamp ts;
UInt32 size = sizeof(ts);
result = AudioUnitGetProperty(filePlayerUnit,
kAudioUnitProperty_CurrentPlayTime, kAudioUnitScope_Global, 0, &ts,
&size);
//save our play head position for use later
//must add it to itself to take care of multiple presses of the pause button
sampleFrameSavedPosition = sampleFrameSavedPosition + ts.mSampleTime;
//this stops the file player unit from playing
AudioUnitReset(filePlayerUnit, kAudioUnitScope_Global, 0);
NSLog (@"AudioUnitReset - stopped file player from playing");
//all done
}
// Stop playback
- (void) stopAUGraph {
// lets set the play head to zero, so that when we restart, we restart at the beginning of the file.
sampleFrameSavedPosition = 0;
//ok now that we saved the current pleayhead position, lets stop the AUGraph
result = AUGraphStop (processingGraph);
}
Định dạng tệp âm thanh là gì? –
chúng là các tệp m4a. – Beleg
OK, tôi không phải là chuyên gia về nén âm thanh, nhưng các tệp có xu hướng được nén theo khối và khi bạn tìm kiếm nó có thể đi tới đoạn gần nhất chứ không phải vị trí thực tế. Nếu tôi đi qua bất cứ điều gì dứt khoát hơn tôi sẽ gửi một câu trả lời. –