1. 程式人生 > >android視訊錄製、另一部手機實時觀看方案

android視訊錄製、另一部手機實時觀看方案

          最近調研android視訊錄製、另一部手機實時觀看,大致有以下幾種思路。

1. android手機充當伺服器,使用NanoHTTPD充當伺服器,另一部手機或者pc通過輸入http://手機的ip:8080網址觀看。

缺點:android手機必須支援MP4+ARM_BN格式,有些手機不相容,延時有點厲害,前面調研在googlecode看到的程式碼,現在看來方案不可取

2. android手機採用juv-rtmp-client.jar包,網上有收費的包,但可以搜尋破解包,通過rtmp協議釋出服務到red5伺服器。伺服器當然是red5了,可以用red5自帶的的OFLA Demo做測試。客戶端程式碼可以參考ivideochat,下載地址              

http://download.csdn.net/detail/xiaoliouc/4933594

使用支援rtmp協議的播放器播放,如ffplay

缺點:demo延遲很厲害,僅供參考。rtmp協議半公開,難度比較大

3.android手機通過camera類拍攝視訊。把一幀一幀的影象壓縮通過socket傳送到伺服器,伺服器可以直接觀看。而要想讓另一臺手機也能觀看,可以讓伺服器轉發來實現。

缺點:通過一幀一幀的傳送資料,傳輸過程耗費大量流量。玩玩可以,但實際專案中不可取。

4.android手機通過camera類拍攝視訊,把拍攝的視訊通過h264編碼,可以採用軟編碼(使用x264庫或者opencore軟體庫),java類通過jni呼叫編譯後的so檔案來實現。然後通過基於udp的rtp協議傳輸到伺服器。為什麼不使用tcp協議呢,因為tcp的重傳機制會產生延時和抖動,而單獨使用udp傳輸協議本身是面向無連線的,不能提供質量保證,需要在udp協議只上採用rtp或者rtcp提供流量控制和擁塞控制服務。伺服器通過ffmpeg對接收的h264解碼並播放。播放可以使用VLC media player。如果對c++比較熟悉,可以看看live555這個開源專案。

缺點:需要懂得的知識很多,jni啊,h264編碼解碼 ,rtp協議等。使用軟編碼,效率比較低,且視訊質量較差。

5.android手機通過mediaRecorder類拍攝視訊,其中當然包括音訊了。把拍攝的視訊通過h264編碼,可以採用硬編碼(面向手機的硬體直接操作),只能針對3gp,mp4視訊格式。方法參考  http://blog.csdn.net/zblue78/article/details/6078040

程式碼網上有很多,個人理解是:mediaRecorder錄製視訊(3gp,MP4),可以通過mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());預覽視訊,通過localsocket傳送到本地的localserversocket的h264實時視訊流。

這個過程涉及到硬編碼,硬編碼個人理解是,在預覽過程或者提前確定視訊的sps,pps,head(一般為0x00000001),不同的手機硬體不一樣。把得到的這些引數寫入h264,得到正確的h264視訊流,然後把流推送到流媒體伺服器,使用支援rtsp協議的播放器播放,比如vlc。

6、採用HLS協議,伺服器採用nginx,ffmpeg解碼。nginx伺服器搭建過程,ffmpeg安裝過程  見我前幾篇文章。   

然後用ffmpeg對解碼後的mp4檔案進行ts切片,生成帶有索引的m3u8檔案,然後客戶端就可以通過瀏覽器http://ip :port/ *.m3u8訪問。

過程貌似是這樣的,但自己由於剛接觸不到一個周,還不太理解。

 6.相對容易、且效果不錯的方法,android手機上搭建rtsp伺服器,另一臺手機使用VLC播放器輸入rtsp://ip:port/播放視訊。具體原理是,通過android手機對mediaRecorder錄製視訊,把localsocket傳輸到本地的流經過硬編碼,新增rtp頭,分離NALU包,根據rtsp協議互動過程把資料傳送到對方。

