我試圖製作一個可以播放ffmpeg和sdl2的各種視頻格式的視頻播放器,並且需要在UIView中顯示視頻幀。在查看SDL api及其樣本後,我無法找到一種方法來實現它。 SDL使用SDL_Renderer
將圖像渲染到SDL_Window
,該圖像保存對UIWindow
(應用程序的主UIWindow)的引用,而不是特定的UIView
。如何使用ffmpeg/sdl播放UIView中的視頻
有什麼建議嗎?
我試圖製作一個可以播放ffmpeg和sdl2的各種視頻格式的視頻播放器,並且需要在UIView中顯示視頻幀。在查看SDL api及其樣本後,我無法找到一種方法來實現它。 SDL使用SDL_Renderer
將圖像渲染到SDL_Window
,該圖像保存對UIWindow
(應用程序的主UIWindow)的引用,而不是特定的UIView
。如何使用ffmpeg/sdl播放UIView中的視頻
有什麼建議嗎?
嗯......這是很多地面覆蓋在這裏,但我會嘗試。
我懷疑除了我們之外,還有許多開發者沒有這樣做。
首先,我不知道任何使用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可以是一個痛苦的經歷有時好運
你有沒有想出一個解決方案?你可以分享它 - 因爲我正在嘗試做同樣的事情。 – Pawan
不,我最終沒有使用SDL。當時不推薦使用適用於iOS的SDL。目前不確定SDL的當前狀態。它可能已經更新。 – jAckOdE
那你用了什麼?你對使用GLKView有什麼看法。 – Pawan