nếu tôi thậm chí có thể lấy VLC để cung cấp cho tôi "thời gian" hiện tại của video tôi đang chơi
Điều này có thể thực hiện được. VLC cung cấp nhiều giao diện. Hãy sử dụng telnet.
Bước 1: bật telnet trong VLC
Phương pháp một lần theo yêu cầu:
vlc --extraintf telnet --telnet-port 4212 --telnet-password "foobar" video_file_to_play.avi
Hoặc cấu hình vĩnh viễn. Chạy VLC, Công cụ -> Tùy chọn (hoặc Ctrl+ P), sau đó:
và
Lưu ý: phương pháp vĩnh viễn này yêu cầu bạn khởi động lại VLC.
Bước 2: kiểm tra
Bây giờ bạn có thể điều khiển VLC bằng telnet. Nhập mật khẩu đúng khi được nhắc. Thí dụ:
$ telnet localhost 4212
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
VLC media player 2.2.2 Weatherwax
Password:
Welcome, Master
> get_time
30
>
Như bạn có thể thấy, lệnh để lấy thời gian chơi hiện tại là get_time
. Gõ help
để tìm hiểu thêm các lệnh VLC, quit
để thoát. Có thể bạn sẽ thấy snapshot
hữu ích.
Bước 3: sử dụng tập lệnh
Khá là một đường ống đơn giản. Ở đây tôi sử dụng nc
thay vì telnet
(và foobar
là mật khẩu của tôi, hãy sử dụng mật khẩu của bạn):
printf '%s\n' "foobar" "get_time" | nc localhost 4212
VLC của tôi trả về:
VLC media player 2.2.2 Weatherwax
Password: ����
Welcome, Master
87
> Bye-bye!
vì vậy tôi sử dụng head
và tail
chỉ trích xuất dòng liên quan:
printf '%s\n' "foobar" "get_time" | nc localhost 4212 | head -n 4 | tail -n 1
Thật không may, độ phân giải thời gian là 1 giây. Tôi đã không tìm thấy một lệnh để lấy số khung hiện tại hoặc hơn.