程式碼可以參考spydroid了,原始碼可以通過svncheckout,能夠正常執行,且效果不錯。

由於沒有時間,就不研究這個了。

相關推薦

android視訊錄製一部手機實時觀看方案

          最近調研android視訊錄製、另一部手機實時觀看,大致有以下幾種思路。 1. android手機充當伺服器,使用NanoHTTPD充當伺服器,另一部手機或者pc通過輸入http://手機的ip:8080網址觀看。 缺點:android手機必須

Android視訊錄製播放的兩種方式

1、通過Intent的方式:Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 2、使用Camera的API,呼叫Media的MediaRecorder。 Intent的方式 注意:這裡播放camera

android視訊錄製,播放;surfaceview+mediaPlayer播放視訊有聲音無影象的問題

1,功能說明:模仿QQ錄製視訊介面,可以傳入路徑播放(一定要在surfaceChanged);也可以錄製視訊並播放 ,或者傳送(通過setResult返回值) 2,遇到的坑:通過傳入路徑播放的話,一定要讓surfaceview在圖層上顯示出來,不能被其他view遮擋,否則會出現有聲音無影象的現象

Android音訊錄製播放,這一篇就夠了

github原始碼下載地址:https://github.com/geduo83/AudioRecorder csdn原始碼下載地址:https://download.csdn.net/download/geduo_83/10841496 音訊錄製、播放 最近在專案要用到錄音的功能,

利用FFmpeg玩轉Android視訊錄製與壓縮(三)

前言 上一回說到啊,這千秋月沒是佳人離別,時逢枯枝落舊城,卻待新蘭滿長街,戰場上還未至瑞雪,各位看官不好意思,今日帝都又霧霾,來聽小老二說書的別忘了加個口罩。在利用FFmpeg玩轉Android視訊錄製與壓縮(二)中我們基本編寫完了所有模組兒程式碼,但是沒有整合在

