1

Я пытаюсь сохранить звук с помощью mplayer из живого http-потока. сохранение аудио успешно. Если нет живой трансляции, она не выходит автоматически. Есть ли способ установить тайм-аут, если нет прямой трансляции?

код: mplayer -i url -t 00:00:10 -acodec libmp3lame -ab 24 -ar 8000 audio.mp3

Заранее спасибо.

1 ответ1

0

Я решил это с помощью Expect. Вы запускаете потоковое воспроизведение с помощью ./play.sh:

while [ '1' == '1' ]; 
do
  expect try_stream.exp $1 
  sleep 3
done

И это использует try_stream.exp:

set timeout 4
spawn mplayer -nocache $argv
expect {
  "Starting playback" { 
    interact
  }
  timeout { 
    send \003;
    exit 1
  }
}

По сути, он пытается воспроизвести поток, и если он не может сделать это в течение 3 секунд, он сдается (сценарий .exp) и повторяет попытку (сценарий .sh). Он работает до тех пор, пока у вас есть проблемы, такие как очень занятый сервер. К сожалению, я не знаю, как справиться со случаем, когда mplayer застревает после того, как он начал играть, нет выходной строки, которую Expect может обнаружить в таком случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .