Ошибка открытого URL при использовании vlc в терминале

Я запускаю следующую команду в терминале Linux:

vlc http://streamx/live/....stream/playlist.m3u8 --rate=1 --video-filter=scene --vout=dummy --run-time=3 --scene-format=png --scene-ratio=24 --scene-path=/home/pi/Desktop vlc://quit

Если URL-адрес в порядке, он делает несколько снимков из потоков. Я хотел бы знать, была ли команда выполнена успешно или нет.

если URL-адрес не правильный, выписывается:

[73b00508] core input error: open of 'http://streamx/live/....stream/playlist.m3u8' failed
[73b00508] core input error: Your input can't be opened
[73b00508] core input error: VLC is unable to open the MRL 'http://streamx/live/....stream/playlist.m3u8'. Check the log for details.

если URL-адрес правильный, пишет:

[73b03f20] httplive stream: HTTP Live Streaming (streamx/live/....stream/playlist.m3u8)

Как я могу получить после запуска команды (например, в скрипте Python), если URL был в порядке или нет?

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

1 ответ

Решение

Нам нужно проверить две вещи.

  • 1) Если сам URL жив
  • 2) Если URL активен, идет поток данных (возможно, у вас битая ссылка).

1) Проверить, жив ли URL. Мы можем проверить код статуса. Все, что 2xx или 3xx хорошо (вы можете адаптировать это к вашим потребностям).

import urllib
url = 'http://aska.ru-hoster.com:8053/autodj'

code = urllib.urlopen(url).getcode()
 if str(code).startswith('2') or str(code).startswith('3') :
    print 'Stream is working'
else:
    print 'Stream is dead'

2) Теперь у нас есть хороший URL, но нам нужно проверить, есть ли у нас потоковая передача и не умерла ли ссылка.
Используя VLC, мы можем подключиться к сайту, попытаться воспроизвести мультимедиа по ссылке, а затем проверить ошибки.

Вот рабочий пример, который я получил из моей другой публикации.

import vlc
import time

url = 'http://aska.ru-hoster.com:8053/autodj'
#define VLC instance
instance = vlc.Instance('--input-repeat=-1', '--fullscreen')

#Define VLC player
player=instance.media_player_new()

#Define VLC media
media=instance.media_new(url)

#Set player media
player.set_media(media)

#Play the media
player.play()


#Sleep for 5 sec for VLC to complete retries.
time.sleep(5)
#Get current state.
state = str(player.get_state())

#Find out if stream is working.
if state == "vlc.State.Error" or state == "State.Error":
    print 'Stream is dead. Current state = {}'.format(state)
    player.stop()
else:
    print 'Stream is working. Current state = {}'.format(state)
    player.stop()
Другие вопросы по тегам