簡體   English   中英

如何從特定時刻使用openAL命令播放聲音文件(時間輸入為double或float)

[英]How to play a sound file using openAL command from particular time instant (Time input is double or float)

我想知道openAL中是否有一個可用於從特定時間(查找時間)播放聲音文件的命令。 就像我正在使用滑塊並滑動它一樣,一旦釋放滑塊,聲音文件應該從該特定瞬間開始播放。

我已經為iOS實現了它。 但是我還沒有找到可以從特定時間播放文件的openAL方法。

alSourcei(sourceID, AL_BUFFER, 0);
alSourcei(sourceID, AL_BUFFER, bufferID);



// Set the pitch and gain of the source
alSourcef(sourceID, AL_PITCH, aPitch);
alSourcef(sourceID, AL_GAIN, aGain * fxVolume);

if(aLoop) {
    alSourcei(sourceID, AL_LOOPING, AL_TRUE);
} else {
    alSourcei(sourceID, AL_LOOPING, AL_FALSE);
}
// Set the source location
alSource3f(sourceID, AL_POSITION, aLocation.x, aLocation.y, 0.0f);
**Here we play the sound ***

alSourcePlay(sourceID);

執行以上代碼總是從初始位置開始播放音軌。 我想知道在openAL中是否有任何方法可以從某個特定的時間點尋找軌道。

您需要實施尋求。 根據您想要的搜索精度(即到最近的幀或幀邊界之間的搜索),這樣做可能非常棘手。

如何執行此操作取決於聲音數據的表示方式。 我以前已經實現了此功能,以便在開放數據上使用ogg vorbis數據進行流式傳輸。 對於這一點,我用實施ov_seek作為一部分ov_open_callbacks

我發現有一個關於devmaster上的OpenAL流的教程,我覺得很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM