2012-10-17 56 views
1

我試圖製作一個可以播放ffmpeg和sdl2的各種視頻格式的視頻播放器,並且需要在UIView中顯示視頻幀。在查看SDL api及其樣本後,我無法找到一種方法來實現它。 SDL使用SDL_Renderer將圖像渲染到SDL_Window,該圖像保存對UIWindow(應用程序的主UIWindow)的引用,而不是特定的UIView如何使用ffmpeg/sdl播放UIView中的視頻

有什麼建議嗎?

+0

你有沒有想出一個解決方案?你可以分享它 - 因爲我正在嘗試做同樣的事情。 – Pawan

+0

不,我最終沒有使用SDL。當時不推薦使用適用於iOS的SDL。目前不確定SDL的當前狀態。它可能已經更新。 – jAckOdE

+0

那你用了什麼?你對使用GLKView有什麼看法。 – Pawan

回答

1

嗯......這是很多地面覆蓋在這裏,但我會嘗試。

我懷疑除了我們之外,還有許多開發者沒有這樣做。

首先,我不知道任何使用sdl2的解決方案,但sdl 1.3當然可以。

https://github.com/mooncatventures-group/RTSPPlay

通知應用程序的委託,它創建創建一個SDL窗口並啓動播放機的視圖控制器。

注意文件夾uikit,uikit是與sdl接口的sdl的一部分。這裏的應用程序委託可以被修改,這個被設置爲使用兩個窗口並且在它們之間進行交換,但我們也使用了下列方法來交換視圖。

-(void) swapViews { 
    UIWindow *windows = [[UIApplication sharedApplication] keyWindow]; 
    NSLog(@"the app has %d views ",[windows.subviews count]); 
    //toggle_pause(); 
    UIView *view = [window.subviews objectAtIndex:0]; 
    [view removeFromSuperview]; 
    [windows addSubview:view]; 
} 



-(void) swapViewsWithTransition { 
    UIWindow *windows = [[UIApplication sharedApplication] keyWindow]; 
    UIView *firstView = [window.subviews objectAtIndex:0]; 
    UIView *secondView = [window.subviews objectAtIndex:1];  
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1]; 
    [UIView setAnimationTransition:([secondView superview] ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft) forView:firstView cache:YES]; 
    [firstView removeFromSuperview]; 
    [windows addSubview:firstView]; 
    [UIView commitAnimations]; 




} 

前段時間,我在這裏寫了一篇關於sdl論壇的帖子。

http://forums.libsdl.org/viewtopic.php?t=7352&sid=6b714337317597eaca026ae6be968b3e

有一些注意事項,使用這些技術

RTSPPlay幾乎可以播放你把它做好任何視頻,但SDL事件循環不與蘋果runloops發揮出色,tableviews是特別麻煩,他們往往會變得呆滯,如果你編寫一個應用程序時考慮sdl限制,比如rtspplay,你會得到一個不錯的視頻播放器,但是添加到現有的應用程序可能會產生問題。

在同一個git中有本地應用程序的例子。工作SDL可以是一個痛苦的經歷有時好運

+0

是否已將您的應用上傳到iTune應用商店? – jAckOdE

+1

如果問題是關於可以在應用程序商店中銷售sdl應用程序,那麼絕對是我認識的幾個人。至於我們,不,但只是因爲我們想出了使用蘋果api來完成相同的事情的方法 –

+0

感謝您的答案。我正在使用ffmpeg製作視頻播放器,並在決定是使用SDL還是使用ios的api時掙扎。既然你在這兩方面都有經驗,你能給我一個建議嗎?我知道這話題很少,但我希望你不要介意。 – jAckOdE