整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          使用HTML 5和Windows 10 IoT構建智

          使用HTML 5和Windows 10 IoT構建智能魔鏡

          1. 《伸展型可穿戴集成電路問世》 據每日科學網消息,美國威斯康星大學麥迪遜分校的工程師近日研制出了全球運行速度最快的伸展型可穿戴集成電路,有望推動整個物聯網甚至互聯程度更高的高速無線網絡的發展。相關研究成果發表在日前出版的《先進功能材料》雜志上。

          2. 《微軟發力布局物聯網 發布IoT開發套件》在近期舉行的微軟開發者峰會上,微軟首席執行官薩提亞·納德拉宣布,將在中國建立微軟物聯網實驗室,推動中國物聯網產業升級轉型,助力中國加速數字化轉型。物聯網開發套件的發布將有助于微軟進一步在中國構建物聯網開發生態。

          3. 《京東推出"叮咚"智能音箱,將語音打造成物聯網入口》2016年6月2日,“叮咚(DingDong)開放平臺”戰略發布召開。叮咚(DingDong)開放平臺基于訊飛智能云,通過語音交互使智慧家庭物聯網成為可能。此次發布會還推出了叮咚(DingDong)靈動版和悅動版兩款智能音箱新品。

          4. 《Marvell推針對可穿戴應用IoT應用處理器》2016年6月2日臺北電腦展期間,為存儲、云基礎設施、物聯網(IoT)、互聯和多媒體應用提供半導體解決方案的美滿電子科技宣布針對家庭自動化、工業和可穿戴應用推出高度優化的IoT應用處理器系列——IAP220 SoC,采用ARM Cortex-A7雙核處理器,可為許多IoT產品提供所需的低功耗和高性能運算特性。

          技術

          1. 《打造DIY版Echo:樹莓派+ Alexa 語音服務》本文詳細闡述了如何在Java客戶端和Node.js服務器上使用和測試Alexa語音服務。在Raspberry Pi上搭建Node.js服務器來作為音頻中轉——接受音頻文件并傳輸信號到Alexa語音服務器。在對應的客戶端創建Java應用來接受音頻信號,與Alexa進行語音對話。

          2. 《基于MQTT協議與Apache Kafka的物聯網)》本文介紹并實現了基于MQTT與Kafka搭建的分布式物聯網構架。在硬件端上使用MQTT協議來傳輸傳感器數據,上傳數據時將借由Kafka MQTT Bridge來傳輸數據,并存儲至基于Zookeeper管理的Kafka消息集群。同時在接收傳感器數據的客戶端上,也只需要使用MQTT協議就可以訂閱數據。

          3. 《使用HTML 5和Windows 10 IoT 構建智能魔鏡》本文介紹了微軟在Build 2016推出的基于Hosted Web App和Windows 10 IoT Core的魔鏡項目,這款鏡子可以自動識別人臉并顯示出天氣、日期、時間和地理位置等信息。它在Raspbery Pi 3使用了HTML5技術在Windows 10 IoT Core上開發應用,并在Azure上開始相應的應用來對接微軟的Cognitive Services服務。通過這個服務,鏡子可以識別用戶的身份,并為之匹配對應的屬性。

          開源軟件

          1. libnfc是一個開源的NFC軟件工具開發包,它可以支持Linux、Windows、Mac OS X等平臺。其主要驅動是基于PCSC-Lite和libusb,可以支持ARYGON、Touchatag等設備以及各種NFC加密狗。

          2. Python Enocean是一個用Python語言實用的讀取和控制EnOcean設備的庫。EnOcean是一種基于能量收集的超低功耗短距離無線通信技術。

          3. Magic Mirror是微軟推出的基于UWP Hosted Web App及Windows IoT Core的開源物聯網項目,它使用了微軟的諸多AI云服務來實現其智能化。

          硬件

          1. Carloop是一個可以在Internet控制你的汽車的開源工具包。它基于Particle的Photon和Electron控制器,并提供了一些易于使用的庫來跟蹤汽車的GPS、記錄里程又或者是檢查你的引擎碼。它即插即用,并且不需要額外的電纜。

          感謝徐川對本文的審校。

          給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號:InfoQChina)關注我們。

          您好,朋友!

          您需要注冊一個InfoQ賬號或者登錄才能進行評論。在您完成注冊后還需要進行一些設置。

          獲得來自InfoQ的更多體驗。

          告訴我們您的想法

          社區評論

          by

          發布于

          前不久抽空對目前比較火的視頻直播,做了下研究與探索,了解其整體實現流程,以及探討移動端HTML5直播可行性方案。

          發現目前 WEB 上主流的視頻直播方案有 HLS 和 RTMP,移動 WEB 端目前以 HLS 為主(HLS存在延遲性問題,也可以借助 video.js 采用RTMP),PC端則以 RTMP 為主實時性較好,接下來將圍繞這兩種視頻流協議來展開H5直播主題分享。

          一、視頻流協議HLS與RTMP

          1. HTTP Live Streaming

          HTTP Live Streaming(簡稱 HLS)是一個基于 HTTP 的視頻流協議,由 Apple 公司實現,Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了對 HLS 的支持。一些常見的客戶端如:MPlayerX、VLC 也都支持 HLS 協議。

          HLS 協議基于 HTTP,而一個提供 HLS 的服務器需要做兩件事:

          編碼:以 H.263 格式對圖像進行編碼,以 MP3 或者 HE-AAC 對聲音進行編碼,最終打包到 MPEG-2 TS(Transport Stream)容器之中;分割:把編碼好的 TS 文件等長切分成后綴為 ts 的小文件,并生成一個 .m3u8 的純文本索引文件;瀏覽器使用的是 m3u8 文件。m3u8 跟音頻列表格式 m3u 很像,可以簡單的認為 m3u8 就是包含多個 ts 文件的播放列表。播放器按順序逐個播放,全部放完再請求一下 m3u8 文件,獲得包含最新 ts 文件的播放列表繼續播,周而復始。整個直播過程就是依靠一個不斷更新的 m3u8 和一堆小的 ts 文件組成,m3u8 必須動態更新,ts 可以走 CDN。一個典型的 m3u8 文件格式如下:

          #EXTM3U
          #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
          gear1/prog_index.m3u8
          #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111
          gear2/prog_index.m3u8
          #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444
          gear3/prog_index.m3u8
          #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777
          gear4/prog_index.m3u8

          可以看到 HLS 協議本質還是一個個的 HTTP 請求 / 響應,所以適應性很好,不會受到防火墻影響。但它也有一個致命的弱點:延遲現象非常明顯。如果每個 ts 按照 5 秒來切分,一個 m3u8 放 6 個 ts 索引,那么至少就會帶來 30 秒的延遲。如果減少每個 ts 的長度,減少 m3u8 中的索引數,延時確實會減少,但會帶來更頻繁的緩沖,對服務端的請求壓力也會成倍增加。所以只能根據實際情況找到一個折中的點。

          對于支持 HLS 的瀏覽器來說,直接這樣寫就能播放了:

          <video src=”./bipbopall.m3u8″ height=”300″ width=”400″  preload=”auto” autoplay=”autoplay” loop=”loop” webkit-playsinline=”true”></video>

          注意:HLS 在 PC 端僅支持safari瀏覽器,類似chrome瀏覽器使用HTML5 video

          標簽無法播放 m3u8 格式,可直接采用網上一些比較成熟的方案,如:sewise-player、MediaElement、videojs-contrib-hls、jwplayer。

          程序猿的生活:web前端全棧資料粉絲福利(面試題、視頻、資料筆記,進階路線)zhuanlan.zhihu.com/p/136454207

          2. Real Time Messaging Protocol

          Real Time Messaging Protocol(簡稱 RTMP)是 Macromedia 開發的一套視頻直播協議,現在屬于 Adobe。這套方案需要搭建專門的 RTMP 流媒體服務如 Adobe Media Server,并且在瀏覽器中只能使用 Flash 實現播放器。它的實時性非常好,延遲很小,但無法支持移動端 WEB 播放是它的硬傷。

          雖然無法在iOS的H5頁面播放,但是對于iOS原生應用是可以自己寫解碼去解析的, RTMP 延遲低、實時性較好。瀏覽器端,HTML5 video

          標簽無法播放 RTMP 協議的視頻,可以通過 video.js 來實現。

          <link href=“http://vjs.zencdn.net/5.8.8/video-js.css” rel=“stylesheet”>
          <video id=“example_video_1″ class=“video-js vjs-default-skin” controls preload=“auto” width=“640” height=“264” loop=“loop” webkit-playsinline>
          <source src=“rtmp://10.14.221.17:1935/rtmplive/home” type=‘rtmp/flv’>
          </video>
          <script src=“http://vjs.zencdn.net/5.8.8/video.js”></script>
          <script>
          videojs.options.flash.swf=‘video.swf’;
          videojs(‘example_video_1′).ready(function() {
          this.play();
          });
          </script>


          3. 視頻流協議HLS與RTMP對比


          二、直播形式

          目前直播展示形式,通常以YY直播、映客直播這種頁面居多,可以看到其結構可以分成三層:

          ① 背景視頻層

          ② 關注、評論模塊

          ③ 點贊動畫

          而現行H5類似直播頁面,實現技術難點不大,其可以通過實現方式分為:

          ① 底部視頻背景使用video視頻標簽實現播放

          ② 關注、評論模塊利用 WebScoket 來實時發送和接收新的消息通過DOM 和 CSS3 實現

          ③ 點贊利用 CSS3 動畫

          了解完直播形式之后,接下來整體了解直播流程。

          相關學習資料推薦,點擊下方鏈接免費報名,先碼住不迷路~】

          音視頻免費學習地址:FFmpeg/WebRTC/RTMP/NDK/Android音視頻流媒體高級開發

          【免費分享】音視頻學習資料包、大廠面試題、技術視頻和學習路線圖,資料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點擊788280672加群免費領取~

          三、直播整體流程

          直播整體流程大致可分為:

          視頻采集端:可以是電腦上的音視頻輸入設備、或手機端的攝像頭、或麥克風,目前以移動端手機視頻為主。

          直播流視頻服務端:一臺Nginx服務器,采集視頻錄制端傳輸的視頻流(H264/ACC編碼),由服務器端進行解析編碼,推送RTMP/HLS格式視頻流至視頻播放端。

          視頻播放端:可以是電腦上的播放器(QuickTime Player、VLC),手機端的native播放器,還有就是 H5 的video標簽等,目前還是以手機端的native播放器為主。

          (web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

          四、H5 錄制視頻

          對于H5視頻錄制,可以使用強大的 webRTC (Web Real-Time Communication)是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,缺點是只在 PC 的 Chrome 上支持較好,移動端支持不太理想。

          使用 webRTC 錄制視頻基本流程

          ① 調用 window.navigator.webkitGetUserMedia()

          獲取用戶的PC攝像頭視頻數據。

          ② 將獲取到視頻流數據轉換成 window.webkitRTCPeerConnection

          (一種視頻流數據格式)。

          ③ 利用 WebScoket

          將視頻流數據傳輸到服務端。

          注意:

          雖然Google一直在推WebRTC,目前已有不少成型的產品出現,但是大部分移動端的瀏覽器還不支持 webRTC(最新iOS 10.0也不支持),所以真正的視頻錄制還是要靠客戶端(iOS,Android)來實現,效果會好一些。


          WebRTC支持度

          WebRTC支持度

          iOS原生應用調用攝像頭錄制視頻流程

          ① 音視頻的采集,利用AVCaptureSession和AVCaptureDevice可以采集到原始的音視頻數據流。

          ② 對視頻進行H264編碼,對音頻進行AAC編碼,在iOS中分別有已經封裝好的編碼庫(x264編碼、faac編碼、ffmpeg編碼)來實現對音視頻的編碼。

          ③ 對編碼后的音、視頻數據進行組裝封包。

          ④ 建立RTMP連接并上推到服務端。


          五、搭建Nginx+Rtmp直播流服務

          安裝nginx、nginx-rtmp-module

          ① 先clone nginx項目到本地:

          brew tap homebrew/nginx

          ② 執行安裝nginx-rtmp-module

          brew install nginx-full –with-rtmp-module

          2. nginx.conf配置文件,配置RTMP、HLS

          查找到nginx.conf配置文件(路徑/usr/local/etc/nginx/nginx.conf),配置RTMP、HLS。

          ① 在http節點之前添加 rtmp 的配置內容:

          ② 在http中添加 hls 的配置

          3. 重啟nginx服務

          重啟nginx服務,瀏覽器中輸入 http://localhost:8080,是否出現歡迎界面確定nginx重啟成功。

          nginx -s reload

          六、直播流轉換格式、編碼推流

          當服務器端接收到采集視頻錄制端傳輸過來的視頻流時,需要對其進行解析編碼,推送RTMP/HLS格式視頻流至視頻播放端。通常使用的常見編碼庫方案,如x264編碼、faac編碼、ffmpeg編碼等。鑒于 FFmpeg 工具集合了多種音頻、視頻格式編碼,我們可以優先選用FFmpeg進行轉換格式、編碼推流。

          1.安裝 FFmpeg 工具

          brew install ffmpeg

          2.推流MP4文件

          視頻文件地址:/Users/gao/Desktop/video/test.mp4

          推流拉流地址:rtmp://localhost:1935/rtmplive/home,rtmp://localhost:1935/rtmplive/home

          //RTMP 協議流
          ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://10.14.221.17:1935/rtmplive/home
          //HLS 協議流
          ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://10.14.221.17:1935/hls/test


          注意:

          當我們進行推流之后,可以安裝VLC、ffplay(支持rtmp協議的視頻播放器)本地拉流進行演示

          3.FFmpeg推流命令

          ① 視頻文件進行直播

          ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://192.168.1.101:1935/hls/test
          ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://10.14.221.17:1935/hls/test


          ② 推流攝像頭+桌面+麥克風錄制進行直播

          ffmpeg -f avfoundation -framerate 30 -i “1:0″ \-f avfoundation -framerate 30 -video_size 640x480 -i “0” \-c:v libx264 -preset ultrafast \-filter_complex ‘overlay=main_w-overlay_w-10:main_h-overlay_h-10′ -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://192.168.1.101:1935/hls/test


          更多命令,請參考:

          FFmpeg處理RTMP流媒體的命令大全

          FFmpeg常用推流命令

          七、H5 直播視頻播放

          移動端iOS和 Android 都天然支持HLS協議,做好視頻采集端、視頻流推流服務之后,便可以直接在H5頁面配置 video 標簽播放直播視頻。

          <video controls preload=“auto” autoplay=“autoplay” loop=“loop” webkit-playsinline>
          <source src=“http://10.14.221.8/hls/test.m3u8″ type=“application/vnd.apple.mpegurl” />
          <p class=“warning”>Your browser does not support HTML5 video.</p>
          </video>

          八、總結

          本文從視頻采集上傳,服務器處理視頻推流,以及H5頁面播放直播視頻一整套流程,具體闡述了直播實現原理,實現過程中會遇到很多性能優化問題。

          ① H5 HLS 限制必須是H264+AAC編碼。

          ② H5 HLS 播放卡頓問題,server 端可以做好分片策略,將 ts 文件放在 CDN 上,前端可盡量做到 DNS 緩存等。

          ③ H5 直播為了達到更好的實時互動,也可以采用RTMP協議,通過video.js 實現播放。

          原文 https://zhuanlan.zhihu.com/p/146323842

          web前端開發的小伙伴經常會聽到HTML5這個詞,那么這個HTML5到底是什么呢?其實HTML5 是對 HTML 標準的第五次修訂。其主要的目標是將互聯網語義化,以便更好地被人類和機器閱讀,并同時提供更好地支持各種媒體的嵌入。HTML5 的語法是向后兼容的。

          HTML5草案的前身名為 Web Applications 1.0,于04年被WHATWG提出,于07年被W3C接納,并成立了新的 HTML 工作團隊。

          HTML5手機應用的最大優勢就是可以在網頁上直接調試和修改。原先應用的開發人員可能需要花費非常大的力氣才能達到HTML5的效果,不斷地重復編碼、調試和運行,這是首先得解決的一個問題。因此也有許多手機雜志客戶端是基于HTML5標準,開發人員可以輕松調試修改。

          HTML5將會取代99年制定的HTML 4.01、XHTML 1.0標準,以期能在互聯網應用迅速發展的時候,使網絡標準達到符合當代的網絡需求,為桌面和移動平臺帶來無縫銜接的豐富內容。

          HTML5的設計目的是為了在移動設備上支持多媒體。新的語法特征被引進以支持這一點,如video、audio和canvas 標記。

          HTML5的出現大大節省了人們的開發成本。因為它通吃PC、Mac、iPhone、iPad、Android、Windows Phone等跨語言平臺。程序員們再也不必為不同款的手機做不同的APP了。那么創建HTML5網站需要哪些工具?

          Aptana這個HTML5編輯器是一個開源的開發工具,支持開放的Web開發。開發者可以使用單一的設置來測試他們的Web應用程序。很多人更喜歡Adobe的Dreamweaver等工具,因為它在2010年獲得了HTML5包。

          編輯方式

          HTML其實是文本,它需要瀏覽器的解釋,它的編輯器大體可以分為以下幾種:

          基本文本、文檔編輯軟件,使用微軟自帶的記事本或寫字板都可以編寫,當然,如果你用WPS來編寫,也可以。不過存盤時請使用.htm或.html作為擴展名,這樣就方便瀏覽器認出直接解釋執行了。

          半所見即所得軟件,如:FCK-Editer、E-webediter等在線網頁編輯器;尤其推薦:Sublime Text代碼編輯器(由Jon Skinner開發,Sublime Text2收費但可以無限期試用)。

          所見即所得軟件,使用最廣泛的編輯器,完全可以一點不懂HTML的知識就可以做出網頁,如:AMAYA(出品單位:萬維網聯盟);FRONTPAGE(出品單位:微軟);;Dreamweaver(出品單位Adobe)。

          Microsoft Visual Studio(出品公司:微軟):其中所見即所得軟件與半所見即所得的軟件相比,開發速度更快,效率更高,且直觀的表現更強。任何地方進行修改只需要刷新即可顯示。缺點是生成的代碼結構復雜,不利于大型網站的多人協作和精準定位等高級功能的實現。


          主站蜘蛛池模板: 日本高清一区二区三区| 日韩精品福利视频一区二区三区| av无码免费一区二区三区| 日本精品视频一区二区三区| 国产精品特级毛片一区二区三区| 视频一区视频二区制服丝袜| 亚洲一区电影在线观看| 无码人妻精品一区二区三区66| 一区二区三区免费视频网站| 国产综合精品一区二区| 成人一区二区三区视频在线观看| 亚洲无线码一区二区三区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 精品亚洲一区二区三区在线观看 | 少妇一夜三次一区二区| 偷拍激情视频一区二区三区| 一区二区视频在线观看| 亚洲综合一区二区精品导航| 亚洲av无码不卡一区二区三区 | 亚洲Av无码国产一区二区| 国产乱码一区二区三区四| 国产99视频精品一区| 在线观看一区二区三区av| 学生妹亚洲一区二区| 在线观看国产一区二三区| 久久久久久人妻一区二区三区 | 人妻少妇一区二区三区| 日韩人妻无码一区二区三区综合部 | 伊人久久精品一区二区三区| 亚洲精品国产suv一区88| 亚洲AV噜噜一区二区三区| 精品一区二区久久久久久久网精| 成人H动漫精品一区二区| 国产成人精品一区二三区| 丝袜美腿高跟呻吟高潮一区| 亚洲视频在线一区二区三区| 无码国产精品一区二区免费模式| 国产亚洲一区二区在线观看| 免费无码毛片一区二区APP| 国产在线无码视频一区二区三区 | 日韩精品无码一区二区三区不卡|