如何播放同时听两个音轨的电影?

Mar*_*ner 10 audio video linux media-player

我有多个音轨的电影文件(在 MKV 容器中)。我想一边看电影一边将一种语言发送到扬声器(为孩子们)和另一种语言发送到耳机(为我自己),如果电影暂停等,保持曲目同步。

假设我的系统已经正确配置了两个音频输出。

有没有办法用 Linux 中的媒体播放器来做到这一点?到目前为止,我已经检查过 MPlayer 和 VLC,它们只支持选择可用的音轨之一。

Has*_*tur 5

想法

\n\n

又名如何打破方向盘上的(蝴蝶)苍蝇 []

\n\n

您可以在本地流式传输整部电影以及所有音频和字幕轨道,例如使用vlc. \n然后“足够”
将两个客户端连接到该流,选择语言(和/或字幕)和不同的音频输出(我们假设已经配置)。

\n\n

此外,使用新的电视、平板电脑或手机,不需要在计算机上运行客户端...当您暂停流媒体时,您就暂停了所有...并且它也应该适用于 Windows(总是假设)如果您想在计算机上运行两个客户端,则可能已使用第三方程序配置了音频输出)。

\n\n

多说几句

\n\n

典型的流命令行可以类似于

\n\n
vlc "movie.mkv" --sout-all --sout="#rtp{dst=239.255.100.100,port=5004,mux=ts}"\n
Run Code Online (Sandbox Code Playgroud)\n\n

需要选项--sout-all [ SO ]

\n\n
\n
 --sout-all, --no-sout-all  Enable streaming of all ES (default disabled)\n Stream all elementary streams (video, audio and subtitles) (default disabled)\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

阅读vlc -H以获取有关其他(大量)可用选项的一些提示。

\n\n

“播放

\n\n
vlc rtp://239.255.100.100:5004  --audio-track=x\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中 x 是您要在该客户端上收听的音频流的编号。
\n所有这些都应该可以从服务器/客户端 GUI 轻松完成...

\n\n

参考资料和进一步阅读
\n您可能想从 Luuk 的博客页面“使用 VLC 在多台计算机上同步播放多个视频剪辑” [ 1 ]中阅读更多内容,您最终可以尝试从此 wiki 开始添加外部音轨videolan [ 2 ]页面,或者您可以按照 Antonio 在这个答案[ 3 ]中的建议使用 Gstreamer 和不同的输出。

\n\n
\n

GStreamer:
\n # 轨道的数量和顺序必须已知\xe2\x80\xa6

\n
\n\n
gst-launch-1.0 \\\nfilesrc location=example.mkv ! decodebin name=decoded \\\ndecoded.src_0 ! queue ! autovideosink \\\ndecoded.src_1 ! queue ! audioconvert ! alsasink device=\xe2\x80\x9dhw:1,0\xe2\x80\xb3 \\\ndecoded.src_2 ! queue ! audioconvert ! alsasink device=\xe2\x80\x9dhw:2,0\xe2\x80\xb3\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面的 Gstreamer 命令本身可以是一个最小的工作答案,也可以是保存(黄油)苍蝇的路径......
\n...但我很少想捍卫自己的昵称。

\n