Прочитайте и сохраните последнюю строку вывода командной строки mplayer

0

Я пишу программу, чтобы получить вывод видео продолжительности (время в секундах) в 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:

Который будет прочитан функцией python, работающей параллельно с функцией Thread, воспроизводящей то же видео.

Есть ли способ, где я могу хранить только время.

Поскольку я не могу получить время из файла журнала, так как он возвращает меня ноль.

ron123456
источник

Ответы:

0

Вы перенаправляете вывод stderr (2 & gt; timer.log) только для mplayer. Значения 'V:', в которых вы заинтересованы, находятся в stdout (1 & gt; timer.log).

В любом случае я бы использовал чашку чая ИМХО

mplayer video.mp4 | ти-тайминг.лог; grep 'V:' хронометраж

stefan123t
источник
Он печатает все данные, кроме последней строки.
ron123456
Хотя, используя 'strace', я смог это сделать. Но это замедлило мой малиновый пи. strace mplayer video.mp4 2>&1 | grep V: | awk 'FNR=1 {print $3}' > timing.log
ron123456