在iOS上使用AVFoundation为AirPlay视频添加字幕?

时间:2012-10-16 12:41:58

标签: ios avfoundation avplayer

有没有办法在使用带有AVPlayer的av AVPlayerItem的iOS上通过AirPlay显示字幕?我目前通过向视图层次结构添加标签来实现字幕,这在应用程序中运行良好,但这显然不适用于AirPlay。

那么,有没有办法使用AVFoundation在AirPlay上显示字幕?

2 个答案:

答案 0 :(得分:1)

您提到您已经通过为CC创建视图并将其添加到视频之上来实现自己的CC。使用AirPlay镜像会更容易。您可以通过检测外部屏幕然后将内容放在其上来执行此操作。

// detecting an external screen
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myExternalScreenDetected:) name:UIScreenDidConnectNotification object:nil];

//
// Grab external screen then add the content
- (void)myExternalScreenDetected:(UIScreen *)externalScreen {
    UIWindow *window = [[UIWindow alloc] initWithFrame:externalScreen.bounds];

    // ...add content to the window...

    window.screen = externalScreen;
    window.hidden = NO;
}

另一种选择是使用本机隐藏式字幕。这可以通过将语言文件(WebVTT格式)添加到m3u8播放列表中来完成。我没试过这个。这似乎更复杂。您可以在此处查看Apple的视频:https://developer.apple.com/videos/wwdc/2012/?id=512

镜像功能似乎比原生方式更容易实现CC。然而,原生视频播放具有更好的性能,因为AppleTV加载播放列表文件(m3u8)并直接播放内容。镜像AirPlay必须重新压缩输出并发送到AppleTV。

答案 1 :(得分:0)

您可能已经想到了这一点,但是当您播放Apple TV时,您的隐藏字幕未显示的原因可能是您的AppleTV关闭了字幕。