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

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

#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】;

}

相关文章
|
6月前
|
编解码 监控 C++
C++音视频编程探秘
C++音视频编程探秘
231 1
|
Web App开发 编解码 安全
音视频绕不开的话题之WebRTC
闲来无事,我们今天探讨下音视频绕不开的一个话题:WebRTC。WebRTC之于音视频行业,无异于FFMpeg,可以说WebRTC的开源,让音视频行业大跨步进入发展快车道。
190 0
|
2月前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
107 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
3月前
|
Web App开发 网络协议 Android开发
### 惊天对决!Android平台一对一音视频通话方案大比拼:WebRTC VS RTMP VS RTSP,谁才是王者?
【8月更文挑战第14天】随着移动互联网的发展,实时音视频通信已成为移动应用的关键部分。本文对比分析了Android平台上WebRTC、RTMP与RTSP三种主流技术方案。WebRTC提供端到端加密与直接数据传输,适于高质量低延迟通信;RTMP适用于直播场景,但需服务器中转;RTSP支持实时流播放,但在复杂网络下稳定性不及WebRTC。三种方案各有优劣,WebRTC功能强大但集成复杂,RTMP和RTSP实现较简单但需额外编码支持。本文还提供了示例代码以帮助开发者更好地理解和应用这些技术。
149 0
|
缓存 监控 算法
RTMP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTMP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github:
126 0
|
监控 网络协议 算法
RTSP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTSP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github:
108 0
|
Web App开发 前端开发 中间件
WebRTC 实战:实现 P2P 实时视频互动
只有虽然说WebRTC支持P2P,但是需要有一台信令服务器来交换双方的SDP,现在我们就来用Node实现一个信令服务器。
587 0
|
Kubernetes 应用服务中间件 Go
使用Go语言开发流媒体视频网站
基于Go语言实现简单的流媒体视频网站
|
数据安全/隐私保护
关于直播平台开发中流媒体传输,重点干货分享
随着近年来直播行业的飞速发展,直播平台开发的技术日益成熟,直播系统的应用场景也越来越广泛,也离不开流媒体传输的技术支持,本文就主要介绍了当前主流的流媒体传输中推流端及播放端分别需要几步。
关于直播平台开发中流媒体传输,重点干货分享
|
Web App开发 编解码
不需要SFU实现WebRTC联播实践
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/81517933 ...
2758 0