Aynı anda iki ses parçasını dinleyen bir film nasıl oynatılabilir?


10

Birden fazla ses parçası olan film dosyalarım var (MKV kapsayıcısında). Hoparlörlere (çocuklar için) bir dil ve kulaklıklara (kendim için) başka bir dil gönderirken, film duraklatıldığında parçaları senkronize halde tutarak bir film izlemek istiyorum.

Sistemimin zaten doğru şekilde yapılandırılmış iki ses çıkışı olduğunu varsayın.

Bunu Linux'ta bir medya oynatıcı ile yapmanın bir yolu var mı? MPlayer ve VLC'yi şimdiye kadar kontrol ettim ve sadece mevcut ses parçalarından birini seçmeyi destekliyorlar.


1
Konu dışı bir soru soruyorsunuz (yazılım alışverişi). Ürün, hizmet veya öğrenme materyali önerileri arayan sorular konu dışıdır. Konuya Bakın . Softwarerecs.stackexchange.com sitesini deneyin, ancak lütfen önce bir sorunun "yeterli bilgi" içermesi için gerekenleri okuyun .
DavidPostill

Belki dosyayı yeniden kodlayabilir, her iki ses akışını da bir araya getirebilirsiniz. Biri 5.1 ve diğeri stereo ise, 8 kanallı bir akışınız olur. OS X'de Soundflower'ı kullanarak bu kanalları farklı çıkış cihazlarıyla eşleştirebilirsiniz, ancak Linux'u bilmiyorum. Kulağa çok rahatsız edici geliyor. Farklı ses parçalarını farklı çıkışlara eşlemek için Adobe Premiere veya başka bir NLE gibi bir şey de kullanabilirsiniz.
Elliott B

Korkarım "çocuklar" _ zaten diğer dili öğrendi ... en azından umarım. :-)
Hastur

Ses parçalarını stereo olarak da karıştırabilir, sonra hepsini 5.1 ses parçasına (orta / subwoofer kanallarını yok sayarak) koyabilir ve sonra tekrar filme karıştırabilirsiniz. Daha sonra herhangi bir 5.1 ses kartında çalabilirsiniz, sadece kulaklıkları ve hoparlörleri uygun çıkışa takın.
JonasCz - Monica'ya

Yanıtlar:


3

Fikir

aka Tekerlek üzerinde (tereyağı) bir sinek nasıl kırılır [ Sinek ] .

Tüm filmi yerel olarak tüm ses ve altyazı parçalarıyla, örneğin vlc.
Daha sonra , dili (ve / veya altyazıları) ve farklı ses çıkışını (zaten yapılandırılmış olduğunu düşündüğümüz) seçerek, bu istemciye iki istemciyi bağlamak "yeterli" olacaktır .

Ayrıca yeni bir televizyon, tablet veya cep telefonu ile istemcileri bilgisayarda çalıştırmak gerekmez ... ve flama koyduğunuzda hepsini duraklattığınız zaman ... ve pencerelerle de çalışmalıdır (her zaman varsayılır) bilgisayarda iki istemciyi çalıştırmak istediğinizde, zaten yapılandırılmış ses çıkışı üçüncü bölüm programlarla olabilir).

Bazı kelimeler daha

Tipik bir akış komut satırı aşağıdakine benzer olabilir:

vlc "movie.mkv" --sout-all --sout="#rtp{dst=239.255.100.100,port=5004,mux=ts}"

[ SO ] seçeneğine ihtiyaç vardır--sout-all

 --sout-all, --no-sout-all  Enable streaming of all ES (default disabled)
 Stream all elementary streams (video, audio and subtitles) (default disabled)

vlc -HDiğer (ton) seçenekler için bazı ipuçları için okuyun .

To "oyun" dere

vlc rtp://239.255.100.100:5004  --audio-track=x

burada x, o istemcide dinlemek istediğiniz ses akışının sayısıdır.
Hepsi de sunucu / istemci GUI'sinden kolayca yapılmalıdır ...

Referanslar ve daha fazla okuma
Luuk'un "Senkronize olarak birden fazla bilgisayarda birden fazla video klip oynatmak için VLC kullanın" [ 1 ] blog sayfasından daha fazla okumak isteyebilirsiniz , sonunda videolanın bu wiki sayfasından başlayarak harici ses parçası eklemeyi deneyebilirsiniz [ 2 ] veya bu cevapta Antonio tarafından önerilen Gstreamer ve farklı çıktılarla oynayabilirsiniz [ 3 ] .

GStreamer:
# Parça sayısı ve sırası bilinmelidir…

gst-launch-1.0 \
filesrc location=example.mkv ! decodebin name=decoded \
decoded.src_0 ! queue ! autovideosink \
decoded.src_1 ! queue ! audioconvert ! alsasink device=”hw:1,0″ \
decoded.src_2 ! queue ! audioconvert ! alsasink device=”hw:2,0″

Yukarıdaki Gstreamer komutu kendi başına minimal bir çalışma cevabı veya (tereyağı) sineği kurtarmak için bir yol olabilir ...
... ama nadiren kendi takma adımı savunmak istiyorum.


RST IP'sinin 224.0.0.0 ila 239.255.255.255 (çok noktaya yayın IP aralığı) aralığında olması gerektiğini veya istemciden daha fazlasını bağlayamayacağınızı unutmayın. Böyle bir IP sadece işe yarayacak gibi görünüyor.
chx

@chx Fikrin diğer sayınızla çalışıp çalışmadığını bize bildirin ...
Hastur

Evet öyle! Ben superuser.com/a/1422462/41259 yazdım ama bu detayın burada bahsetmeye değer olduğunu düşündüm.
chx

0

Akış çözümünün bir dezavantajı vardır - istemciler önbelleği kullanır ve senkronizasyondan çıkabilirler. Bana oldu.

Kendim için yararlı bulduğum iki farklı parçayı aynı anda çalıştırmak için başka bir yaklaşım, iki VLC örneğini çalıştırmak ve çalmalarını senkronize etmektir. Ama otomasyon olmadan düzgün bir şekilde yapılamıyorum (gecikmelere neden olan manuel eylemler tek tek yapılır).

Çözüm, her iki VLC örneğini web arayüzü kullanarak senkronize olarak kontrol etmektir. GUI veya konsol aracılığıyla etkinleştirilebilir:

vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password

Her VLC örneği için farklı bağlantı noktaları kullanın. Oynatmayı kontrol etmek için bir komut yeterlidir - duraklatma geçişi: http://:any_password@127.0.0.1:8081/requests/status.xml?command=pl_pause"

Komutlar hakkında daha fazla bilgi .

Bu durumda tek yapmanız gereken, her iki URI'ye aynı anda HTTP isteği gönderen bir program / komut dosyası yapmaktır. Bunun için çok basit bir golang programı yazdım (işte kaynak kod ). JS bu amaç için iyi bir adaydır. Daha ileri gitmek, daha fazla komut yapmak, o programa / betiğe genel anahtar bağlantıları atamak mümkündür.

Yaklaşımın iyi çalıştığı ana nokta.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.