Как известно, недавно NASA установила на МКС 4 видеокамеры высокого разрешения (1280х720) и организовала прямую трансляцию Земли.

ISS HDEV Stream Screenshot

Зрелище это настолько завораживающее, что сразу возникает желание сохранить себе немного этой красоты. Сложность, однако, заключается в том, что сервис UStream, с помощью которого ведется трансляция, использует так называемую блочную (chunked) передачу потока, в которой видеоданные передаются кусками по 5 секунд, при этом URL-адрес видеопотока постоянно меняется. Помимо этого, в трансляции довольно много пауз, связанных либо с тем, что станция находится на ночной стороне Земли (тогда экран полностью черный), либо с проблемами с каналом связи МКС-Земля, экран заполняется серым цветом. Также "сереет" экран на несколько секунд при переключении между камерами.

Таким образом, имеются две проблемы:

  1. Чем сохранять видеопоток с сервера UStream?
  2. Как удалить из трансляции не несущие информации паузы?

Для пользователей 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. Надо только помнить, что по умолчанию в расписании скрываются дневные витки, ибо сайт изначально рассчитан на наблюдение МКС с Земли, а не наоборот. :) Для включения отображения дневных витков нужно перевести переключатель "Показать пролеты" в состояние "Все".