我正在运行一个bash脚本,根据Arduino的输入(打开/关闭)播放带mplayer的视频。
当电影结束时,我需要在txt文件中获取时间戳。第一个问题是mplayer slave模式中是否有命令告诉我,所以我可以轻松输出时间戳。
如果没有,这是我迄今为止的策略:
我在奴隶模式下使用fifo运行mplayer,我echo "pause"
,只要我想停止它。
所以,我一直这样做:echo "get_time_pos"
到我的fifo,这将告诉mplayer在我的终端中显示电影中的当前位置,以秒为单位。当我在终端中说,它在我正在运行我的脚本的同一窗口中。
现在,我需要将此值存储在变量中,以便能够与总长度进行比较,然后输出时间。
我一直坚持把这个输出变成我的bash脚本中的一个变量。
答案 0 :(得分:0)
我最近建立了一个小型bash库,该库可能会随着时间的推移而增长。目前,它具有您正在寻找的功能。我将说明如何获取您要查找的信息,然后将您指向我的图书馆,以简化任务。
要获取您想要的信息,您甚至无需致电get_time_pos
。您可以简单地将mplayer(不在安静模式下运行)输出转储到文件中,并搜索最后一个时间戳。这里的技巧是,转储中列出的时间戳可能不直观,因为某些特殊字符控制着文本的显示方式。您必须用新行替换其中一些特殊字符,以便轻松搜索它。然后,您必须抓住最后两行,以防最后一行不是时间戳。
使用我的bash库:
现在,如果您想简化此过程,请查看this little library I wrote。按照我的GitHub上的使用说明进行合并,然后在播放媒体文件时使用playMediaFile
函数播放它。如果执行此操作,则可以调用getElapsedSeconds
或getElapsedTimestamp
函数来检索当前播放位置或mplayer停止后的播放位置。从bash中将其存储到变量将很简单:
pos=$(getElapsedSeconds)
或
pos=$(getElapsedTimestamp)
此库还包含其他功能。 isFinishedPlaying
函数可能对您也可能不起作用。