最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS 本地視頻和網(wǎng)絡視頻流播放實例代碼

 更新時間:2017年07月03日 09:20:59   作者:人生為代碼而活  
本篇文章主要介紹了iOS 本地視頻和網(wǎng)絡視頻流播放實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

需求:最近公司需要做一個樓宇對講的功能:門口機(連接WIFI)撥號對室內(nèi)機(對應的WIFI)的設備進行呼叫,室內(nèi)機收到呼叫之后將對收到的數(shù)據(jù)進行UDP廣播的轉發(fā),手機(連接對應的WIFI)收到視頻流之后,實時的展示視頻數(shù)據(jù)(手機可以接聽,掛斷,手機接聽之后,室內(nèi)機不展示視頻,只是進行轉發(fā)。)

簡單點說就是手機客戶端需要做一個類似于直播平臺的軟件,可以實時的展示視頻,實時的播放接收到的聲音數(shù)據(jù),并且實時將手機麥克風收到的聲音回傳給室內(nèi)機,室內(nèi)機負責轉發(fā)給門口機。

之前從來做過視頻播放都是本地文件的直接播放,從來沒有做過網(wǎng)絡視頻流的播放,百度了很多都是介紹框架怎么使用的,按著它的流程是行不通的,沒有一個詳細的使用流程!!!想哭呀!!!

這篇文章說一下本地視頻文件播放和網(wǎng)絡視頻播放以及三方框架的使用,有不對的地方歡迎指正!!!

 #pragma mark -- 本地視頻文件播放

使用AVFoundation.framework

 第一步:導入框架AVFoundation.framework

//經(jīng)過測試:不導入這個框架也能播放,在第三步使用的時候導入就行了,為了不出現(xiàn)未知的BUG還是乖乖的導入吧!!!

第二步: 拖入一個視頻文件到你的項目中 

第三步: 代碼實現(xiàn)

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h> //需要導入框架

#define EYScreenWidth [[UIScreen mainScreen] bounds].size.width
#define EYScreenHeight [[UIScreen mainScreen] bounds].size.height

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
 [super viewDidLoad];
 
 //1.從mainBundle獲取test.mp4的具體路徑
 NSString * path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
 //2.文件的url
 NSURL * url = [NSURL fileURLWithPath:path];
 
 //3.根據(jù)url創(chuàng)建播放器(player本身不能顯示視頻)
 AVPlayer * player = [AVPlayer playerWithURL:url];
 
 //4.根據(jù)播放器創(chuàng)建一個視圖播放的圖層
 AVPlayerLayer * layer = [AVPlayerLayer playerLayerWithPlayer:player];
 
 //5.設置圖層的大小
 layer.frame = CGRectMake(0, 0, EYScreenWidth, EYScreenHeight);
 
 //6.添加到控制器的view的圖層上面
 [self.view.layer addSublayer:layer];
 
 //7.開始播放
 [player play];
}

@end

#pragma mark -- 網(wǎng)絡視頻流播放

方式一:MobileVLCKit.framework

第一步: 下載MobileVLCKit.framework

 1. 可以去百度官網(wǎng)地址,上面有詳細的編譯步驟,GitHub上面也有詳細的教程!!!--->之后直接進行第六步!!!

 2. 我已經(jīng)編譯好了 真機和模擬器都可以使用的: MobileVLCKit.framework

 鏈接: https://pan.baidu.com/s/1pLz7DTx密碼: te5p

第二步: 將下載下來的zip解壓,MobileVLCKit文件夾中的MobileVLCKit.framework 拖入到你的工程中

第四步: 選擇finish

第五步:添加依賴庫

1:  AudioToolbox.framework

2:  VideoToolbox.framework

3:  CoreMedia.framework

4:  CoreVideo.framework

5:  CoreAudio.framework

6:  AVFoundation.framework

7:  MediaPlayer.framework

8:  libstdc++.6.0.9.tbd

9:  libiconv.2.tbd

10: libc++.1.tbd

11: libz.1.tbd

12: libbz2.1.0.tbd

 共12個

完成之后如圖所示:

第六步: 使用框架

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

//視頻流的路徑,外界傳過來的視頻流的地址
@property (nonatomic, copy) NSString * rtspPath;

@end

 ViewController.m

#import "ViewController.h"
#import <MobileVLCKit/MobileVLCKit.h>

//屏幕寬高的宏
#define EYScreenWidth [[UIScreen mainScreen] bounds].size.width
#define EYScreenHeight [[UIScreen mainScreen] bounds].size.height

@interface ViewController ()

//視頻播放
@property (nonatomic, strong) VLCMediaPlayer *player;

@end

@implementation ViewController

- (void)viewDidLoad {
 [super viewDidLoad];

 //1.創(chuàng)建播放視圖,模擬器測試會有問題!!!真機可以正常播放
 UIView *videoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, EYScreenWidth, EYScreenHeight)];
 [self.view addSubview:videoView];

 //2.創(chuàng)建播放器
 self.player = [[VLCMediaPlayer alloc] initWithOptions:nil];

 //3.設置播放圖層
 self.player.drawable = videoView;

 //4.設置播放的路徑
 self.player.media = [VLCMedia mediaWithURL:[NSURL URLWithString:self.rtspPath]];

 //5.開始播放
 [self.player play];
}

- (void)dealloc
{
 if (self.player.isPlaying) {
  [self.player stop];
 }
}

@end

第七步: 真機測試

Command + R 運行報錯

 

 在工程設置中,Setting搜索bitcode,將Yes修改為No

 

如果出現(xiàn)下圖錯誤,將對應文件的第38行代碼注釋掉就行了!

 

再次運行就是OK了!!!

如果不好使嘗試將ViewController.m----->ViewController.mm

如果上面的路徑是本地路徑的話,是可以播放本地視頻的!!!

方式二: IJKMediaFramework 

第一步: 下載IJKMediaFramework

 1. 可以去百度官網(wǎng)地址,上面有詳細的編譯步驟,GitHub上面也有詳細的教程!!! -->之后直接進行第三步!!!

 2. 我已經(jīng)編譯好了 真機和模擬器都可以使用的:IJKMediaFramework

鏈接: https://pan.baidu.com/s/1o8G4ETG密碼: 3cbr   

 第二步: 將下載下來的IJK.zip解壓,IJK文件夾中的

1、IJKMediaFramework.framework

2、libcrypto.a

3、librtmp.a

4、libssl.a

總共4個拖入到你的工程中

第三步: 編寫代碼 

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

//視頻流的路徑
@property (nonatomic, copy) NSString * rtspPath;

@end

ViewController.m

#import "ViewController.h"
#import <IJKMediaFramework/IJKMediaFramework.h>

// 宏定義
#define EYScreenBounds [UIScreen mainScreen].bounds

@interface ViewController ()

@property (nonatomic, strong) IJKFFMoviePlayerController * ijkPlayer;

@end

@implementation ViewController

- (void)viewDidLoad {
 [super viewDidLoad];

 //初始化播放控制器
 self.ijkPlayer = [[IJKFFMoviePlayerController alloc] initWithContentURLString:self.rtspPath withOptions:nil];

 //設置打印級別, 測試發(fā)現(xiàn)沒有什么效果
 [IJKFFMoviePlayerController setLogLevel:k_IJK_LOG_DEBUG];

 //設置控制器的view大小
 self.ijkPlayer.view.frame = EYScreenBounds;

 //控制器的view添加到自身的view上面
 [self.view addSubview:self.ijkPlayer.view];
}

- (void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];

 if (!self.ijkPlayer.isPlaying) {
  //播放
  [self.ijkPlayer prepareToPlay];
 }
}

- (void)viewWillDisappear:(BOOL)animated
{
 [super viewWillDisappear:animated];

 if (self.ijkPlayer.isPlaying) {
  //關閉
  [self.ijkPlayer shutdown];
 }
}

@end

注意點:方式一和方式二只能使用一個,因為他們兩個會有沖突,暫時沒有找到解決方案!!!(個人感覺應該是方式二中的.a與系統(tǒng)的.tbd有沖突)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 淺談iOS中幾個常用協(xié)議 NSCopying/NSMutableCopying

    淺談iOS中幾個常用協(xié)議 NSCopying/NSMutableCopying

    下面小編就為大家分享一篇淺談iOS中幾個常用協(xié)議 NSCopying/NSMutableCopying,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • iOS中幾種定時器的實現(xiàn)小結

    iOS中幾種定時器的實現(xiàn)小結

    這篇文章主要介紹了iOS中幾種定時器的實現(xiàn)小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • iOS開發(fā)中蘋果輸入手機號變用戶的名字

    iOS開發(fā)中蘋果輸入手機號變用戶的名字

    今天我們的用戶輸入手機號之后變成了用戶的名字,沒辦法獲取驗證碼,因為手機格式不對。下面通過本文給大家分享開發(fā)中蘋果輸入手機號變用戶的名字,需要的朋友可以參考下
    2017-05-05
  • iOS開發(fā)之UITableView左滑刪除等自定義功能

    iOS開發(fā)之UITableView左滑刪除等自定義功能

    今天來給大家介紹下iOS開發(fā)中UITableView左滑實現(xiàn)微信中置頂,刪除等功能。對大家開發(fā)iOS具有一定的參考借鑒價值,有需要的朋友們一起來看看吧。
    2016-09-09
  • IOS9.0 LaunchScreen.StroyBoard自定義啟動圖片詳解

    IOS9.0 LaunchScreen.StroyBoard自定義啟動圖片詳解

    這篇文章主要介紹了IOS9.0 LaunchScreen.StroyBoard自定義啟動圖片詳解的相關資料,需要的朋友可以參考下
    2017-02-02
  • iOS通過攝像頭圖像識別技術分享

    iOS通過攝像頭圖像識別技術分享

    本篇文章給大家詳細講述了讓IOS開發(fā)中通過攝像頭進行圖像識別的相關技術,對此有興趣的朋友參考學習下吧。
    2018-02-02
  • IOS上iframe的滾動條失效的解決辦法

    IOS上iframe的滾動條失效的解決辦法

    這篇文章主要為大家詳細介紹了IOS上iframe的滾動條失效的解決辦法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS代碼瘦身實踐之如何刪除無用的類

    iOS代碼瘦身實踐之如何刪除無用的類

    這篇文章主要給大家介紹了關于iOS代碼瘦身實踐之如何刪除無用的類,文中通過示例代碼介紹的非常詳細,對大家各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Flutter?Widgets之標簽類控件Chip詳解

    Flutter?Widgets之標簽類控件Chip詳解

    這篇文章主要為大家介紹了Flutter?Widgets之標簽類控件Chip詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • iOS應用開發(fā)中UIScrollView滾動視圖的基本用法總結

    iOS應用開發(fā)中UIScrollView滾動視圖的基本用法總結

    這篇文章主要介紹了iOS應用開發(fā)中UIScrollView滾動視圖的基本用法總結,作者還介紹了重寫UIScrollView中的hitTest方法來解決長按的事件問題,需要的朋友可以參考下
    2016-02-02

最新評論

铜梁县| 广汉市| 陆河县| 栾川县| 岑溪市| 清镇市| 千阳县| 玉山县| 古丈县| 潼南县| 娄底市| 肃宁县| 武宁县| 三穗县| 宁陕县| 兴和县| 延安市| 桂林市| 凤台县| 会理县| 合江县| 彰武县| 巫溪县| 榆社县| 双桥区| 盈江县| 临安市| 资源县| 子长县| 西吉县| 封开县| 城市| 隆回县| 罗源县| 垣曲县| 汤阴县| 恩施市| 彭阳县| 吉林省| 商丘市| 甘泉县|