Любому администратору медиа-сервера интересно знать, какое количество одновременных подключений выдержит его медиа-сервер. Сегодня речь пойдет о Wowza сервере и его нагрузочном тестировании.
Wowza и RTMP
Для проведения нагрузочного тестирования Wowza Media Server по протоколу RTMP существует утилита от компании Wowza, которая называется Flash RTMP Load Test Tool (http://www.wowza.com/forums/content.php?122-How-to-get-Flash-RTMP-Load-Test-Tool).
Это довольно удобное программное обеспечение для нагрузочного тестирования медиа-серверов. Утилита позволяет эмулировать до нескольких сотен подключений к медиа-сереру по протоколу RTMP с одного компьютера, в зависимости от мощности PC на котором она запущенна.
Wowza и HLS
Сейчас все больше пользователей используют мобильные устройства для получения видео-потоков с медиа-серверов по протоколу HLS, поэтому и у нас появляются задачи по нагрузочному тестированию серверов для протокола HLS. Был найден проект hls-player (http://code.google.com/p/hls-player/). Этот hls плеер, написан на языке python. Посмотрим на что он способен.
- Скачиваем архив с плеером HLSPlayer-0.1.tar.gz
- Распаковываем его и в директории [install-dir]/HLSPlayer-0.1
- Выполняем команду sudo python setup.py install
- Пробуем запустить плеер.
Опция -n указывает, какое количество одновременных потоков запустить, по умолчанию значение 1. Опция -D отключает вывод видео на экран.
hls-player -n 1 -D http://[ip-server]:1935/live2/_definst_/Sample1024/playlist.m3u8
После первого запуска плеер повис и не работал. Я проверил плеер на другом сервере.
hls-player -n 1 -D http://www.nasa.gov/multimedia/nasatv/NTV-Public-IPS.m3u8
Все заработало!
Вносим некоторые изменения
Я решил разобраться в чем дело. После просмотра исходных кодов плеера я пришел к выводу, что для работы с Wowza сервером эту программу необходимо модифицировать. Для этого нужно внести некоторые изменения. Открываем в текстовом редакторе файл [install-dir]/HLSPlayer-0.1/HLS/m3u8.py и делаем следующее:
Строки 123 и 124:
i = (f.split(‘=’) for f in l.split(‘,’))
d = dict((k.strip(), v.strip()) for (k,v) in i)
заменяем на следующие:
if l.find(‘»‘)==-1:
i = (f.split(‘=’) for f in l.split(‘,’))
else:
l1 = l.replace(‘, ‘, ‘a’)
l2= «».join([str(i) for i in l1])
i = (f.split(‘=’) for f in l2.split(‘,’))
d = dict((k.strip(), v.strip()) for (k,v) in i)
А также после строки 141:
v = l[8:].split(‘,’)
Добавляем следующие строки:
if v[0].find(‘.’) >0:
l1 = v[0].split(‘.’)
v[0]= l1[0]
После внесения изменений сохраняем файл. Теперь я снова вернулся в директорию [install-dir]/HLSPlayer-0.1 и выполнил уже известную команду:
sudo python setup.py install
Далее попробовал запустить его снова:
hls-player -n 80 -D http://[ip-server]:1935/live2/_definst_/Sample1024/playlist.m3u8
Все работает! В целом инструмент для тестирования довольно удобный. Будем надеяться, что команда разработчиков будет и дальше улучшать и развивать Hls-player.
Заключение
Эта статья была написана и опубликована совместно c моим коллегой Евгением Петровым, который и проделывал выше описанные действия.
Если вам нужно что-то настроить или получить консультацию по медиа серверам и системам, можете обращаться ко мне и нашей команде через форму контактов.
Приглашаю подписаться на новости моей публичной страницы ВКонтакте, ее адрес http://vk.com/itmultimedia . Буду рад видеть Вас в своих подписчиках!
Всего хорошего!
Комментарии: