我正在尝试捕获桌面并使用DashCast在Apache服务器中实时传输它。当我按需执行时,它会捕获并正确播放,但是当我实时播放然后使用MP4Client
时,它只显示黑屏,在捕获时甚至没有收到任何错误消息。我正在使用的命令是:
DashCast -vf x11grab -vres 1280x720 -v :0.0 -npts -live -out /public_html/
然后我玩:
MP4Client http://localhost/vitor/dashcast.mpd
这导致以下输出:
MP4Client http://localhost/vitor/dashcast/dashcast.mpd
Using config file in /home/vitor directory
System info: 11948 MB RAM - 8 cores
Modules Found : 36
Loading GPAC Terminal
[Thread MediaManager] Couldn't set priority(2) for thread ID 0x9b55a700
[Thread MediaManager] Couldn't set priority(2) for thread ID 0x9b55a700
Terminal Loaded in 35 ms
Opening URL localhost/vitor/dashcast/dashcast.mpd
[DASH] Slight drift in UTC clock at time 2015-08-05T12:38:45Z: diff AST - now 3563501 ms
Service Connected
那么我做错了什么?客户端显然正确连接到服务器,打开播放器,但它不会在屏幕上显示任何内容。我正在使用Ubuntu 14.04和GPAC版本0.5.0。
答案 0 :(得分:0)
[DASH] Slight drift in UTC clock at time 2015-08-05T12:38:45Z: diff AST - now 3563501 ms
此消息表示在availabilityStartTime属性中的MPD中指示的UTC时间与MP4Client使用的当前时间之间存在差异(这里有一个错误的字,假设实际差异!)计算要获取的段。这仅适用于直播,因为根据需要,所有段都被假定为始终可用。
MP4Client使用不同的策略来确定当前的'时间。如果客户端使用不同的NTP服务器,则客户端上的系统时间可能与服务器上的系统时间不同。系统时间不可靠。所以MP4Client试图从服务器获取时间。它首先尝试使用特定的HTTP" Server-UTC"服务器可能设置的标头。请参阅示例this code。如果未设置此标头,则会查看HTTP"日期"标题,即使它不是很精确。在您的情况下,您的HTTP服务器可能具有与系统时间不匹配的时间配置。您可以告诉MP4Client停止使用服务器信息并依赖其系统时间。由于您在同一台计算机上使用客户端和服务器,因此应该可以使用。该选项的文档是here。为此,请使用:
MP4Client http://localhost/file.mpd -opt DASH:UseServerUTC=no
或者,您可以尝试在本地播放MPD而无需通过Web服务器。
MP4Client file.mpd
如果不起作用,请在GPAC的GitHub上打开一个问题,提供尽可能多的信息,特别是MP4Box -version
的结果。