android 視訊錄製進度條(分段錄製,回滾刪除,類似美拍錄製

最近因為公司啟動微視訊專案,負責視訊錄製及視訊編輯這塊工作,而首先視訊錄製這塊需要支援分段錄製,和回滾刪除功能。 所以就做了這麼繼承View自定義了這個一個進度條小demo,有待完善及優化。 效果圖先出場 因為比較簡單加上有註釋,就不再多囉嗦,直接上程式碼

Android視訊錄製命令screenrecord(一)

0、命令格式 1、基本 screenrecord是一個shell命令 支援Android4.4(API level 19)以上 支援視訊格式: mp4 2、不足 某些裝置可能無法直

Android視訊錄製--螢幕錄製

上一篇介紹了MediaProjection,這個類可以用來實現安卓螢幕資料的採集,也就是手機一幀幀的截圖,並輸出成byte流的格式。 有興趣的同學可以看這篇: Android視訊錄製--MediaProjection 但其實只用MediaProjectio

Android視訊錄製命令screenrecord(二)

Android5.0的問世可謂誠意十足,拋開設計介面改動等審美元素,在功能上谷歌真正站在使用者的角度開發,包括此前提及的允許使用者刪除預裝應用功能。近日,安卓5.0另一個福利被挖出,系統內建視訊錄製功能,無需Root便可實現,錄製期間不用連線電腦。 其實,安卓

模仿微視視訊錄製支援按下錄製擡起暫停以及斷點進度條(基於javacv)

/* * Copyright (C) 2009,2010,2011,2012,2013 Samuel Audet * * This file is part of JavaCV. * * JavaCV is free software: you can redistribute it and/or

Android視訊錄製,儲存圖片,視訊到本地後本地相簿或者視訊庫裡面沒有的解決方案

   1 問題:最近要做一個將伺服器視訊儲存到本地的功能,將視訊儲存到本地後發現本地相簿裡面並沒有更新該視訊,糾其原因是系統的媒體資料庫並沒有實時的更新   2 解決方案:利用MediaScannerConnection主動去掃描掃描媒體資料庫            步驟:1

Android視訊錄製並轉GIF格式

一、概述   我們在學習Android時候,往往需要查閱很多的資料教程,這時候經常會發現大神寫的部落格往往都是圖文並茂的,充滿可能性,效果直觀的,所以自己個人記錄一些日常工作中遇到的問題以及見解,也希望能夠便於以後自己閱讀以及跟各位大牛交流,所以就想著能夠儘可

Android之檢視手機實時電流電壓

就是從檔案中讀值,由於電流變化太快,顯示的是連續讀5次的平均值,直接上程式碼: public class MainActivity extends Activity { private boolean mIsStart = true; private To

Android系統自帶的MediaRecorder結合Camera實現視訊錄製及播放功能。

    近期,公司專案新增了需求,需要視訊錄製,然後儲存到本地,再播放...。 看了很多其他的框架,說不出好壞,應該說各有千秋吧。但我覺得還是原生的靠譜,就是谷歌系統自帶的MediaRecorder。 不多說上程式碼吧(已經測試,沒問題)。 程式碼沒什麼複雜的,都是些

基於NDKC++FFmpeg的android視訊播放器開發實戰-夏曹俊-專題視訊課程

基於NDK、C++、FFmpeg的android視訊播放器開發實戰—1796人已學習 課程介紹         課程包含了對流媒體(拉流)的播放,演示了播放rtmp的香港衛視,支援rtsp攝像頭和h

android形狀屬性鎖屏密碼動態模糊kotlin專案抖音動畫記賬app視訊播放器等原始碼

Android精選原始碼 直觀瞭解Android的“形狀”屬性如何影響Drawable的外觀。 一個靈活的視訊播放器, 可替換播放器核心。 android鎖屏輸入密碼功能原始碼 背景動態模糊方案,元件實現類對bitmap模糊處理的各類算... 簡單天氣,帶

Android實現本地視訊+錄製視訊+視訊壓縮上傳

今天研究了一下視訊上傳的處理,還包括研究可以視訊壓縮,本地視訊、錄製視訊上傳。本地視訊獲取需要適配手機,這個建議自己獲取本地視訊列表自己實現。不然就會出現路徑找不到返回 null 好東西都是要分享給大家的 有問題請留言評論。。。 視訊壓縮我用的是七牛的 ,我們圖片上傳的就是七牛,七牛的視

Android 仿抖音之使用OpenGL實現抖音視訊錄製

前言 在之前寫了仿抖音的第一步,就是使用OpenGL顯示攝像頭資料,今天這篇就是在之前的基礎上來錄製視訊,並且對之前的程式碼的結構進行了簡單的整理,然後進行了仿抖音的視訊錄製。 工程結構整理 在仿抖音的第一步中封裝了ScreenFilter類來實現渲染螢幕的操作,我們都知道在抖音

簡單實現Android視訊播放器倍速清晰度切換m3u8下載

簡單的前提是使用開源庫 在庫的基礎上新增相對應的功能, 以 JiaoZiVideoPlayer 為例 ,本身自帶的播放引擎是MediaPlayer,也就是Android自帶的播放器,有很多不完善的地方,倍速切換隻支援5.0以上,否則報 NoClassDefFoundError 錯誤

手機視訊錄製的方法 手遊怎麼錄製視訊

從早些年開始,最早的手機遊戲應該算是俄羅斯方塊和貪吃蛇了。當年手機也只是黑白屏,黑白屏年代有很多好玩的遊戲。現在遊戲發展已經突破億元的市場,市場發展前景廣闊,遊戲種類也是逐漸繁多,一些遊戲愛好者恐怕都玩不過來,所以問題就來了,手遊怎麼錄製視訊呢?接下來給大家分享手機視訊錄製的技巧。 使用工具; 手機(