2011-09-09 28 views
12

我遇到了一些與MPMoviePlayerController怪異。爲什麼MPMoviePlayerController的setCurrentPlaybackTime進入錯誤的時間?

我想在播放時設置視頻的當前播放時間(文件源)。 這裏是會發生什麼

  1. 播放視頻
  2. 命中按鈕如下跳轉到9.3秒後進入視頻
  3. 播放狀態變化的示例:

一個)播放狀態= 5 (MPMoviePlaybackStateSeekingBackward)。 currentPlaybackTime = 15.74(這是我按下按鈕時所需的時間)

b)播放狀態= 1(MPMoviePlaybackStatePlaying)。 currentPlaybackTime = 7.32

它似乎並不重要,我試圖設置currentPlaybackTime它最終爲7.32。

一些額外的信息: 即使使用MPMoviePlayerController中的內置控件,我也會得到此行爲。例如如果我向前滾動到15秒,它會跳回到7.32

任何想法?這與媒體文件有關嗎?

+1

精確查找取決於內容編碼。您可以重新編碼視頻並強制更多的i-Frames。這會降低壓縮率,但會增加精確搜索的機會。 – Till

+0

它似乎並不特定於內容。 quicktime可以跳到哪個地方? – Ian1971

+0

見下文。事實證明,如果使用AVPlayer,則可以通過使用seekTo:toleranceBefore來更準確地進行準確性:toleranceAfter方法 – Ian1971

回答

6

您應該尋求使用seekToTime或seekToTimeWithSeconds。

CMTime npt = CMTimeMake(9,1); 
[self.player seekToTime:npt]; 

CMTime npt = CMTimeMakeWithSeconds(9.3, 600); 
    [self.player seekToTime:npt toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; 
+1

這應該沒有什麼區別 - currentPlaybackTime是好的。 – Till

+0

我可以確認,如果我切換到AVPlayer,而我有seekToTime相同的問題,因爲我進行進一步調查currentPlaybackTime – Ian1971

+0

還有另一個seekToTime方法,似乎做這項工作。 seekToTime:toleranceBefore:toleranceAfter:。如果你將kCMTimeZero作爲容差傳遞給它,那麼它似乎是準確的。 – Ian1971

1

cdasher我指出了正確的方向,但是這是你應該做的:

尋求使用seekToTime:toleranceBefore:toleranceAfter樣品準確的尋求。對於這一點,你必須使用AVPlayer不MPMediaPlayerController

CMTime npt = CMTimeMakeWithSeconds(9.3, 600); 
[self.player seekToTime:npt toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; 
2

這是一個遲到的反應,但我找到了解決我的問題這是類似的。 您可以修改播放,如下所示:

#define START_TIME 50.0f 
#define END_TIME START_TIME + 20.0f //play for 20 seconds 

MPMoviePlayerController *player = [self moviePlayerController]; 
[player stop]; 
[player setInitialPlaybackTime:START_TIME]; 
[player setEndPlaybackTime:END_TIME]; 
[player play]; 
+1

的函數,它不工作,它與stting currentPlaybackTime屬性相同 – rakeshNS

+0

是的,它不再有效......你是對的。當它最初發佈於2011年10月5日時,它確實有效。 –

+4

MPMoviePlayerController是最糟糕的Apple API。這是非常可怕的錯誤。設置初始播放時間和結束播放時間僅在初始化後第一次起作用。一旦它開始播放,如果我想停止並從同一點重新開始,我必須分配/初始化一個新實例才能使其運行。我已經失去了無數個小時的臭蟲。 – n8tr

相關問題