您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
youtube不能小窗口播放(如何關閉youtube退出視頻后小窗播放)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-13 10:20:13【】0人已围观
简介youtube懸浮窗沒有了youtube懸浮窗沒有了可以這樣設置出來。1、要進入到youtube主頁面,在頁面當中將浮窗劃動出來。2、滑動浮窗之后在右上方的位置可以看到一個小窗口的按鈕,點擊一下即可小
youtube懸浮窗沒有了
youtube懸浮窗沒有了可以這樣設置出來。
1、要進入到youtube主頁面,在頁面當中將浮窗劃動出來。
2、滑動浮窗之后在右上方的位置可以看到一個小窗口的按鈕,點擊一下即可小窗口使用。
3、接著繼續長按窗口頂部中間的橫線即可設置浮窗的移動位置。
4、點擊橫線的圖標,頁面就會有一個恢復的按鈕,點擊即可恢復到原頁面還是很簡單。
如何關閉youtube退出視頻后小窗播放
1、首先登錄到youtube。
2、其次打開youtube的設置選項。
3、最后在設置里關閉小窗口播放即可。
You tube 為什么不支持后臺播放,有什么辦法?
b站如何轉播油管直播
獲取直播源:
大部分轉播還是通過瀏覽器打開油管直播頁面,然后利用OBS捕獲畫面實現轉播。
但是瀏覽器還是比較占資源,而且非常不方便。
我個人是推薦使用Potplayer播放,然后再用OBS捕獲。
(Potplayer是一個本地視頻播放器,解碼能力強,基本上任何格式都能播放)
下載安裝好之后,運行,右鍵任意處
打開Potplayer,右鍵打開鏈接(也可以按Ctrl+U)
輸入油管地址(直播或者視頻都可以播放)
直接把油管直播間鏈接輸入即可
效果如下(拿Miko舉例)
網速不太快的可以通過右下角更換畫質
覺得播放器礙事的可以隱藏(想用快捷鍵的可以自行在設置里更改)
隱藏播放器,只留一個畫面
如果不想使用播放器,也可以用瀏覽器“單獨打開播放源”,節省性能
單獨打開一個標簽欄,輸入 買粉絲.youtube.買粉絲/embed/ *視頻ID* (視頻ID就是油管視頻后面那一串代碼,如圖)
油管視頻ID
打開后的樣子(只打開播放源,節省性能)
網頁播放
如果你的OBS無法捕獲Chrome瀏覽器(或者黑屏)
用Chrome瀏覽器打開 chrome://flags/#use-angle ,把渲染方式從默認改成D3D9等再重啟即可
更改瀏覽器渲染

彈幕遮擋:
之后使用OBS即可轉播了。
關于OBS,我也有幾個方法想分享一下
比如Miko把油管彈幕放在了畫面上,直接用圖片遮擋的話會不太美觀(游戲內容也會被遮擋)
Miko
個人推薦使用OBS的模糊效果,以前B站也有些過類似的教程(CV1959197),但是都過去一年了,該更新一下操作了。
首先也是先去
買粉絲s://github.買粉絲/Xaymar/obs-StreamFX/releases
下載高斯模糊的插件(也可以用OBS自帶的模糊濾鏡)
壓縮包或者自動解壓程序都可以
濾鏡插件
解壓到OBS目錄下
解壓縮
之后打開OBS,捕獲窗口,然后右鍵選擇濾鏡
濾鏡
添加模糊效果
模糊效果
選擇高斯模糊(也可以使用默認的,但個人覺得高斯模糊比較舒服)
再勾選 啟用蒙板 ,勾選之后就可以手動調整模糊的位置(模糊值推薦30-40,看字體大小)
蒙板
調整好之后效果如下
全息遮擋
模糊濾鏡也可以添加多個,比如以下情況(彈幕在機體后面之類的情況下)
這樣既可以遮擋又不會太影響美觀
會長專用頭盔

虛擬音頻:
最后再來說說虛擬音頻。
什么是虛擬音頻?虛擬音頻就是通過電腦軟件實現多音頻分流。
舉個例子:想轉播聲音A,但是又不想讓觀眾聽到聲音B,但是只有一個音頻硬件(耳機/音響)
可以通過一個叫 Voicemeeter 的軟件實現
虛擬音頻示意圖
通過這個軟件,我們可以在轉播的同時自己做點別的事情,也不用擔心聲音流入OBS
打開 買粉絲s://買粉絲.vb-audio.買粉絲/Voicemeeter/index.htm 下載 Voicemeeter (免費的)
下載后安裝。
安裝好之后就可以在聲音輸出硬件里看到多了兩個
音頻
打開Voicemeeter,在A1部分選擇輸出(你的耳機/音響)
Voicemeeter
這個軟件非常強大,我們可以實現許多功能。可以單獨調整某條音頻的音量,或者靜音等許多功能。
音頻
一般軟件都可以選擇音頻輸出,瀏覽器的可以打開windows設置里更改
更改瀏覽器音頻輸出
之后在OBS中添加 音頻輸出設備捕獲
添加音頻
這里選擇虛擬音頻
選擇音頻
把 虛擬音頻A 和 虛擬音頻B 都加上之后就可以了。
(為了避免搞混,可以像我一樣給音頻流命名方便識別)
混音器
設置好之后就可以非常方便的一邊轉播/直播。
轉:小窗播放視頻的原理和實現(上)
轉到, 在手機上看著方便
由于文章篇幅較長,將分為上、下兩篇。上篇主要介紹小窗播放視頻的原理,下篇主要介紹小窗播放視頻的實現。
目前很多視頻類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
很赞哦!(217)
相关文章
- tiktok破解下載免費(國際抖音tiktok安卓版破解版不需要插卡嗎?)
- tiktok福利關鍵詞貼吧(tiktok怎么搜福利)
- 02 youtube to mp3 買粉絲nverter ytmp3 買粉絲 music playlist 2022(免費下載歌曲軟件 全免費)
- tiktok看不到商品(tiktok小店上架商品不了)
- 02 youtube to mp3 買粉絲 download 買粉絲 music(好聽的英文歌)
- 02 youtube to mp3 downloader pc app設計流程(4k買粉絲downloader中的視頻可以免費商用嗎)
- 02 youtube to mp3 買粉絲 download hindi songs mp4 download 買粉絲 youtube(尋一個聽歌的網站)
- 02 youtube to mp3 買粉絲 software foundation inc logo(求DJ provenzano的所有資料,附圖+分!)
- tiktok競品分析(新媒體運營與短視頻運營的區別是什么?)
- 02 youtube to mp3 買粉絲nverter 買粉絲 downloadhelper(盤點Firefox 3常用的拓展工具)
热门文章
站长推荐
02 youtube to mp3 買粉絲 download online tv 18(尋一個聽歌的網站)
tiktok破解版國內可用ios(tiktok國際版下載iOS不通過Apple store)
tiktok禮物價格表圖片(tiktok一個金幣的禮物能提現多少錢)
02 youtube to mp3 download windows 10 microsoft(微軟為什么大力提倡用戶升級 Windows10)
02 youtube to mp3 買粉絲 online 買粉絲nverter youtube 買粉絲 downloader mp4(YouTubeVideoBuilderReview2022-好吧,但非常有限)
tiktok禮物提現流程(tiktok怎么提現)
tiktok破解版安卓(國際版tiktok網絡怎么解決?)
tikTok破解版(tiktok破解版錢包在哪顯示)