您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
手機youtube怎么小窗口播放(手機金山文檔怎么插視頻?)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-04 08:53:17【】2人已围观
简介如何關閉youtube退出視頻后小窗播放1、首先登錄到youtube。2、其次打開youtube的設置選項。3、最后在設置里關閉小窗口播放即可。轉:小窗播放視頻的原理和實現(上)轉到,在手機上看著方便
如何關閉youtube退出視頻后小窗播放
1、首先登錄到youtube。
2、其次打開youtube的設置選項。
3、最后在設置里關閉小窗口播放即可。
轉:小窗播放視頻的原理和實現(上)
轉到, 在手機上看著方便
由于文章篇幅較長,將分為上、下兩篇。上篇主要介紹小窗播放視頻的原理,下篇主要介紹小窗播放視頻的實現。
目前很多視頻類App都有小窗播放功能,比如Youtube(如圖1)、Facebook(如圖2)等,不過它們的實現方式卻不同。Youtube 是將視頻播放View內嵌到應用內,優點是交互好;Facebook則是通過WindowManager添加視頻播放View,同時支持應用內部和外部播放。
小窗播放視頻功能在小窗和大屏之間切換時,視頻類App通常一邊執行交互動作一邊播放視頻。交互動作包括移動、縮放或者動畫;這些App在播放時期望給用戶平滑的過渡體驗,流暢加載視頻,不能有明顯的卡頓。
<figure>
<figcaption>(圖1 Youtube小窗播放視頻)</figcaption>
</figure>
<figure>
<figcaption>(圖2 Facebook小窗播放視頻)</figcaption>
</figure>
二、SurfaceView 和 GLSurfaceView
Android 中使用 MediaPlayer 播放視頻時,一般采用 SurfaceView 、 GLSurfaceView 和 TextureView 。Youtube、Facebook用不同技術方案實現了小窗播放視頻功能,它們共同點是都可以使用 SurfaceView 、 GLSurfaceView 和 TextureView 來播放視頻。接下來分析三個視圖用于小窗播放視頻的原理。
SurfaceView繼承自類View,但與其他View的子類不同的是它有獨立的Surface,如下源碼可以看出它包含一個Surface屬性,即它不與宿主窗口共享同一個繪圖表面。因此SurfaceView的UI可以在一個獨立的線程中進行繪制。由于不會占用主線程資源,因此SurfaceView可以實現復雜而高效的UI。GLSurfaceView繼承SurfaceView,作為SurfaceView的補充,加入了EGL的管理,并自帶了渲染線程。它用于小窗播放時效果和SurfaceView類似。本文以下內容以SurfaceView為例分析獨立的Surface對小窗播放會有什么影響。
通過Surface的類注釋可以知道,Surface處理一塊由Screen 買粉絲positor管理的Raw buffer。而Screen 買粉絲positor其實就是SurfaceFlinger服務。Surface字面意思就是繪圖表面,可以理解為是UI的畫布。
Android應用程序窗口需要請求SurfaceFlinger服務創建繪圖表面(也就是Surface對象),同時窗口還需要被WindowManagerService管理;所以實際上窗口的繪圖表面是通過兩個Surface對象來描述,一個是應用程序進程創建的,另一個是由WindowManagerService創建的,這兩個Surface對象對應于SurfaceFlinger服務的同一個Layer對象。
在應用程序進程這一側,每一個應用程序窗口,如Activity,都有一個Surface對象,就是在ViewRootImpl對象的mSurface屬性,這個Surface用來繪制應用程序窗口的UI,如下ViewRootImpl源碼所示。當界面需要刷新時,窗口調用draw方法,向Surface請求canvas,執行繪畫操作后再次提交給Surface完成屏幕顯示。
在WindowManagerService服務這一側,每一個窗口,都有一個對應的WindowState對象。其有一個屬性mSurface,它負責設置窗口的位置、大小屬性。例如,一個窗口的Z軸坐標大小要考慮到它的窗口類型,以及它與系統中的其它窗口的關系[2]。
SurfaceView有獨立的繪圖表面,那么SurfaceView又是怎么繪制在宿主窗口的呢?
上面說到每一個窗口在SurfaceFlinger服務中都對應有一個Layer,用來描述它的繪圖表面。同時每一個SurfaceView在SurfaceFlinger服務中還對應有一個獨立的Layer或者LayerBuffer,用來單獨描述它的繪圖表面,以區別于它的宿主窗口的繪圖表面[3]。
<figure>
</figure>
(圖3 SurfaceView的Surface的創建過程)
接下來了解Surface創建過程,如圖3的時序圖所示,每當一個窗口需要刷新UI時,就會調用ViewRootImpl類的performTraversals方法。如果當前窗口的Surface還沒有創建,或者已經失效,SurfaceView就會請求WindowManagerService服務創建一個新的Surface,它最終會調用updateWindow來完成Surface的創建。
如SurfaceView源碼所示,它有一個mSurface屬性,相比之下TextView或者Button等普通View會共用ViewRootImpl的Surface。
SurfaceView類的屬性mWindowType描述的是SurfaceView的窗口類型,它的默認值等于 TYPE_APPLICATION_MEDIA ,用來顯示多媒體的,如視頻。SurfaceView還有另外一個類型 TYPE_APPLICATION_MEDIA_OVERLAY ,它是在視頻上面顯示Overlay的,它可以顯示視字幕等信息。宿主窗口會遮擋這兩個類型的SurfaceView,如果窗口嵌入這兩類SurfaceView,那么它們的Z軸位置會低于該窗口的Z軸位置,顯示在該窗口下面。如果mWindow等于null的話,那么就說明該SurfaceView還沒有添加到WindowManagerService服務中去,然后調用addWithoutInputChannel添加到WindowManagerService服務中。
mSession.relayout()請求WindowManagerService服務對SurfaceView的UI進行布局。如果宿主窗口的繪制表面還未創建,或者需要重新創建,那么就會請求SurfaceFlinger服務為它創建一個新的Surface。由于這一步可能會修改SurfaceView的Surface,所以添加了mSurfaceLock鎖,避免其它線程同時修改該Surface的內容。
執行完成上述步驟之后,SurfaceView的Surface的創建完成了。但是mWindowType為 TYPE_APPLICATION_MEDIA 或 TYPE_APPLICATION_MEDIA_OVERLAY 的SurfaceView會被宿主窗口擋住,如何解決這個問題,這就要了解SurfaceView“挖洞”原理。
當SurfaceView附加宿主窗口時,它的onAttachedToWindow會被調用。這個方法調用requestTransparentRegion請求在宿主窗口上設置透明區域,即請求在宿主窗口上挖洞,其實就是設置ViewRootImpl中Surface的透明度。而每當其宿主窗口刷新自己的UI的時候,就會調用ViewGroup的gatherTransparentRegion將所有嵌入在它里面的SurfaceView所設置的透明區域收集起來。然后再通知WindowManagerService為SurfaceView的gatherTransparentRegion方法設置一個總的透明區域。這就是SurfaceViewd的“挖洞”原理,如圖4時序圖所示。
<figure>
</figure>
(圖4 SurfaceView“挖洞”原理)
接下來結合ViewRootImpl類的requestTransparentRegion源碼,來分析請求在宿主窗口上設置透明區域的過程。
當mView等于子View時,將mPrivateFlags的 View.REQUEST_TRANSPARENT_REGIONS 位設置為1,表示該窗口被設置了一塊透明區域。當一個窗口被請求設置了一塊透明區域之后,它的窗口屬性就發生了變化,這時候除了要將與它所關聯的ViewRootImpl對象的mWindowAttributesChanged值設置為true之外,還要調用該ViewRootImpl對象的requestLayout方法對窗口的UI進行重新布局和繪制。requestLayout最終會調用到另外一個方法performTraversals來實際執行刷新窗口UI的操作。
ViewRootImpl類的方法performTraversals是用來收集嵌入在它里面的SurfaceView所設置的透明區域的。它處于窗口的UI布局完成之后,窗口的UI繪制之前。這是因為窗口的UI布局完成之后,各個子視圖的大小和位置才能確定下來,進而才能確定SurfaceView的透明區域的位置和大小。從頂層視圖開始,從上到下收集每一個子視圖所要設置的區域,最終收集到的總透明區域并保存在ViewRootImpl類的成員變量mTransparentRegion中。其中host是De買粉絲rView,它的gatherTransparentRegion方法重載了父類ViewGroup的gatherTransparentRegion方法。
ViewGroup的gatherTransparentRegion方法中,檢測到有透明區域時,調用父類View的方法gatherTransparentRegion來檢查當前視圖容器是否需要繪制。如果需要繪制,說明當前視圖的前景需要繪制,就會將它所占據的區域從參數region所占據的區域移除,以便可以顯示當前視圖的前景。然后調用每一個子視圖的成員函數gatherTransparentRegion來繼續往下收集透明區域。
SurfaceView類的方法gatherTransparentRegion中,先檢測是否用作窗口面板以及mPrivateFlags的SKIP_DRAW位是不是1。如果都是,將它所占據的區域從參數region所描述的區域移除,region中剩下的就是透明區域。最后判斷Surface的像素格式是否設置有透明值。如果有,返回false給ViewRootImpl,然后ViewRootImpl調用 sWindowSession.setTransparentRegion(mWindow, mTransparentRegion); 設置窗口為透明。這樣就能看到SurfaceView了。
SurfaceView雖然具有獨立的Surface,不過它仍然是宿主窗口的視圖結構中的一個結點,因此,它仍然是可以參與到宿主窗口的繪制流程中去的。
在SurfaceView的draw和dispatchDraw方法中,參數canvas是建立在宿主窗口的Surface上的畫布,因此在這塊畫布上繪制任何UI都是出現在宿主窗口的Surface上的。但如果當前正在處理的SurfaceView不是用作宿主窗口面板的時候,即屬性mWindowType的值不等于 TYPE_APPLICATION_PANEL 的時候,SurfaceView的這兩個方法只是簡單地將它所占據的區域繪制為黑色。另外dispatchDraw還會調用另外一個方法updateWindow更新的UI,繪制自己的Sueface。
通過了解SurfaceView的創建過程、“挖洞”原理和繪制過程,可以了解到Surface對小窗播放視頻的影響如下:
1)SurfaceView在宿主窗口下面,通過“挖洞”原理顯示Surface。SurfaceView在做旋轉時,畫面不會跟隨SurfaceView旋轉。
2)同理,設置透明度或者執行透明值動畫時,SurfaceView顯示有問題。
3)SurfaceView繪制時會先繪制黑邊,所以在移動或者縮放過程,在更新不及時時會看到黑邊。
4)SurfaceView具有獨立的Surface,它的UI繪制可以在獨立的線程中進行,可以進行復雜的UI繪制。
由于SurfaceView不在View hierarchy中,View的一些縮放,透明度變化等方法無法使用。要實現這些功能就得使用TextureView,但TextureView有個缺點就是性能低耗電高。Android N對SurfaceView進行了更改,它對SurfaceView自身和它的內容改變做了同步處理,播放視頻時不會出現之前難看的黑色條。SurfaceView因這個新特性不會出現黑色條,但它旋轉時畫面仍然不會跟隨旋轉,仍然不支持透明度。
如下源碼所示,TextureView繼承于View,并重載了View的draw()方法,它與其它的View一樣在View hierarchy中管理與繪制。draw()方法中主要把SurfaceTexture中收到的圖像數據作為紋理更新到對應的HardwareLayer中。SurfaceTexture.OnFrameAvailableListener用于通知TextureView有新數據。
根據以上信息,可以知道TextureView不同于SurfaceView,沒有單獨創建Surface,而是作為View hierarchy中的一個普通View,來進行移動,旋轉,縮放,動畫等,沒有SurfaceView執行旋轉、縮放時的缺點。值得注意的是TextureView必須在硬件加速的窗口中,通過HardwareLayer更新視圖。它需要硬件加速層,這使得TextureView比SurfaceView更耗性能。 Android N上SurfaceView新特性的說明上,官方也推薦在不執行旋轉、透明度、縮放時使用SurfaceView。
SurfaceView有獨立的Surface,通過“挖洞”原理顯示它。以致它在執行旋轉時,畫面不會跟隨旋轉;同時設置透明度或者執行透明值動畫時,顯示有問題。Android N以上的SurfaceView在視頻進行縮放旋轉時會同步變化,不會看到黑色邊,官方推薦使用SurfaceView。TextureView作為普通View在View hierarchy中管理與繪制,更適用于小窗播放視頻功能。但TextureView需要硬件加速層,使得TextureView比SurfaceView和GLSurfaceView更耗性能。
[1]、Surface( 買粉絲s://developer.android.買粉絲/reference/android/view/Surface.買粉絲 )
[2]、Android應用程序窗口(Activity)的繪圖表面(Surface)的創建過程分析 ( 買粉絲://blog.csdn.買粉絲/luoshengyang/article/details/8303098 )
[3]、Android視圖SurfaceView的實現原理分析( 買粉絲://blog.csdn.買粉絲/luoshengyang/article/details/8661317 )
[4]、SurfaceView( 買粉絲s://developer.android.買粉絲/reference/android/view/SurfaceView.買粉絲 )
小窗播放視頻的原理和實現(下) 買粉絲s://cloud.tencent.買粉絲/developer/article/1047885
怎么直播放電影
直播放電影的方法如下:
第一步、拿出你的手機打開抖音。
第二步、點擊抖音中間的“加號”,操作如下圖所是。
第三步、如果你是主播,點擊開直播,如下圖所示。
第四步、設置出吸引人的標題,選擇你想要用什么新設備直播,“錄屏”則是用手機播放電影來直播,“電腦”則是用電腦投屏來直播。
第五步、選擇“錄屏”點擊開啟直播即可,選擇“電腦”則需要申請權限,認證身份,完成即可開啟直播放電影。
方法二
1、點擊抖音官方后臺下載直播伴侶,官方網站有正規的下載鏈接。
2、登錄已有1000粉絲的賬號,【申請開播權限】,申請后立刻即可開播。
3、進入添加直播畫面后選擇【窗口】找到對應的播放視頻窗口。
4、左下角會出現選擇【窗口】,找到對應正在播放視頻的窗口點擊確認。
5、調整好畫面高度和大小后,點擊右下方的【開始直播】。
6、開播前會要求填寫直播標題和內容,以及直播間介紹。
7、確認開播。
特斯拉哨兵模式手機怎么看
1將車輛掛入駐車檔;2
點擊中控面板右上角的攝像頭圖標,然后選擇啟動器即可查看;3
此時會顯示所有保存的視頻片段,以及行車記錄儀和哨兵模式的數據
只需選擇你想看的哨兵模式內容;4
點擊縮略圖查看特斯拉車輛各種攝像頭拍攝的視頻片段
還可以選擇暫停、回放、快進/快退、刪除等
根據自己的需求
特斯拉的哨兵模式,簡單來說就是當車輛處于停車狀態時,你可以開啟哨兵模式,然后通過手機遠程查看車輛周圍的環境和車輛的安全狀況
當有人靠近或損壞車輛時,還可以報警并提醒車主,并記錄保存車輛停放時發生的事件
所以當車輛停在不熟悉的環境時,開啟哨兵模式是非常好的,也更有保障
先說如何開啟崗哨模式
1
在特斯拉的中控顯示屏上,點擊左下角的汽車圖標按鈕;2
在彈出的新界面中,找到并點擊“安全”選項;3
進入“安全”選項后,向下滑動菜單找到“哨兵模式”,點擊打開,打開特斯拉哨兵模式;4
開啟哨兵模式后,當我們離開車輛時,中控顯示屏會顯示一個紅點圈
一旦我們開啟哨兵模式,車輛的攝像頭也會開啟
手機金山文檔怎么插視頻?
在金山文檔中插入視頻,可以按照以下步驟進行:
首先,將視頻上傳到一個視頻共享網站上(例如優酷、騰訊視頻、YouTube等),并復制該視頻的鏈接地址。
打開您要插入視頻的文檔,在需要插入視頻的位置插入一個文本框。
選中該文本框,然后在工具欄上選擇“插入”選項卡,點擊“超鏈接”按鈕。
在彈出的“超鏈接”窗口中,將視頻鏈接粘貼到“鏈接地址”文本框中,并輸入視頻的名稱和描述信息。勾選“在新窗口中打開”,然后點擊“確定”按鈕。
將文本框調整大小和位置,使其適合您的文檔。
最后,保存文檔并預覽。此時,您應該能夠看到視頻已經成功地插入到您的文檔中了。
需要注意的是,您需要在插入視頻時確保鏈接地址正確,否則視頻將無法正常播放。此外,由于視頻鏈接是從外部網站嵌入到您的文檔中,因此您需要確保您的文檔在打開時已經聯網。
很赞哦!(4)
相关文章
- 01 合肥上海世外幼兒園怎么樣(合肥上海世界外國語幼兒園怎么樣)
- 01 合肥工業大學國際經濟與貿易在哪個校區(合肥工業大學國際經濟與貿易創新班好嗎)
- 02 new music 買粉絲s youtube 2023 4k(請懂西班牙語的翻譯下(要是再懂足球就更好了……))
- 02 my music mix on youtube 買粉絲(知道歌詞但不知道歌名?)
- 02 music youtube music 2022 playlist(如何讓YTmusic在后臺播放)
- 01 臺灣外貿協會在東南亞哪里舉辦(東南亞外貿怎么選擇服務器?)
- 01 可引起網織紅細胞增多的(可引起網織紅細胞增多的貧血為)
- 02 online youtube 買粉絲 downloader to mp3 online(高分懸賞!求一首英文流行歌曲)
- 01 臺灣與美國貿易結構分析(中國賣給美國量最大的商品是什么)
- 01 各國進出口貿易總額排名(各國出口占gdp比例)
热门文章
站长推荐
02 mp3 player to youtube(推薦一些你們自己最喜歡的英文搖滾歌曲)
02 notion訂閱價格(2022年云筆記軟件哪個最好用?)
02 music youtube app windows xp(如何在youtubemusic中創建快捷指令)
02 my mix music on youtube music(求最high巨high無敵high,high到云霄里的hi fi trance曲)
02 music youtube music 2022 with(earmusic造句 earmusicの例文)
02 music 買粉絲 youtube music 買粉絲 買粉絲llection(賈斯汀-比伯(Justin Bieber)的資料(越多越好)和那些歌好聽、)
02 login for youtube tv(好聽的英文歌)
02 new music youtube 2020(微軟 亞馬遜 谷歌 蘋果:廣告營收刷新紀錄 有哪些硬核支撐?)