Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stream Video #3

Open
ankushdhawan opened this issue Feb 2, 2017 · 15 comments
Open

Stream Video #3

ankushdhawan opened this issue Feb 2, 2017 · 15 comments

Comments

@ankushdhawan
Copy link

can we store stream video using this library

@tsheaff
Copy link
Contributor

tsheaff commented Feb 2, 2017

@ankushdhawan it should work, yes. I haven't tested in yet in production though. Let me know how it goes for you and if there are any problems we can fix them — the goal of the library is to support audio and video, and AVPlayer should handle both agnostically.

@ankushdhawan
Copy link
Author

ankushdhawan commented Feb 2, 2017 via email

@tsheaff
Copy link
Contributor

tsheaff commented Feb 2, 2017

@ankushdhawan please be more specific about your issue. "its not work" doesn't help me investigate.

@tsheaff
Copy link
Contributor

tsheaff commented Feb 2, 2017

@ankushdhawan it's possible we may be using this library for video at @calm in our next version, in which case I'll be robustly testing the functionality before that. in either case, a pull request is welcomed if you're able to fix your issue (almost certainly easier than starting from scratch)

@ankushdhawan
Copy link
Author

ankushdhawan commented Feb 3, 2017

video is not showing only sound is working.

@tsheaff
Copy link
Contributor

tsheaff commented Feb 3, 2017

OK I have a few questions:

(1) what is the video format?
(2) have you logged the bits coming in (or just their lengths) and compared with the video file itself?
(3) are there any print statements in your Xcode debug console?

If you can paste a code sample and the video asset's URL I'm happy to investigate further.

@ankushdhawan
Copy link
Author

ankushdhawan commented Feb 3, 2017

  1. Video URL:http://bnotifi.com/voyatone/media/user_video/58940de154821.mp4

let tempPath = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent((videoModel?.video_url)!)
var remoteAudioPlayer = PersistentStreamPlayer(remoteURL:url, localURL: tempPath!)
remoteAudioPlayer?.delegate = self;
remoteAudioPlayer?.addSubView(videoView) 
remoteAudioPlayer?.play()
  1. addSubView function i have create in your library
-(void)addSubView:(UIView *)parent
{
    _playerViewController.view.frame = parent.frame;
    _playerViewController.videoGravity = AVLayerVideoGravityResizeAspectFill;
    [parent addSubview:_playerViewController.view];
}

- (void)prepareToPlay
{
    self.pendingRequests = [NSMutableArray array];

    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:self.audioRemoteStreamingURL options:nil];
    [asset.resourceLoader setDelegate:self queue:dispatch_get_main_queue()];
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset automaticallyLoadedAssetKeys:@[@"duration"]];
    self.player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
    [self.player.currentItem addObserver:self
                              forKeyPath:@"status"
                                 options:NSKeyValueObservingOptionNew
                                 context:NULL];
    _playerViewController.player = self.player;
}

@adenisonafifi
Copy link

@tsheaff I've been looking for a cached video stream solution for AVPlayer. I'll try out your library and see if I can get it working with video.

@tsheaff
Copy link
Contributor

tsheaff commented Feb 10, 2017

@adenisonafifi cheers, much appreciated. As I mentioned, most of the hard work w/r/t streaming to disk and the buffer should be handled, it may be quite easy to get it working (although I'm not positive)

@adenisonafifi
Copy link

It doesn't look like the AVURLAsset loads from the local file if it already exists. Is that true? I would want to avoid re-streaming the asset if it has already been saved.

@tsheaff
Copy link
Contributor

tsheaff commented Feb 10, 2017

Yes that's a good point. That would be a nice addition, and shouldn't break anything for anyone. I was initializing AVAudioPlayer instead of a PersistentStreamPlayer when the file is present, but it makes sense to handle that functionality inside the library.

Another wrinkle is looping, right now looping is particular to audio with

@property (nonatomic, strong) AVAudioPlayer *loopingLocalAudioPlayer;

instead of a generic AVPlayer.

Not critical for v0 of video support though.

@brianhei
Copy link

I tried to integrate the streaming part to my video library and the logic also works for video streaming.

@adenisonafifi
Copy link

Awesome @brianhei. I haven't had a chance to integrate PersistentStreamPlayer. Still on my roadmap though.

@strfn
Copy link

strfn commented May 2, 2017

please check cstlex#1 for streaming from the local filesystem if available.

@Spaculus
Copy link

@ankushdhawan can you help me for video playing using this third party?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants