我已经尝试了从fadden的建议,以镜像Android屏幕到PC,但vlc播放器屏幕显示什么都没有:
这个函数的正确命令行是什么?谢谢。
ttygqcqt1#
由于vlc无法从adb std输出中播放h264文件,我转而使用ffplay作为流播放器,它通过以下命令工作:
adb shell screenrecord --output-format=h264 - | ffplay -
OS X二进制ffplay和流屏幕:
谢谢!
z0qdvdin2#
我不记得最初测试时使用的vlc命令行了,最近我在桌面Linux(Ubuntu 15.10)上尝试了一些不同的东西。
可变长度编码
如果你只是将输出输入vlc --demux h264 -,看起来似乎可以工作,但你会逐渐落后。添加--h264-fps=60似乎有助于这一点,但你会开始得到错误(“ES_OUT_SET_(GROUP_)PCR is called too late“)。添加--clock-jitter=0似乎使错误不那么严重,但它仍然相当混乱。
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 -可以让你的视频质量持续一段时间。这是因为下面的命令同步了帧率和比特率,否则视频会以30 fps的速度播放,因为额外的帧会使一切看起来/变得更慢。比特率将帮助尽可能保持视频的正确定时。* 我发现它在100- 1000毫秒延迟 ;类似于大多数蓝牙耳机。 您可能会得到一个“consider increase probesize”错误,这可能会冻结流。最好重新启动screenrecord或尝试附加-probesize 16M *
ffplay -framerate 60 -framedrop -bufsize 16M -
-probesize 16M
**注意:**此ffplay配置与以下adb命令一起使用。如果您正在运行GPU密集型任务或使用较旧的手机,建议使用1280x720大小。如果您的手机不支持60 fps(或似乎无法以60 fps录制),请更改大小,直到使用合适的值,如30或24。
1280x720
adb exec-out screenrecord --bit-rate=16m --output-format=h264 --size 1920x1080 -
我的播放器
命令mplayer -demuxer h264es -似乎产生了最好的结果。立即启动,几乎没有延迟,并且不会像vlc那样崩溃。
mplayer -demuxer h264es -
qlvxas9a3#
根据以上答案,我已经尝试了每一个可能的组合,只有一个是不滞后很多,不停止,并有一个体面的视频质量,与ffplay:
adb shell screenrecord --bit-rate=16m --output-format=h264 --size 800x600 - | ffplay -framerate 60 -framedrop -bufsize 16M -
size参数可以变更为任何值。请注意,这仍然是远远不够完美,但得到的工作完成,我也尝试了它通过WiFi和它是 * 足够好 *。
dgsult0t4#
对于低延迟播放,mplayer迄今为止工作得最好。
adb shell screenrecord --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
注意:以上设置使mplayer尽快消耗帧。但是,结果是,播放窗口在等待新帧时可能会很慢。屏幕记录有一个3分钟的时间限制“功能”。如果你觉得从代码重新编译它很舒服,这里有一个good link。重新编译屏幕记录后:
adb shell screenrecord --time-limit=31000 --output-format=h264 - | mplayer -framedrop -fps 6000 -cache 512 -demuxer h264es -
2ledvvac5#
使用任何adb shell命令都会产生损坏的数据。使用adb exec-out(如lord-ralf-adolf在accepted answer的注解中所述)修复了该问题。我使用这个确切的命令,以获得最佳的视频质量和最小的滞后从Galaxy S6:
adb shell
adb exec-out
adb exec-out screenrecord --output-format=h264 --size 540x960 - | ffplay -framerate 60 -framedrop -bufsize 16M -
knpiaxh16#
我发现,通过以下方法可以实现最低的播放延迟:
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 -
按照How to minimize the delay in a live streaming with ffmpeg
nhn9ugyo7#
我发现了这个软件(适用于Linux、Windows和Mac),它可以让你镜像和控制通过ADB连接的设备:https://github.com/Genymobile/scrcpy它救了我!
7条答案
按热度按时间ttygqcqt1#
由于vlc无法从adb std输出中播放h264文件,我转而使用ffplay作为流播放器,它通过以下命令工作:
OS X二进制ffplay和流屏幕:
谢谢!
z0qdvdin2#
我不记得最初测试时使用的vlc命令行了,最近我在桌面Linux(Ubuntu 15.10)上尝试了一些不同的东西。
可变长度编码
如果你只是将输出输入
vlc --demux h264 -
,看起来似乎可以工作,但你会逐渐落后。添加--h264-fps=60
似乎有助于这一点,但你会开始得到错误(“ES_OUT_SET_(GROUP_)PCR is called too late
“)。添加--clock-jitter=0
似乎使错误不那么严重,但它仍然相当混乱。一个简单的
ffplay -
可以工作,但似乎需要几秒钟才能决定开始,最终远远落后于整个时间。更新-2018年1月
使用
ffplay -framerate 60 -framedrop -bufsize 16M -
可以让你的视频质量持续一段时间。这是因为下面的命令同步了帧率和比特率,否则视频会以30 fps的速度播放,因为额外的帧会使一切看起来/变得更慢。比特率将帮助尽可能保持视频的正确定时。* 我发现它在100- 1000毫秒延迟 ;类似于大多数蓝牙耳机。 您可能会得到一个“consider increase probesize”错误,这可能会冻结流。最好重新启动screenrecord或尝试附加-probesize 16M
***注意:**此ffplay配置与以下adb命令一起使用。如果您正在运行GPU密集型任务或使用较旧的手机,建议使用
1280x720
大小。如果您的手机不支持60 fps(或似乎无法以60 fps录制),请更改大小,直到使用合适的值,如30或24。adb exec-out screenrecord --bit-rate=16m --output-format=h264 --size 1920x1080 -
我的播放器
命令
mplayer -demuxer h264es -
似乎产生了最好的结果。立即启动,几乎没有延迟,并且不会像vlc那样崩溃。qlvxas9a3#
根据以上答案,我已经尝试了每一个可能的组合,只有一个是不滞后很多,不停止,并有一个体面的视频质量,与ffplay:
size参数可以变更为任何值。
请注意,这仍然是远远不够完美,但得到的工作完成,我也尝试了它通过WiFi和它是 * 足够好 *。
dgsult0t4#
我的播放器
对于低延迟播放,mplayer迄今为止工作得最好。
注意:以上设置使mplayer尽快消耗帧。但是,结果是,播放窗口在等待新帧时可能会很慢。
屏幕记录有一个3分钟的时间限制“功能”。如果你觉得从代码重新编译它很舒服,这里有一个good link。
重新编译屏幕记录后:
2ledvvac5#
使用任何
adb shell
命令都会产生损坏的数据。使用adb exec-out
(如lord-ralf-adolf在accepted answer的注解中所述)修复了该问题。我使用这个确切的命令,以获得最佳的视频质量和最小的滞后从Galaxy S6:
knpiaxh16#
我发现,通过以下方法可以实现最低的播放延迟:
按照How to minimize the delay in a live streaming with ffmpeg
nhn9ugyo7#
我发现了这个软件(适用于Linux、Windows和Mac),它可以让你镜像和控制通过ADB连接的设备:
https://github.com/Genymobile/scrcpy
它救了我!