[英]android mini pc connection on eclipse via USB not see from ADB devices command
[英]Use adb screenrecord command to mirror Android screen to PC via USB
由於 vlc 無法從 adb std 輸出播放 h264 文件,我轉而使用 ffplay 作為流播放器,它通過以下命令工作:
adb shell screenrecord --output-format=h264 - | ffplay -
OS X 二進制ffplay和流屏幕:
謝謝!!
我不記得我用於初始測試的 vlc 命令行。 我最近在桌面 Linux (Ubuntu 15.10) 上嘗試了一些不同的東西。
VLC
如果您只是將輸出通過管道vlc --demux h264 -
到vlc --demux h264 -
,它似乎可以工作,但您會逐漸落后。 添加--h264-fps=60
似乎有幫助,但您開始收到錯誤(“ ES_OUT_SET_(GROUP_)PCR is called too late
”)。 添加--clock-jitter=0
似乎可以減少錯誤的創傷,但它仍然很混亂。
ffplay
一個簡單的ffplay -
工作,但似乎需要幾秒鍾才能決定開始,並且最終遠遠落后於整個時間。
使用ffplay -framerate 60 -framedrop -bufsize 16M -
為您提供持續很ffplay -framerate 60 -framedrop -bufsize 16M -
的體面質量。 這是由於以下命令同步了幀速率和比特率,否則視頻將嘗試以 30fps 播放,由於額外的幀,隨着時間的推移,一切看起來/變慢。 然后,比特率將有助於盡可能保持視頻正確定時。 我發現它可以在 100-1000 毫秒的延遲內工作; 與大多數藍牙耳機類似。 您可能會收到“考慮增加探針大小”錯誤,這可能會凍結流。 最好重啟-probesize 16M
或者嘗試追加-probesize 16M
注意:此 ffplay 配置適用於預先通過管道傳輸的以下 adb 命令。 如果您正在運行 GPU 密集型任務或使用較舊的手機,則建議使用1280x720
大小。 如果您的手機不支持 60fps(或似乎沒有以 60fps 錄制),請更改為適當的值,例如 30 或 24。
adb exec-out screenrecord --bit-rate=16m --output-format=h264 --size 1920x1080 -
播放器
命令mplayer -demuxer h264es -
似乎產生了最好的結果。 立即開始,幾乎沒有延遲,並且不會像 vlc 那樣驚慌失措。
根據上面的答案,我嘗試了所有可能的組合,只有一個不會滯后很多,不會停止並且具有不錯的視頻質量,帶有 ffplay:
adb shell screenrecord --bit-rate=16m --output-format=h264 --size 800x600 - | ffplay -framerate 60 -framedrop -bufsize 16M -
大小參數可以更改為任何內容。
請注意,這仍然遠非完美,但完成了工作,我也通過 WiFi 進行了嘗試,並且已經足夠好了。
播放器
對於低延遲播放,mplayer 迄今為止效果最好。
adb shell screenrecord --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
注意:以上設置mplayer盡快消耗幀。 盡管如此,在等待新幀時,播放窗口可能會很慢。
屏幕記錄有 3 分鍾的時間限制“功能”。 如果您覺得從代碼重新編譯它很舒服,這里有一個很好的鏈接。
重新編譯屏幕記錄后:
adb shell screenrecord --time-limit=31000 --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
使用任何adb shell
命令都會為我生成損壞的數據。 正如lord-ralf-adolf在對已接受答案的評論中所指出的,使用adb exec-out
解決了該問題。
我使用這個確切的命令從 Galaxy S6 獲得最佳視頻質量和最小延遲:
adb exec-out screenrecord --output-format=h264 --size 540x960 - | ffplay -framerate 60 -framedrop -bufsize 16M -
我發現最低延遲播放可以通過以下方式實現:
adb exec-out screenrecord --bit-rate=64m --output-format=h264 --size=1080x680 - | ffplay -framerate 60 -framedrop -fflags nobuffer -flags low_delay -strict experimental -analyzeduration 100000 -probesize 64 -sync ext -vf setpts=0 -fflags discardcorrupt -
使用mpv對我來說最好的結果:
adb shell screenrecord --bit-rate=16m --size 540x1140 --output-format=h264 - | mpv --profile=low-latency --no-correct-pts --fps=60 -
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.