एक साथ दो साउंड ट्रैक सुनने वाली मूवी कैसे चलाएं?


10

मेरे पास कई ऑडियो ट्रैक (एमकेवी कंटेनर में) के साथ मूवी फाइलें हैं। मैं वक्ताओं को एक भाषा (बच्चों के लिए) और एक अन्य भाषा को हेडफ़ोन (अपने लिए) भेजते हुए फिल्म देखना चाहता हूं, अगर फिल्म को रोक दिया जाता है, तो ट्रैक को सिंक में रखते हुए, आदि।

मान लें कि मेरे सिस्टम में पहले से ही दो ऑडियो आउटपुट ठीक से कॉन्फ़िगर किए गए हैं।

क्या लिनक्स में मीडिया प्लेयर के साथ ऐसा करने का कोई तरीका है? मैंने अब तक MPlayer और VLC की जाँच की है, और वे केवल उपलब्ध ऑडियो ट्रैक में से एक का चयन करने का समर्थन करते हैं।


1
आप एक ऑफ-टॉपिक प्रश्न (सॉफ़्टवेयर खरीदारी) पूछ रहे हैं। उत्पाद, सेवा, या शिक्षण सामग्री की मांग करने वाले प्रश्न ऑफ टॉपिक हैं। विषय पर देखें । Softwarerecs.stackexchange.com आज़माएं लेकिन कृपया पहले पढ़ें कि "पर्याप्त जानकारी" के प्रश्न के लिए क्या आवश्यक है
DavidPostill

हो सकता है कि आप फ़ाइल को फिर से एनकोड कर सकें, दोनों ऑडियो स्ट्रीम को एक में मिलाएँ। तो अगर एक 5.1 है और दूसरा स्टीरियो है, तो आपके पास 8 चैनल स्ट्रीम होगा। आप ओएस एक्स पर साउंडफ्लावर का उपयोग करके विभिन्न चैनलों पर इन चैनलों को मैप कर सकते हैं, लेकिन मुझे लिनक्स के बारे में पता नहीं है। बहुत असुविधाजनक लगता है। तुम भी कुछ का उपयोग कर सकते हैं Adobe Premiere या एक और NLE विभिन्न आउटपुट के लिए विभिन्न ऑडियो पटरियों के नक्शे के लिए।
इलियट बी

मुझे डर है कि the_ "kids" _ ने पहले ही दूसरी भाषा सीख ली है ... कम से कम मुझे उम्मीद है। :-)
हस्त्तूर

आप ऑडियो ट्रैक को स्टीरियो में भी मिला सकते हैं, फिर उन सभी को 5.1 ऑडियो ट्रैक (केंद्र / सबवूफ़र चैनलों की अनदेखी) में डाल सकते हैं, और फिर उन्हें मूवी में वापस ला सकते हैं। फिर आप इसे किसी भी 5.1 साउंड कार्ड पर खेल सकते हैं, बस हेडफ़ोन और स्पीकर को उचित आउटपुट में प्लग कर सकते हैं।
जोनासकज - मोनिका

जवाबों:


3

विचार

उर्फ (बटर) को पहिया पर कैसे फोड़ना है [ मक्खी ]

आप सभी ऑडियो और उपशीर्षक ट्रैक के साथ स्थानीय मूवी को पूरी तरह से स्ट्रीम कर सकते हैं, जैसे कि vlc
तब दो क्लाइंट को उस स्ट्रीम से कनेक्ट करने के लिए "पर्याप्त" होगा , भाषा (और / या उपशीर्षक) और विभिन्न ऑडियो आउटपुट (जो हम पहले से कॉन्फ़िगर किए गए मान लेते हैं) का चयन करें।

इसके अलावा एक नए टेलीविज़न, टैबलेट या मोबाइल फोन के साथ, कंप्यूटर पर क्लाइंट्स को चलाने के लिए इसकी आवश्यकता नहीं है ... और जब आप स्ट्रीमर डालते हैं तो आप सभी को रोक देते हैं ... और इसे विंडोज़ के साथ भी काम करना चाहिए (हमेशा मान लिया गया ऑडियो आउटपुट पहले से ही तीसरे भाग के कार्यक्रमों के साथ शायद कॉन्फ़िगर किया गया है, उस स्थिति में जब आप कंप्यूटर पर दो क्लाइंट चलाना चाहते हैं)।

