如何使用ffmpeg / sdl在UIView中播放视频

时间:2012-10-17 08:17:55

标签: ios ffmpeg sdl sdl-2

我正在尝试制作一个可以使用ffmpeg和sdl2播放各种视频格式的视频播放器,我需要在UIView中显示视频帧。在查看SDL api及其样本后,我找不到办法。 SDL使用SDL_Renderer将图片呈现到SDL_Window,其中包含对UIWindow(应用的主UIWindow)的引用,而不是特定的UIView

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

嗯......这里有很多理由可以覆盖,但我会试试。

我怀疑除了我们以外没有很多开发人员这样做过。

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

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

注意app委托,它创建一个视图控制器,用于创建一个sdl窗口并启动播放器。

注意文件夹uikit,uikit是sdl与sdl接口的部分。这里的app委托可以修改,这个设置为使用两个窗口并在它们之间交换,但我们也使用以下方法交换视图。

-(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没有很好的结合,如果你编写一个考虑了sdl限制的应用,那么它们往往会变得迟钝rtspplay你得到一个不错的视频播放器,但添加到现有的应用程序可能会有问题。

在同一个git中有本机应用程序的示例。工作sdl可能是一个痛苦的经历,有时好运