2010-12-11 10 views
1

Ich verwende MPMoviePlayerController, um einen Film in einer Anwendung zu spielen, die Cocos2D verwendet. Wenn der Film jedoch läuft, werden nur die letzten 2/3 des Audios für den Film wiedergegeben. Es ist nicht so, dass der Film im ersten Drittel still ist. Wenn der Film abgespielt wird, beginnt er mit der Wiedergabe des Audios, wo es 1/3 des Weges in den Film hinein wäre. Mit anderen Worten, Audio und Video sind nicht synchron.MPMoviePlayerController Video und Audio sind nicht synchron

Ich benutze iOS 4.2 und ich habe auf den neuesten xCode aktualisiert. Unten ist der Code, den ich verwende. Kann mir jemand sagen, warum das passiert?

Antwort

0

Haben Sie diesen Film in einer anderen App (wie dem Quicktime-Player) abgespielt, um sicherzustellen, dass er nicht beschädigt ist?

+0

Yeah habe ich. Ich habe es in iTunes gespielt und es hat wie erwartet funktioniert. –

2

In Ordnung, nachdem ich das gleiche Problem hatte, grub ich mich etwas tiefer ein und kam zu einer anderen Lösung. Mein Problem war etwas anders. Ich benutzte den Movie-Player zur Mid-App, also war Nathans Vorschlag, den Film-Player vor Cocos2D zu benutzen, nicht effektiv.

Es stellt sich heraus, dass MPMoviePlayerController diese rätselhafte Eigenschaft hat useApplicationAudioSession genannt, die auf YES standardmäßig eingestellt ist. Wenn diese Eigenschaft auf "NO" gesetzt wird, verwendet der Movie-Player eine vom System bereitgestellte Audiositzung mit einer nicht mischbaren Wiedergabekategorie. " (mit freundlicher Genehmigung Apple docs) und behebt übrigens das Verzögerungsproblem.

Ich verlasse mich auf CocosDenshion für Audio und vielleicht ist die Anwendung Audio-Session, wie von CocosDenshion definiert und verwendet, inkompatibel mit der Audio-Session, die vom Movie-Player benötigt wird. Das ist eine totale Spekulation, aber es könnte eine Theorie darüber sein, was vor sich geht.

So oder so, wenn Sie die vom System bereitgestellte Audiositzung verwenden, ist die Videowiedergabe plötzlich synchron.

Verwandte Themen