【闡光直播系統(tǒng)】建議:如果自己建視頻直播系統(tǒng)的話,首先你要有相關(guān)的技術(shù)經(jīng)驗或者能組建相關(guān)的團隊。而且要有充足的資金和時間,因為在這個過程中可能會遇到各種問題。但是現(xiàn)在互聯(lián)網(wǎng)公司很多都有開發(fā)好的直播系統(tǒng)軟件,直接做一些UI界面方面的改動,就可以直接使用。而且要想獲得好的人氣的話,還需要有不同的平臺,網(wǎng)站、手機app,如果你用到一些專門的行業(yè)可能還需要一些特殊的功能。因此如果全部自己開發(fā)的話,性價比不是很高。
創(chuàng)新互聯(lián)公司服務(wù)項目包括龍城網(wǎng)站建設(shè)、龍城網(wǎng)站制作、龍城網(wǎng)頁制作以及龍城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,龍城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到龍城省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
個人認為要想把直播從零開始做出來,絕對是牛逼中的牛逼,大牛中的大牛,因為直播中運用到的技術(shù)難點非常之多,視頻/音頻處理,圖形處理,視頻/音頻壓縮,CDN分發(fā),即時通訊等技術(shù),每一個技術(shù)都夠你學幾年的。
首先從main.m文件的main函數(shù)開始執(zhí)行的。
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
//1、principalClassName:應(yīng)用程序?qū)ο蟮念惷║IApplication或其子類)
//2、delegateClassName:應(yīng)用程序delegate的類名。(任何接受了UIApplicationDelegate的類)
UIApplicationMain根據(jù)上述兩個類名創(chuàng)建應(yīng)用程序?qū)嵗?yīng)用程序代理實例。然后建立事件循環(huán)(runloop),檢測程序的各種事件(程序開始啟動,接收到觸摸等等)
在執(zhí)行UIApplicationMain函數(shù)時做了跳轉(zhuǎn),轉(zhuǎn)到了AppDelete中。應(yīng)用程序代理,主要檢測應(yīng)用程序的狀態(tài)并做出相應(yīng)的處理。應(yīng)用程序的狀態(tài)有很多,比如:程序啟動、進入活躍狀態(tài)、進到后臺、內(nèi)存警告、收到遠程消息等等。任何接受了UIApplicationDelegate協(xié)議的對象都可以成為應(yīng)用程序代理。一旦應(yīng)用程序的某種狀態(tài)觸發(fā),就會執(zhí)行相應(yīng)的代理方法。UIApplicationDelegate是一個OC的協(xié)議。里面聲明了一堆方法,這些方法都與應(yīng)用程序運行狀態(tài)有關(guān),它們由應(yīng)用程序代理實現(xiàn)。UIApplication對象負責調(diào)用。
application:didFinishLaunchingWithOptions:告訴delegate程序啟動即將完成,程序準備要運行。(delegate實現(xiàn)這個方法時,要創(chuàng)建window對象,將程序內(nèi)容通過window呈現(xiàn)給用戶。),在該方法中為我們應(yīng)用程序創(chuàng)建window等必要的界面
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//初始化window
self.window.backgroundColor = [UIColor grayColor];//設(shè)置window的背景色
[self.window makeKeyAndVisible];//把window設(shè)置為主視圖
[self.window setRootViewController:[[UIViewController alloc] init]];//設(shè)置window的根視圖控制器
return YES;
}
applicationWillResignActive:程序即將結(jié)束活躍狀態(tài),(例如:突然來電話,短信,下來菜單欄等)就會執(zhí)行該方法,一般在該方法中做一些必要信息的存儲,和一些暫停動作。例如,游戲正在進行時,要暫停游戲
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"*****%s",__func__);//__func__打印方法名
}
applicationDidEnterBackground:程序已經(jīng)進入后臺,如果程序長期在后臺呆著,有可能會退出,所以在該方法中要進行一些重要數(shù)據(jù)的持久化。(按Home鍵)
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"*****%s",__func__);
}
applicationWillEnterForeground:程序即將進入前臺,一般式在程序由后臺進入該程序的時候執(zhí)行該方法
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"*****%s",__func__);
}
applicationDidBecomeActive:告訴delegate應(yīng)用程序已經(jīng)進入活躍狀態(tài)(重新執(zhí)行被暫停的任務(wù)),程序啟動或者由后臺進入前臺都會執(zhí)行該方法
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"*****%s",__func__);
}
applicationWillTerminate:即將退出時執(zhí)行該方法
- (void)applicationWillTerminate:(UIApplication *)application{
NSLog(@"*****%s",__func__);
}
使用的工具:
README.md文件:
框架的描述文件。
編譯語言。
程序在被執(zhí)行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,運行時不需要翻譯,所以編譯型語言的程序執(zhí)行效率高,比如OC,C,C++。
解釋性語言
解釋性語言的程序不需要編譯,在運行程序的時候才翻譯,每個語句都是執(zhí)行的時候才翻譯。
腳本語言。
屬于解析語言,必須通過解釋器解析,將其一條條的翻譯成機器可識別的指令,并按程序順序執(zhí)行。
shell解釋器
shell是一個命令行解釋器,相當于windows的cmd,處于內(nèi)核和用戶之間,負責把用戶的指令傳遞給內(nèi)核并且把執(zhí)行結(jié)果回顯給用戶。
bash
bash是一種shell解釋器版本,shell有很多種版本,就像人,也分不同國家的人。
shell
指的是shell腳本語言,而不是shell解釋器。
步驟:
下載ijkPlayer,打開Demo,查看用法,一般學習第三方庫,都是先查看Demo。
找到ijkPlayerMediaDemo并運行。
打開終端,cd進入到ijkplayer-master的目錄中。
輸入./init-ios.sh,就會執(zhí)行當前腳本了。
執(zhí)行完腳本后,就會發(fā)現(xiàn)ijkplayer中有ffmpeg了。
打開 IJKMediaPlayer庫,查看下源碼,右擊,發(fā)現(xiàn)FFMPEG中的庫都是紅的,表示不存在。
查看ijkplayer的README.md。
需要掌握的知識:
前期需求規(guī)劃與信息——你需要制定出一個完整的需求文檔,功能文檔,流程圖,時序圖。
熟練掌握App發(fā)布的流程,真機調(diào)試技巧,證書,打包,上架。 App開發(fā)其實不一定適合一個人搞,太費勁,除非是一個單機版的小應(yīng)用,或者利用現(xiàn)成的app開發(fā)簡單的第三方應(yīng)用,否則還是讓一個團隊來完成各自擅長的領(lǐng)域。
交互設(shè)計、UI設(shè)計——設(shè)計出基本且完善的原型圖和app基礎(chǔ)的交互設(shè)計效果,之后再根據(jù)這些設(shè)計出完整的UI界面并學會切圖,一些需要做自適應(yīng)的素材圖片需要做點9patch。