*本文中涉及的實時監(jiān)控為“雄邁開放平臺”(相關(guān)API)
集成的時候走了很多彎路,希望對有需要集成的朋友有所幫助
主要功能:實現(xiàn)攝像頭監(jiān)控畫面的實時播放;
開發(fā)步驟:
由于維邁所提供的FunSDK是C++混編的,so 需要對工程中所有需要本類,以及方法的地方都需支持C++。將需要用到FunSDK的.m文件直接重命名為.mm文件導(dǎo)入第三方庫: 【OpenAL.framework】【 libresolv】【libiconv】【libbz2】【libz】最后還需要一個【libstdc++.6.0.9】支持C++混編的將FunSDK.framework文件拖入工程
接著就是工程里的一些設(shè)置
build settings里面 搜索
Bitcode

C Language Dialect

Other Linker flags

Framework Search Paths

Apple LLVM 7.0 -Language

Apple LLVM 7.0 - Language -C++

設(shè)置完成還需添加PCH文件 并定義宏? 添加PCH具體就不細(xì)講 搜索一下就能找到
#define OS_IOS 1
編輯導(dǎo)入 在項目AppDelegate.mm
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self FunSDKSetting];
NSString *uuid = @"官網(wǎng)注冊獲取";
NSString *appkey = @"官網(wǎng)注冊獲取";
NSString *appSecret = @"官網(wǎng)注冊獲取";
FUN_XMCloundPlatformInit([uuid UTF8String], [appkey UTF8String], [appSecret UTF8String], @"官網(wǎng)注冊獲取");
return YES;
}
申明常量
const static char* constStrServerAddrs = "223.4.33.127;54.84.132.236;112.124.0.188";
const static short constIntServerPort = 15010;
設(shè)置方法
- (void)FunSDKSetting{
SInitParam pa;
pa.nAppType = H264_DVR_LOGIN_TYPE_MOBILE;
FUN_Init(0, &pa);
FUN_InitNetSDK();
//設(shè)置用于存儲設(shè)備信息等的數(shù)據(jù)配置文件
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [pathArray lastObject];
//設(shè)置配置文件存儲目錄
FUN_SetFunStrAttr(EFUN_ATTR_CONFIG_PATH, [[path stringByAppendingString:@"/Configs/"] UTF8String]);
//設(shè)置升級文件存儲目錄
FUN_SetFunStrAttr(EFUN_ATTR_UPDATE_FILE_PATH,[[path stringByAppendingString:@"/Updates/"] UTF8String]);
//設(shè)置臨時文件存儲目錄
FUN_SetFunStrAttr(EFUN_ATTR_TEMP_FILES_PATH,[[path stringByAppendingString:@"/Temps/"] UTF8String]);
//設(shè)置本地登錄設(shè)備相關(guān)信息保存文件的位置
FUN_SysInit([[path stringByAppendingString:@"/LocalDevs.db"] UTF8String]);
//設(shè)置AP模式(app直連設(shè)備熱點)下設(shè)置設(shè)備信息保存文件位置
FUN_SysInitAsAPModel([[path stringByAppendingString:@"/APDevs.db"] UTF8String]);
//設(shè)置云服務(wù)
FUN_SysInit(constStrServerAddrs, constIntServerPort);
}
定義一個View作為播放視圖 繼承UIView
XmView.h
#import@interface XmView : UIView
@end
XmView.mm
#import "XmView.h"
@implementation XmView
+(Class) layerClass{
return [CAEAGLLayer class];
}
@end
ViewController.mm? 視頻展現(xiàn)在這個控制器
#import "ViewController.h"
#import<FunSDK/FunSDK.h>
#import "XmView.h"
@interface ViewController ()
@end
@implementation ViewController
{
int _myHandle;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //播放窗口
XmView* _playView;? ? ? ? ? ? ? ? ? ? ? ? ? //播放視圖
}
- (void)viewDidLoad {
[super viewDidLoad];
_myHandle = FUN_RegWnd((__bridge void*)self);
FUN_SysGetDevState(FUN_RegWnd((void*)CFBridgingRetain(self)), [@"設(shè)備序列號" UTF8String]);
self.view.backgroundColor = [UIColor whiteColor];
// 1.0 視頻播放界面
_playView = [[XmView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width-125)];
_playView.center = self.view.center;
_playView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:_playView];
}
#pragma mark - SDK 回調(diào)
- (void)OnFunSDKResult:(NSNumber*)pParam
{
NSLog(@"-------------請求數(shù)據(jù)回調(diào)(tatal)---------------------");
_myHandle =
FUN_MediaRealPlay(_myHandle, [@"設(shè)備序列號" UTF8String], 0, 1,(__bridge void*)_playView);
//參數(shù)中,第二個0表示實時視頻的清晰度為高清,若為1則為流暢
FUN_MediaSetSound(_myHandle, 50,0);//設(shè)置設(shè)備的聲音,聲音音量為50%
FUN_MediaGetCurTime(_myHandle);//顯示當(dāng)前時間
FUN_DevGetConfig_Json(_myHandle, [@"設(shè)備序列號" UTF8String],
"SystemInfo", 1024, -1, 5000, 0);
}
點擊屏幕停止播放
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event{
[super touchesBegan:touches withEvent:event];
//停止視頻
FUN_MediaStop(_myHandle);
}
現(xiàn)在在視圖中顯示的為實時監(jiān)控畫面;
--------------在更新sdk的時候出現(xiàn) invalid bitcode signature--------------

解決方法:設(shè)置Build Active Architecture Only

如果還沒解決參考:https://blog.csdn.net/bobbob32/article/details/77008701