Eu tenho arquivos de filme com várias faixas de áudio (no contêiner MKV). Quero assistir a um filme enquanto envio um idioma para os alto-falantes (para as crianças) e outro para os fones de ouvido (para mim), mantendo as faixas sincronizadas se o filme estiver em pausa etc.
Suponha que meu sistema já tenha duas saídas de áudio configuradas corretamente.
Existe uma maneira de fazer isso com um media player no Linux? Até agora, verifiquei o MPlayer e o VLC e eles oferecem suporte apenas à seleção de uma das faixas de áudio disponíveis.
linux
audio
video
media-player
Martin Vidner
fonte
fonte
:-)
Respostas:
A ideia
aka Como quebrar uma mosca (manteiga) no volante [ Fly ] .
Você pode transmitir localmente o filme inteiro com todas as faixas de áudio e legendas, por exemplo, com
vlc
.Então será "suficiente" conectar dois clientes a esse fluxo, selecionando o idioma (e / ou legendas) e a saída de áudio diferente (que assumimos já configurada).
Além disso, com uma nova televisão, tablet ou celular, não é necessário executar os clientes no computador ... e quando você coloca em pausa a serpentina, coloca tudo em pausa ... e deve funcionar com janelas também (sempre assumido a saída de áudio já configurada talvez com programas de terceiros, caso você queira executar os dois clientes no computador).
Algumas palavras mais
Uma linha de comando típica de streaming pode ser semelhante a
É necessária a opção
--sout-all
[ SO ]Leia
vlc -H
para ter algumas dicas para as outras (toneladas de) opções disponíveis.Para "reproduzir" o fluxo
onde x é o número do fluxo de áudio que você deseja ouvir nesse cliente.
Tudo também deve ser feito facilmente a partir da GUI do servidor / cliente ...
Referências e leituras adicionais
Você pode ler mais na página de blog do Luuk "Use o VLC para reproduzir vários videoclipes em vários computadores em sincronia" [ 1 ] , você pode tentar adicionar uma faixa de áudio externa a partir desta página wiki do videolan [ 2 ] , ou você pode jogar com o Gstreamer e com saídas diferentes, conforme sugerido por Antonio nesta resposta [ 3 ] .
O comando Gstreamer acima pode ser uma resposta mínima de trabalho por si só ou um caminho para salvar a mosca (manteiga) ...
... mas raramente estou tentado a defender meu próprio apelido.
fonte
A solução de streaming tem uma desvantagem - os clientes usam cache e podem ficar fora de sincronia. Isso aconteceu comigo.
Outra abordagem para executar duas faixas diferentes simultaneamente, que eu achei útil, é executar duas instâncias do VLC e sincronizar sua reprodução. Mas não posso ser feito corretamente sem a automação (ações manuais feitas uma por uma que causam atrasos).
A solução é controlar as duas instâncias do VLC de forma síncrona usando a interface da web. Pode ser ativado via GUI ou console:
vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password
Para cada instância do VLC, use portas diferentes. Para controlar a reprodução, basta um comando - faça uma pausa na alternância:
http://:[email protected]:8081/requests/status.xml?command=pl_pause"
Mais informações sobre comandos.
Nesse caso, tudo o que você precisa fazer é criar um programa / script que envie uma solicitação HTTP para os dois URIs simultaneamente. Eu escrevi um programa golang muito simples para ele (aqui está o código fonte ). JS é outro bom candidato para esse fim. Indo além, é possível fazer mais comandos, atribuir associações de teclas globais a esse programa / script.
O ponto principal de que a abordagem funciona bem.
fonte