![读取并存储 mplayer 命令行输出的最后一行](https://linux22.com/image/1579586/%E8%AF%BB%E5%8F%96%E5%B9%B6%E5%AD%98%E5%82%A8%20mplayer%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BE%93%E5%87%BA%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E8%A1%8C.png)
我正在编写一个程序来获取 mplayer 中播放的视频长度(以秒为单位)的输出。通常 mplayer 的输出是
Playing video.mp4.
Detected file format: QuickTime / MOV (libavformat)
[lavf] stream 0: video (h264), -vid 0
Clip info:
major_brand: dash
minor_version: 0
compatible_brands: iso6avc1mp41
creation_time: 2017-11-03 00:36:26
Load subtitles in .
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec]
Starting playback...
VIDEO: 1920x1080 23.976 fps 1343.8 kbps (168.0 kB/s)
VO: [x11] 1920x1080 => 1920x1080 Planar YV12
[swscaler @ 0xb5cea980]No accelerated colorspace conversion found from yuv420p to bgra.
[swscaler @ 0xb5cea980]using unscaled yuv420p -> bgra special converter
Colorspace details not fully supported by selected vo.
V: 78.0 0/ 0 8% 117% 0.0% 0 0
我想要最后一行的时间输出。即78.0
我正在使用以下命令将日志保存在文件中:
mplayer video.mp4 2>timing.log | grep V:
与播放同一视频的 Thread 函数并行运行的 python 函数将读取该内容。
有什么方法可以让我仅存储时间。
由于我无法从日志文件中获取时间,因此它返回 null。
答案1
您仅重定向了 mplayer 的 stderr 输出 (2>timing.log)。您感兴趣的“V:”值位于 stdout (1>timing.log) 中。
无论如何,我会用一杯茶恕我直言:
mplayer 视频.mp4 | tee -a 计时.log;grep 'V:' 计时.log