У меня есть файлы фильмов с несколькими звуковыми дорожками (в контейнере MKV). Я хочу смотреть фильм, отправляя один язык на динамики (для детей) и другой язык на наушники (для себя), синхронизируя треки, если фильм приостановлен, и т. Д.
Предположим, что моя система уже имеет два аудиовыхода, настроенных правильно.
Есть ли способ сделать это с помощью медиаплеера в Linux? До сих пор я проверял MPlayer и VLC, и они поддерживают только выбор одной из доступных звуковых дорожек.
linux
audio
video
media-player
Мартин Виднер
источник
источник
:-)
Ответы:
Идея
aka Как сломать (масло) летать на колесе [ Fly ] .
Вы можете транслировать локально весь фильм со всеми звуковыми дорожками и дорожками субтитров, например, с помощью
vlc
.Тогда будет «достаточно» подключить двух клиентов к этому потоку, выбрав язык (и / или субтитры) и другой аудиовыход (который мы предполагаем, уже настроен).
Более того, с новым телевизором, планшетом или мобильным телефоном нет необходимости запускать клиенты на компьютере ... а когда вы ставите паузу, стример вы ставите на паузу все ... и он должен работать и с окнами (всегда предполагается аудиовыход уже сконфигурирован, может быть, с помощью программ третьих сторон, на случай, если вы хотите запустить двух клиентов на компьютере).
Еще несколько слов
Типичная потоковая командная строка может быть похожа на
Нужна опция
--sout-all
[ SO ]Прочитайте,
vlc -H
чтобы получить некоторые подсказки для других (тонны) доступных вариантов.Для того, чтобы «играть» по течению
где x - номер аудиопотока, который вы хотите прослушать на этом клиенте.
Все должно быть легко сделано из графического интерфейса сервера / клиента тоже ...
Ссылки и дальнейшие чтения
Возможно, вы захотите прочитать больше на странице блога Luuk «Используйте VLC для синхронного воспроизведения нескольких видеоклипов на нескольких компьютерах» [ 1 ] , вы можете в конечном итоге попытаться добавить внешнюю звуковую дорожку, начиная с этой вики-страницы videolan [ 2 ] , или вы можете играть с Gstreamer и другим выводом, как это было предложено Антонио в этом ответе [ 3 ] .
Приведенная выше команда Gstreamer может быть минимальным рабочим ответом сама по себе или путем для спасения мухи (масла) ...
... но редко я испытываю желание защитить свой псевдоним.
источник
Потоковое решение имеет недостаток - клиенты используют кеш, и они могут выйти из синхронизации. Это случилось со мной.
Другой подход для одновременного запуска двух разных дорожек, который я нашел полезным для себя, - запустить два экземпляра VLC и синхронизировать их воспроизведение. Но я не могу сделать должным образом без автоматизации (ручные действия выполняются одно за другим, что вызывает задержки).
Решение состоит в том, чтобы управлять обоими экземплярами VLC синхронно, используя веб-интерфейс. Его можно включить через графический интерфейс или консоль:
vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password
Для каждого экземпляра VLC используйте разные порты. Для управления воспроизведением достаточно одной команды - переключение паузы:
http://:any_password@127.0.0.1:8081/requests/status.xml?command=pl_pause"
Больше информации о командах.
В этом случае все, что вам нужно сделать, это создать программу / скрипт, который отправляет HTTP-запрос на оба URI одновременно. Я написал очень простую программу для Голанга (вот исходный код ). JS является еще одним хорошим кандидатом для этой цели. Если пойти дальше, можно сделать больше команд, назначить глобальные привязки клавиш для этой программы / скрипта.
Главное, что подход работает хорошо.
источник