2011-02-15 96 views
4

我一直試圖在我的應用程序中使用兩個不同的AVQueuePlayer對象。第一位玩家播放一系列通過網絡流傳的短片。第二個對象只播放一個視頻,但它的長度要長得多。它也是流式傳輸。我已經驗證所有剪輯都有適當的音頻/視頻同步。iOS多個AVPlayer對象導致音頻/視頻同步丟失

我注意到,如果事先創建另一個對象後創建一個AVPlayer對象,則第二個播放器中的音頻/視頻同步丟失。音頻播放時間太早約800毫秒到1500毫秒。

我已經嘗試了一些東西,包括在清理第一個玩家和分配第二個玩家之間增加一個延遲,刪除所有對AudioSession代碼的調用等。這似乎沒有任何幫助。偶爾會有音頻同步,但實際上它只發生在大約30次中。

有沒有其他人看過相同的行爲?有誰知道如何解決這一問題?

感謝任何人都可以幫助!

回答

3

我自己也面臨同樣的問題。我橫跨AVPlayerLayer文檔中的一些信息來了:

在播放期間,AVPlayer可以 其視覺輸出和它的可聽 輸出到一個或多個 獨立地計時的音頻輸出 設備通過調整之間補償時間漂移它的 相關球員層的時間。這些調整的效果 通常都很小 ;然而,希望 保持完全不受此類調整影響的客戶可能希望將其定時重要的其他 層放置到它們的層樹的獨立定時子樹 中。

您可以使用相同的AVPlayer 對象創建任意數量的 播放器圖層。只有最近創建的 播放器圖層實際上會在屏幕上顯示 視頻內容。

不幸的是,我還沒有將其解譯爲實際的代碼,但我想它可能會幫助您指出正確的方向。如果你想出了一個解決方案,那麼請在這裏發佈,我也會這樣做。

+0

在做了一些更多的測試之後,如果我在第二個玩遊戲之前擺脫了第一個玩家,那麼A/V同步就好了。 [玩家暫停]; [玩家發佈]; player = nil; [player2 play];但是好像你說過你已經這樣做了嗎? – SteveB 2011-04-01 14:11:41