Как известно, недавно NASA установила на МКС 4 видеокамеры высокого разрешения (1280х720) и организовала прямую трансляцию Земли.
Зрелище это настолько завораживающее, что сразу возникает желание сохранить себе немного этой красоты. Сложность, однако, заключается в том, что сервис UStream, с помощью которого ведется трансляция, использует так называемую блочную (chunked) передачу потока, в которой видеоданные передаются кусками по 5 секунд, при этом URL-адрес видеопотока постоянно меняется. Помимо этого, в трансляции довольно много пауз, связанных либо с тем, что станция находится на ночной стороне Земли (тогда экран полностью черный), либо с проблемами с каналом связи МКС-Земля, экран заполняется серым цветом. Также "сереет" экран на несколько секунд при переключении между камерами.
Таким образом, имеются две проблемы:
- Чем сохранять видеопоток с сервера UStream?
- Как удалить из трансляции не несущие информации паузы?
Для пользователей Linux данные проблемы решаются двумя консольными утилитами - Livestreamer и mencoder. Первая представляет собой универсальное решение для сохранения видеопотока с большого количества популярных сервисов видеотрансляции, а вторая предоставляет средства для обработки и перекодирования видеопотока, в том числе и удаления повторяющихся кадров.
Итак, первым делом устанавливаем самую свежую версию Livestreamer - на данный момент это 1.8.1:
# pip install livestreamer
Последняя версия нужна потому, что более ранние версии некорректно работают с видеопотоками без звука, что и имеет место быть в случае трансляции с МКС.
Если установка прошла успешно, то команда
$ livestreamer http://www.ustream.tv/channel/iss-hdev-payload best
откроет видеопроигрыватель (по умолчанию VLC) с трансляцией в максимальном разрешении.
Для сохранения исходного видеопотока в файл можно воспользоваться ключом -o
:
$ livestreamer http://www.ustream.tv/channel/iss-hdev-payload best -o iss-hdev.avi
И, наконец, сохранение видео в файл с удалением статичных кадров:
$ livestreamer http://www.ustream.tv/channel/iss-hdev-payload best -O | mencoder -ovc lavc -ofps 30 -noskip -vf decimate=-0:150 - -o iss-hdev-decimated.avi
Утилита mencoder входит в пакет MPlayer и может быть установлена штатным пакетным менеджером дистрибутива Linux. Для удаления повторяющихся кадров из исходного видеопотока используется режим пороговой децимации (-vf decimate=-0:150
), где 150 - это минимальное количество отличий между кадрами, при котором они будут признаны различающимися. Данное значение подобрано опытным путем, при меньших значениях больше вероятность попадания в выходной файл "ночных" кадров из-за присутствующих в них шумов, а при бОльших значениях возможны пропуски кадров.
Кстати, на сайте Heavens Above можно получить расписание для пролетов МКС над выбранной точкой Земли. В свою очередь, данное расписание можно использовать для съемки интересующих мест, запуская приведенную выше команду и завершая ее через kill
в нужное время с помощью планировщика at
. Надо только помнить, что по умолчанию в расписании скрываются дневные витки, ибо сайт изначально рассчитан на наблюдение МКС с Земли, а не наоборот. :) Для включения отображения дневных витков нужно перевести переключатель "Показать пролеты" в состояние "Все".
Комментарии
This is great help, thank you so much! (Even though I know it's an old post). I am using this now to great effect! (The ISS feed is so captivating!)
Cheers, Sander