我正在运行bash脚本,它将根据来自Arduino的输入( on /off)与mplayer一起播放视频。
当电影结束时,我需要在txt文件中获得一个时间戳。第一个问题是,mplayer从模式中是否有命令告诉我这一点,这样我就可以轻松地输出时间戳了。
如果没有,以下是我目前的策略:
我使用fifo在从模式下运行mplayer,只要我想让它停止,我就会在其中运行echo "pause"。
因此,我一直在做这个:echo "get_time_pos"到我的fifo,这将告诉mplayer在我的终端显示当前的位置在电影中的几秒钟。当我在我的终端上说,它就在我运行脚本的窗口里。
现在,我需要将这个值存储在一个变量中,以便能够与总长度进行比较,然后输出时间。
我被困在bash脚本中的变量中。
发布于 2018-11-19 08:28:38
最近,我建立了一个小型bash库,它可能会随着时间的推移而增长。目前,它具有您正在寻找的功能。我将解释如何获得你所寻求的信息,然后指向我的图书馆,这简化了任务。
要获取所需的信息,您甚至不需要调用get_time_pos。您可以简单地将mplayer (没有在安静模式下运行)输出转储到一个文件中,并搜索最后一个时间戳。这里的诀窍是,转储中列出的时间戳可能无法直观地搜索,因为有些特殊字符控制文本的显示方式。您必须用新的行替换其中的一些特殊字符,这样您就可以轻松地搜索它。然后,您必须抓住最后两行,以防最后一行不是时间戳。
使用bash库的:
现在,如果您想简化这个过程,请查看我写的这个小图书馆。按照我的GitHub上的用法说明合并它,然后当您播放一个媒体文件时,使用playMediaFile函数播放它。如果这样做,您将能够调用getElapsedSeconds或getElapsedTimestamp函数来检索当前播放位置或mplayer停止后的播放位置。将其存储到bash中的变量将非常简单:
pos=$(getElapsedSeconds)或
pos=$(getElapsedTimestamp)这个库还包含其他函数。isFinishedPlaying函数可能对您也有用处,也可能没有用处。
https://stackoverflow.com/questions/47753399
复制相似问题