Tôi đã giải quyết nó bằng cách sử dụng Expect . Bạn khởi chạy phát trực tuyến với ./play.sh
:
while [ '1' == '1' ];
do
expect try_stream.exp $1
sleep 3
done
Và điều này sử dụng try_stream.exp
:
set timeout 4
spawn mplayer -nocache $argv
expect {
"Starting playback" {
interact
}
timeout {
send \003;
exit 1
}
}
Về cơ bản, nó cố gắng phát luồng và nếu không thể thực hiện được trong vòng 3 giây, nó sẽ từ bỏ (tập lệnh .Ex) và thử lại (tập lệnh .sh). Nó hoạt động miễn là bạn có vấn đề như một máy chủ rất bận rộn. Thật không may, tôi không biết làm thế nào để giải quyết vụ án khi người chơi bị mắc kẹt khi nó bắt đầu chơi, không có chuỗi đầu ra nào để Mong phát hiện trong trường hợp như vậy.