如何访问mplayer输出/知道mplayer视频何时停止播放?

时间:2017-12-11 12:50:52

标签: linux bash shell ubuntu mplayer

我正在运行一个bash脚本,根据Arduino的输入(打开/关闭)播放带mplayer的视频。

当电影结束时,我需要在txt文件中获取时间戳。第一个问题是mplayer slave模式中是否有命令告诉我,所以我可以轻松输出时间戳。

如果没有,这是我迄今为止的策略:

我在奴隶模式下使用fifo运行mplayer,我echo "pause",只要我想停止它。

所以,我一直这样做:echo "get_time_pos"到我的fifo,这将告诉mplayer在我的终端中显示电影中的当前位置,以秒为单位。当我在终端中说,它在我正在运行我的脚本的同一窗口中。

现在,我需要将此值存储在变量中,以便能够与总长度进行比较,然后输出时间。

我一直坚持把这个输出变成我的bash脚本中的一个变量。

1 个答案:

答案 0 :(得分:0)

我最近建立了一个小型bash库,该库可能会随着时间的推移而增长。目前,它具有您正在寻找的功能。我将说明如何获取您要查找的信息,然后将您指向我的图书馆,以简化任务。

要获取您想要的信息,您甚至无需致电get_time_pos。您可以简单地将mplayer(不在安静模式下运行)输出转储到文件中,并搜索最后一个时间戳。这里的技巧是,转储中列出的时间戳可能不直观,因为某些特殊字符控制着文本的显示方式。您必须用新行替换其中一些特殊字符,以便轻松搜索它。然后,您必须抓住最后两行,以防最后一行不是时间戳。

使用我的bash库:
现在,如果您想简化此过程,请查看this little library I wrote。按照我的GitHub上的使用说明进行合并,然后在播放媒体文件时使用playMediaFile函数播放它。如果执行此操作,则可以调用getElapsedSecondsgetElapsedTimestamp函数来检索当前播放位置或mplayer停止后的播放位置。从bash中将其存储到变量将很简单:

pos=$(getElapsedSeconds)

pos=$(getElapsedTimestamp)

此库还包含其他功能。 isFinishedPlaying函数可能对您也可能不起作用。