我正在尝试为 Mac OSX 10.10 开发一个 Cocoa 应用程序,它在 VLCKit 中实现了一些视频流。
现在:

  • 我已经编译了 .framework 库并将它导入到 Xcode 中。
  • 我在 Main.storyboard 中添加了一个 自定义 View 并将其设置为 VLCVideoView


  • 在我的 ViewController.h 中,我实现了 VLCMediaPlayerDelegate 以接收来自玩家的通知

  • 这是我的代码:

    viewController.h
    #import <Cocoa/Cocoa.h>
    #import <VLCKit/VLCKit.h>
    
    @interface ViewController : NSViewController<VLCMediaPlayerDelegate>
    
    @property (weak) IBOutlet VLCVideoView *_vlcVideoView;
    
    //delegates
    - (void)mediaPlayerTimeChanged:(NSNotification *)aNotification;
    
    @end
    

    viewController.m
    #import "ViewController.h"
    
    @implementation ViewController
    {
        VLCMediaPlayer *player;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [player setDelegate:self];
    
        [self._vlcVideoView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable];
        self._vlcVideoView.fillScreen = YES;
    
        player = [[VLCMediaPlayer alloc] initWithVideoView:self._vlcVideoView];
    
        NSURL *url = [NSURL URLWithString:@"http://MyRemoteUrl.com/video.mp4"];
    
        VLCMedia *movie = [VLCMedia mediaWithURL:url];
        [player setMedia:movie];
        [player play];
    }
    
    - (void)mediaPlayerTimeChanged:(NSNotification *)aNotification
    {
        //Here I want to retrieve the current video position.
    }
    
    @end
    

    视频开始并正确播放。但是我无法让代表工作。
    我错在哪里?

    以下是我的问题:
  • 如何设置代理以接收有关当前玩家时间的通知?
  • 如何阅读 NSNotification? (我不太习惯 Obj-C)

  • 提前感谢您的任何回答!

    最佳答案

    我搞定了!

  • 如何设置代理以接收有关当前玩家时间的通知?我不得不向 NSNotificationCenter 添加一个 观察者

  • 这是代码:
    - (void)viewDidLoad
    {
       [super viewDidLoad];
    
       [player setDelegate:self];
       [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mediaPlayerTimeChanged:) name:VLCMediaPlayerTimeChanged object:nil];
    }
    
  • 如何阅读 NSNotification?我必须在通知中检索 VLCMediaPlayer 对象。

  • 代码:
    - (void)mediaPlayerTimeChanged:(NSNotification *)aNotification
    {
       VLCMediaPlayer *player = [aNotification object];
       VLCTime *currentTime = player.time;
    }
    

    关于objective-c - VLCKit : VLCMediaPlayerDelegate in a Cocoa Application,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26769546/

    10-13 08:44