Воспроизведение видео на нескольких мониторах под OS X
Была у меня работа: надо было сделать систему удаленной смены видеоконтента, показываемого на тв плазмах в бутике. Вроде бы все просто, вариантов реализации не мало. Но была еще одна задача: на сдвоенных плазмах нужно было реализовать показ одного видео на двух мониторах, то есть видео должны быть растянуто по ширине на двух мониторах, подключенных к одному Mac Mini. Как оказалось, существует не так много бесплатного софта для реализации video wall под OS X.
VLC
Для начала я попробовал VLC. У него лично для меня было два плюса: хорошая поддержка вызова из коммандной строки и поддержка video wall. Вот только во второй версии они этот самый video wall поломали, по этому я использовал версию 1.1.4. Забегая вперед, расскажу, что заставить работать нормально так и не вышло.
Запустить видео с поддержкой показа на двух мониторах, можно как настроив из GUI, так и добавив пару параметров при вызове из коммандной строки. Разницы абсолютно никакой, я сейчас расмотрю настройку из GUI.
- Настройки –> Показать все –> Видео Отмечаем галочкой “Полноэкранный вывод видео”.
- Видео –> Фильтры
Отмечаем галочкой Wall Video Filter.
- Видео –> Фильтры –> Стена из изображений
Указывем количество мониторов и другие настройки.
И в первый раз у меня действительно это получилось. Открыл видео – оно в полноэкранном режиме растянуто на двух мониторах.
Но есть удивительный баг: если даже просто отключить монитор от Mac и обратно его подключить, все ломается. Открываешь видео, а отображается только левая его часть, и то на правом мониторе. Или вообще ничего не показывается. Как я только не менял настройки, помогло лишь удаление /Library/Preferences/com.apple.windowserver.plist и перезагрузка. Но это работает до тех пор, пока снова не отключишь монитор. Так что не наш выбор
MPlayer
У MPlayer есть интересный параметр: —xineramascreen. Он позволяет выбрать монитор на котором будет воспроизводится видео. То есть mplayer --xineramascreen 0
Воспроизводить на первом мониторе, mplayer --xineramascreen 1
– на правом. Но mplayer --xineramascreen -2
должно воспроизводить на всех мониторах одновременно. Должно, но воспроизводит ровно так, как будто этого параметра нет. Гугл говорит о том, что оно так ни у кого не работает. Но я не сдавался: пробовал разные сборки mplayer: MPlayer OSX Extended, MPlayerX, Mplayer2, собирал с помощью Macports и Homebrew – ничто не смогло заработать так, как это нужно было.
MSAQTPlayer
И только после всех этих мучений я наткнулся на MSAQTPlayer. Маленькая программа, которая умеет только одно: воспроизводить видео одновременно на всех подключенных мониторах. Правда реализована она весьма странно: она воспроизводит видео, путь до которого прописан в ее preferences.plist, по другому (То есть через “Открыть в программе” из Finder или open -a MSAQTPlayer /путь/до/файла")
никак видео она не открывает. Весьма странный подход. Настроек минимум: fullscreen, in front, autoplay и loop, но большего и не надо.
Работает просто прекрасно, пусть и написана в 2008ом году, использует обычный QuickTime. Только одна проблема: ибо путь к файлу у него в preferences.plist, а видео надо менять удаленно, пришлось делать генерацию этого самого preferences.plsit, в котором прописывается путь до нового файла на удаленной машине, которая копирует его с замной на место старого и выполняет open -a MSAQTPlayer
через SSH.