程序员必知:关于流媒体视频

简介: 程序员必知:关于流媒体视频

#import "ViewController.h"

#import

#import

/

/

static const NSString PlayerItemStatusContext;

@interface ViewController ()

@property (nonatomic, strong) AVPlayer player;

@end

@implementation ViewController

- (void)viewDidLoad {

【super viewDidLoad】;

// //1. 根据网址创建AVPlayer

// self.player = 【AVPlayer playerWithURL:【NSURL URLWithString:@""】】;

//

// //2. 创建PlayerLayer

// AVPlayerLayer playerLayer = 【AVPlayerLayer playerLayerWithPlayer:self.player】;

//

// //3. 设置大小

// playerLayer.frame = self.view.bounds;

//

// //4. 添加到layer中

// 【self.view.layer addSublayer:playerLayer】;

//

// //5. 播放

// 【self.player play】;

//

}

- (IBAction)playLocalVideoClick:(id)sender {

NSURL assetURL = 【【NSBundle mainBundle】 URLForResource:@"02开发环境.mp4" withExtension:nil】;

//

// AVAsset asset = 【AVAsset assetWithURL:assetURL】;

//

// AVPlayerItem playerItem = 【AVPlayerItem playerItemWithAsset:asset】;

//

// 【playerItem addObserver:self forKeyPath:@"status" options:0 context:PlayerItemStatusContext】;

//

// self.player = 【AVPlayer playerWithPlayerItem:playerItem】;

self.player = 【AVPlayer playerWithURL:assetURL】;

AVPlayerLayer playerLayer = 【AVPlayerLayer playerLayerWithPlayer:self.player】;

playerLayer.frame = self.view.bounds;

【self.view.layer addSublayer:playerLayer】;

【self.player play】;

}

- (IBAction)playRomoteVideoClick:(id)sender {

//1. AVPlayerItem会创建媒体资源动态视角的数据模型(比如当前播放时间, 实现时间跳转等), 并保存AVPlayer在播放资源时的呈现状态

AVPlayerItem playerItem = 【AVPlayerItem playerItemWithURL:【NSURL URLWithString:@""】】;

【playerItem addObserver:self forKeyPath:@"status" options:0 context:PlayerItemStatusContext】;

self.player = 【AVPlayer playerWithPlayerItem:playerItem】;

AVPlayerLayer playerLayer = 【AVPlayerLayer playerLayerWithPlayer:self.player】;

playerLayer.frame = self.view.bounds;

【self.view.layer addSublayer:playerLayer】;

}

- (void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary<NSString ,id

{

if (context == PlayerItemStatusContext) {

AVPlayerItem playerItem = (AVPlayerItem )object;

if (playerItem.status == AVPlayerItemStatusReadyToPlay) {

【self.player play】;

}

}

}

- (IBAction)mpVCPlayRomoteClick:(id)sender {

MPMoviePlayerViewController mpvc = 【【MPMoviePlayerViewController alloc】 initWithContentURL:【NSURL URLWithString:@""】】;

【self presentModalViewController:mpvc animated:YES】;

}//代码效果参考:http://www.ezhiqi.com/zx/art_3244.html

- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event

{

// 【self.player play】;

}//代码效果参考:http://www.ezhiqi.com/bx/art_963.html

这是一个小demo的实现

#import "ViewController.h"

#import

#import

@interface ViewController ()

@property(nonatomic,strong)AVPlayer player;//播放对象

@property(nonatomic,strong)MPMoviePlayerController *mc;

@end

@implementation ViewController

- (void)viewDidLoad {

【super viewDidLoad】;

// Do any additional setup after loading the view, typically from a nib.

}//代码效果参考:http://www.ezhiqi.com/zx/art_2750.html

/

/

- (IBAction)clik:(id)sender {

//1mpc:

// self.mc=【【MPMoviePlayerController alloc】initWithContentURL:【NSURL URLWithString:@""】】;

// self.mc.view.frame=CGRectMake(0, 200, 375, 200);

// 【self.view addSubview:self.mc.view】;

// 【self.mc play】;

//2mpvc

// MPMoviePlayerViewController mpv=【【MPMoviePlayerViewController alloc】initWithContentURL:【NSURL URLWithString:@""】】;

// 【self presentViewController:mpv animated:YES completion:nil】;

//3Aplayer

//根据网址创建

self.player=【AVPlayer playerWithURL:【NSURL URLWithString:@""】】;

AVPlayerLayer *player=【AVPlayerLayer playerLayerWithPlayer:self.player】;

player.frame=self.view.bounds;

【self.view.layer addSublayer:player】;

//播放

【self.player play】;

}

相关文章
|
8月前
|
编解码 监控 C++
C++音视频编程探秘
C++音视频编程探秘
246 1
|
Web App开发 编解码 安全
音视频绕不开的话题之WebRTC
闲来无事,我们今天探讨下音视频绕不开的一个话题:WebRTC。WebRTC之于音视频行业,无异于FFMpeg,可以说WebRTC的开源,让音视频行业大跨步进入发展快车道。
196 0
|
人工智能 Linux 测试技术
流媒体:浅谈传统媒体—>流媒体—>加P2P的流媒体的演变之路
从传统媒体—&gt;流媒体—&gt;含P2P流媒体:技术复杂度逐渐递增,人的体验越来越好;随着人类的生活越来越丰富需求越来越高,从而推动技术在不断的发展;
188 0
|
4月前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
129 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
监控 网络协议 算法
RTSP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTSP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github:
115 0
|
缓存 监控 算法
RTMP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTMP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github:
133 0
|
Web App开发 编解码 JavaScript
WebRTC技术笔记笔记:WebRTC 网络技术理论与实战(一)
WebRTC 网络技术理论与实战(一) - WebRTC 概述
209 0
|
Web App开发 编解码 Linux
webRTC开篇
WebRTC系列
277 0
|
Web App开发 安全 算法
【WebRTC原理探索】未来可期,WebRTC的诞生发展
【WebRTC原理探索】未来可期,WebRTC的诞生发展
344 0
【WebRTC原理探索】未来可期,WebRTC的诞生发展
|
Web App开发 编解码 移动开发