कुछ और शब्द

एक सामान्य स्ट्रीमिंग कमांड लाइन के समान हो सकती है

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

यह विकल्प --sout-all [ SO ] की जरूरत है

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

vlc -Hउपलब्ध अन्य (टन) विकल्प के लिए कुछ संकेत पढ़ने के लिए पढ़ें ।

धारा को "खेलने" के लिए

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

जहाँ x उस ग्राहक पर सुनने के लिए आवश्यक ऑडियो स्ट्रीम की संख्या है।
सभी को सर्वर / क्लाइंट GUI से भी आसानी से किया जाना चाहिए ...

संदर्भ और अधिक रीडिंग
आप Luuk के ब्लॉग पेज से अधिक पढ़ने के लिए चाहते हो सकता है "सिंक में कई कंप्यूटरों पर कई वीडियो क्लिप खेलने के लिए उपयोग वीएलसी" [ 1 ] आपको धीरे-धीरे VideoLAN की इस विकि पेज से बाह्य ऑडियो ट्रैक शुरू करने को जोड़ने का प्रयास कर सकते हैं [ 2 ] , या आप इस जवाब में एंटोनियो द्वारा सुझाए गए Gstreamer और विभिन्न आउटपुट के साथ खेल सकते हैं [ 3 ]

GStreamer:
# पटरियों की संख्या और क्रम ज्ञात होना चाहिए ...

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″

ऊपर Gstreamer कमांड अपने आप में (मक्खन) मक्खी को बचाने के लिए एक कम से कम काम का उत्तर हो सकता है या एक रास्ता हो सकता है ...
... लेकिन शायद ही कभी मैं अपने खुद के उपनाम की रक्षा करने के लिए लुभाता हूं।


ध्यान दें कि RST IP को 239.255.255.255 (मल्टीकास्ट आईपी रेंज) के माध्यम से 224.0.0.0 की सीमा में होना चाहिए या आप क्लाइंट से अधिक कनेक्ट नहीं कर पाएंगे। ऐसे किसी भी आईपी की तरह लगता है बस काम करेगा।
chx

@chx मुझे बताएं कि क्या विचार आपके अन्य मुद्दे के साथ काम करता है ...
Hastur

हाँ यह करता है! मैंने इसे superuser.com/a/1422462/41259 लिखा था, लेकिन मुझे लगा कि यह विवरण यहाँ ध्यान देने योग्य है।
chx

0

स्ट्रीमिंग समाधान में एक खामी है - ग्राहक कैश का उपयोग करते हैं और वे सिंक से बाहर जा सकते हैं। यह मेरे साथ हुआ।

दो अलग-अलग ट्रैक को एक साथ चलाने के लिए एक और तरीका जो मुझे अपने लिए उपयोगी लगा वह है वीएलसी के दो उदाहरणों को चलाना और उनकी प्लेबैक को सिंक करना। लेकिन मैं स्वचालन के बिना ठीक से नहीं किया जा सकता है (मैन्युअल क्रियाएं एक-एक करके देरी का कारण बनती हैं)।

समाधान के लिए VLC दोनों उदाहरणों को वेब इंटरफेस का उपयोग करके नियंत्रित करना है। इसे GUI या कंसोल के माध्यम से सक्षम किया जा सकता है:

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 अनुरोध भेजती है। मैंने इसके लिए बहुत ही सरल गोलंग कार्यक्रम लिखा था (यहाँ स्रोत कोड है )। JS उस उद्देश्य के लिए एक और अच्छा उम्मीदवार है। आगे जाकर यह संभव है कि अधिक कमांड बनाएं, उस प्रोग्राम / स्क्रिप्ट को वैश्विक कुंजी बाइंडिंग असाइन करें।

मुख्य बिंदु जो दृष्टिकोण अच्छा काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.