日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android视频录制

發布時間:2023/12/18 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android视频录制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

視屏錄制 播放分二種方式

Demo實例:https://download.csdn.net/download/weixin_41956752/10692732

:?

通過Intent的方式:Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

二:

使用CameraAPI,調用MediaMediaRecorder

?

首先第一種:

Intent的方式

注意:這里播放camera錄制的視頻使用VideoView,不使用MediaPlayerSurfaceView的結合。用幀布局Framelayout布局,VideoViewImageView,播放時隱藏視頻縮略圖,暫停時或初始化時顯示視頻縮略圖。

因為VideoView沒有設置監聽播放和暫停狀態的事件,所以我自定義一個CustomVideoView繼承了VideoView,在里面創建一個監聽方法和重寫VideoView的播放、暫停的方法。

使用相機intent獲取視頻是使用最少代碼使得你的應用獲取視頻的捷徑.一個視頻獲取intent可以包含以下額外信息:

?

MediaStore.EXTRA_OUTPUT-此設置需要一個保存視頻的路徑和文件名的Uri.此設置是可選的但是強列推薦的.如果你不指定此值,相機應用就把請求到的圖像以默認的文件名保存到默認的文件夾下,這些信息保存在返回的intentIntent.getData()字段中.

MediaStore.EXTRA_VIDEO_QUALITY-?此值在最低質量最小文件尺寸時是0,在最高質量最大文件尺寸時是1.

MediaStore.EXTRA_DURATION_LIMIT-?此值設置獲取視頻的長度,以秒為單位.

MediaStore.EXTRA_SIZE_LIMIT-?此值設置獲取視頻文件的大小,以字節為單位.

?

第二種:

?

方式二-MediaRecorder中文:媒體記錄器

注解:

SurfaceView中文:曲面視圖

Surfaceview是什么?

它擁有獨立的繪圖表面,即它不與其宿主窗口共享同一個繪圖表面。由于擁有獨立的繪圖表面,因此SurfaceView的UI就可以在一個獨立的線程中進行繪制。又由于不會占用主線程資源,SurfaceView一方面可以實現復雜而高效的UI,另一方面又不會導致用戶輸入得不到及時響應

SurfaceHolder??用于控制SurfaceView???(getHolder()?//?獲得SurfaceHolder對象

SurfaceHolder.Callback具有如下的接口:
surfaceCreated(SurfaceHolder holder):

當Surface第一次創建后會立即調用該函數。程序可以在該函數中做些和繪制界面相關的初始化工作,一般情況下都是在另外的線程來繪制界面,所以不要在這個函數中繪制Surface。?

surfaceChanged(SurfaceHolder holder, int format, int width,int height):

當Surface的狀態(大小和格式)發生變化的時候會調用該函數,在surfaceCreated調用后該函數至少會被調用一次。?

surfaceDestroyed(SurfaceHolder holder):

當Surface被摧毀前會調用該函數,該函數被調用后就不能繼續使用Surface了,一般在該函數中來清理使用的資源。

SurfaceView和View的比較

1,SurfaceView和View最大的區別在于,surfaceView是在一個新起的單獨線程中可以重新繪制畫面而View必須在UI的主線程中更新畫面。

SurfaceView和View的使用場景

1 ,被動更新畫面的。比如棋類,這種用view就好了。因為畫面的更新是依賴于 onTouch 來更新,可以直接使用 invalidate。 因為這種情況下,這一次Touch和下一次的Touch需要的時間比較長些,不會產生影響。

2 ,主動更新。比如一個人在一直跑動。這就需要一個單獨的thread不停的重繪人的狀態,避免阻塞main UI thread。所以顯然view不合適,需要surfaceView來控制。

?

權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

例子中先用mediarecorder錄制保存一個視頻然后播放看看效果,點擊“跳轉”可以調到第二個Main2Activity中,用VideoView播放剛才錄制的視頻,Main2Activity主要測試如何播放在本地手機的視頻。

?

查看網址:https://blog.csdn.net/u013742672/article/details/72457490

?

?

為什么要進行視屏壓縮?

視屏壓縮(去除掉原始數據中的一些冗余,然后再進行傳輸或者存儲,來減少對帶寬和存儲空間的需求

假設用戶接入網帶寬為20M(在中國,有這種接入網帶寬的用戶很少吧?),如果用戶想進行實時的視頻通信(比如說你想跟外地朋友進行視頻聊天),假設你使用的圖像分辨率為4CIF(704*576),幀頻為25f/s.如果不進行壓縮,大概需要多少呢?

  • 原始圖像為4:2:0的YUV格式數據(這個格式已經為原始數據的最小)
  • 每幅畫面的大小為:704*576*1.5*8 bit?= 4.64M,也就是說每一幀為4.64M。如果想看流暢的視頻畫面,大概每秒需要傳輸25幀,也即需要4.64*25M = 116M的帶寬??

  • CIF(352*288)格式也需要116/4=29M 的帶寬
  • 也就是說如果不壓縮,20M的接入帶寬,連QQ聊天都做不了

  • 大家現在不流行說高清,全高清嗎,也就是說分辨率為720或者1080。這兩種分辨率同樣按YUV4:2:0的格式計算,原始數據量就更大了,720P(分辨率為1280*720):1280*720*1.5*8 bit = 10.55M。1080P(分辨率為1920*1080) 1920*1080*1.5*8 bit = 23.73M。要知道這只是一副畫面的大小,流暢的視頻畫面需要大概每秒25幀或以上,也就是說高清720p的視頻,原始數據大小為每秒10.55*25 = 263.75M,而1080P每秒數據量為23.73M*25 = 593.25M。這里還都只是算的每秒原始視頻數據的數據量
  • me.?存儲和帶寬相對廉價的今天,要實現視頻的大容量存儲(如視頻監控)和實時傳輸,沒有視頻壓縮幾乎不可能。

    視頻壓縮現狀:

    視頻壓縮編碼標準種類繁多,其中ITU下主導的H.26x系列ISO主導的MPEG系列影響最大,應用最為廣泛。早期,ITU下的H.26x主要應用于實時領域ISOMPEG系列(它包括音頻壓縮標準)主要應用于廣播電視,VCD(MPEG1)DVD(MPEG2)存儲ITU發展到H.264后,開始與ISOMPEG4融合。被納入MPEG-4的第十部分

    目前主流的壓縮標準為H.264/AVC。它在實時傳輸和存儲領域已經得到廣泛的應用。H.2642003年正式發布,距今已經9年。我認為H.264標準未來5年還是視頻應用主力。其在IPTV,視頻監控,視頻會議,和光盤存儲中將繼續占主導地位

    ?

    視頻壓縮先進性評價:

    網絡帶寬就是按每秒多少bit流來計算的,而存儲容量的最小單位為Byte,也就是字節(8bit)。存儲容量單位的1M表示1MB,等于網絡帶寬8Mb.

    每秒大概數據量為593Mb。如果用戶帶寬為4Mb,想實現1080P?的實時會議或者監控,最少需要將原始視頻壓縮近593/4 = 150倍。

    ?

    視頻壓縮算法發展的動力:

    “一切動力來自人類的無窮欲望”

    視頻業務發展的基礎:

    視頻壓縮的核心思想就是利用視頻信號的特點,去除視頻信號的時間和空間冗余

    H.261H.264MPEG1MPEG4??未來還有H.265等更為先進的算法出現

    (1)算法本身的發展??(2)芯片能力??(3)網絡帶寬。這三者一起推動了當今高清視頻業務的普及,也是未來3D業務發展的技術基礎。

    視頻會議壓縮算法之-H.264 High profile

    AVC/H.264?規定了多種不同的Profile:最低Profile、主要Profile、擴展Profile、高端Profile(這些Profile?本身還要劃分數個等級)。

    -最低Profile,也叫做底線ProfileBaseline Profile)支持I/P?幀,只支持無交錯(Progressive)和CAVLC

    -擴展ProfileExtended Profile)支持I/P/B/SP/SI?幀,只支持無交錯(Progressive)和CAVLC

    -主要ProfileMain Profile)提供I/P/B?幀,支持無交錯(Progressive)和交錯(Interlaced),同樣提供對于CAVLCCABAC?的支持;

    -高端ProfileHigh Profile)在主要Profile?的基礎上增加了8x8?內部預測、自定義量化、無損視頻編碼和更多的YUV?格式;

    ?

    H.264中還有一個SVC概念(Scalable Video Coding),可分層編碼

    1.帶寬問題,IP網絡帶寬是不穩定的,網絡帶寬降低是,視頻流應該自動的降低碼率,以適應當前帶寬。而視頻流碼率的降低,并不意味著視頻通信的結束,只是其幀率和分辨率相應降低。這樣還是能維持基本的視頻通信如幀率可以從60fps降低30fps或者25fps甚至20pfs分辨率可以從高清降到標清的4cif甚至cif。這樣可以很大程度的降到碼率,但同時保證了視頻通信的基本功能正常進行(用戶還是能看到能夠分辨的圖形和聽到清晰的聲音)。

    2.在未來的通信中,參與視頻對話的終端多種多樣,有專用的硬件視頻終端,有桌面軟終端,還有移動終端中的PAD和手機。終端的多樣性對視頻碼流的要求也不一樣。如移動終端一般相對帶寬較小,且屏幕尺寸也較小,屏幕寬高比也不同。每種終端希望拿到最適合自己的視頻碼流,既適合自己的網絡帶寬,又適合自己的硬件能力。如一種設備編碼流出來后,其中既包含了高清到標清不同分辨率,又具有各種幀率終端只需要發起申請,從其中拿到適合自己的碼流,這是一件多好的事情,(好處)避免的轉碼同時合理的利用的帶寬和終端的硬件能力

    SVC的本意就是如此,能夠實現碼流的可伸縮,也就是說能根據帶寬,終端的要求,自動調整發送給終端視頻流的格式一次性編碼適應于多種信道和終端。視頻會議中有一種MCU設備,你要是研究MCU的功能,你會發現它多么適合采用SVC技術。SVC技術的應用理論上應該能節省MCU的部分計算資源。但一路SVC碼流實際上市多組碼流構成的,它們是相互獨立的,如果全部傳輸和存儲必然是帶寬和容量的增加。因此這種技術適合使用在中央設備上(如MCU),終端上是不會使用到的。SVC希望做到一次編碼后,按需分配。

    目前SVC技術應用得不廣泛,RADVISION宣稱已經支持。目前MCU所做的是要么按最低能力編碼發送,要么按數組能力編碼,數組碼流發送。SVC技術無法做到跨越視頻壓縮標準,也就是所需要都在H,264或者其它莫一個相同的視頻壓縮標準之內,所以收端都支持該標準。如果跨域壓縮標準(如終端中支持的壓縮標準不相同,如只支持MPEG?或者只支持H.263或者只支持H.264),則終端設備還必須做轉碼才能實現互通。

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的Android视频录制的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。