2012-01-09 13 views
26

मुझे कुछ मिल गया है .MP4 वीडियो फ़ाइलें जिन्हें एक एंड्रॉइड गतिविधि में एक वीडियो व्यू में पढ़ा जाना चाहिए। इन वीडियो में कई ऑडियो ट्रैक शामिल हैं, प्रत्येक उपयोगकर्ता भाषा के अनुरूप है (उदाहरण: अंग्रेजी, फ्रेंच, जापानी ...)।
मुझे ऐसी सुविधा प्रदान करने के लिए किसी भी मदद या दस्तावेज को खोजने में अप्रत्याशित परेशानी मिली है। मैं वर्तमान में वीडियो लोड करने और MediaController के साथ एक वीडियो व्यू में इसे चलाने में सक्षम हूं, लेकिन ऑडियो ट्रैक को नहीं बदला।

मुझे यकीन नहीं है कि एंड्रॉइड एसडीके ऐसा करने का कोई आसान तरीका प्रदान करता है, जो मुझे मेरी समस्या को हल करने के तरीके से काफी अनजान है। मैं प्रत्येक ऑडियो ट्रैक निकालने की सोच रहा था, जिस भाषा को मैं मीडियाप्लेयर में भाषा के आधार पर लोड करना चाहता हूं, फिर ऑडियो और वीडियो एक साथ खेलें। लेकिन मुझे डर है कि कुछ सिंक मुद्दे उत्पन्न हो सकते हैं और मुझे ऐसा करने से रोक सकते हैं।

यदि आपके पास कोई समस्या है, तो इस समस्या से शुरू करने में मेरी सहायता करने के लिए कोई सलाह, आप स्वागत से अधिक हैं।एंड्रॉइड: एक वीडियो व्यू में एकाधिक ऑडियो ट्रैक?

+0

इस पर कोई प्रगति? – runor49

+0

आपने चयनित समाधान के लिए टिप्पणी के आधार पर प्रगति की है। क्या आप साझा कर सकते हैं कि आपने कहा कार्य कैसे पूरा किया? – LostPuppy

+0

यह एक पुराना सवाल है लेकिन इस समस्या का एक आसान समाधान है। मेरा जवाब देखें –

उत्तर

3

अभी तक परीक्षण नहीं किया है, लेकिन ऐसा लगता है कि Vitamio लाइब्रेरी में कई ऑडियो ट्रैक (अन्य रोचक विशेषताओं के बीच) के लिए समर्थन है। यह एपीआई-एंड्रॉइड से VideoView कक्षा के साथ संगत है।

शायद आपको ऑडियो ट्रैक सेट करने के लिए विटामीVideoView.setAudioTrack() का उपयोग करना होगा (उदाहरण के लिए लोकेल पर आधारित)। विवरण के लिए Vitamio API docs देखें।

+0

अंत में मैंने वही किया जो मैंने सुझाया था। मैंने वीडियो और ऑडियो डेटा को अलग किया, ऑडियो भाषा के आधार पर मीडियाप्लेयर में ऑडियो लोड किया, फिर दोनों धाराओं को सिंक किया। यह काफी गंदे समाधान था, लेकिन उस समय स्वीकार्य था जब मुझे नौकरी करना पड़ा। मैंने आपके समाधान का परीक्षण नहीं किया है, लेकिन मैं इसे स्वीकार करूंगा, क्योंकि ऐसा लगता है कि मुझे वही करना है जो मुझे चाहिए था। वैसे भी धन्यवाद ! – Vahron

-1

वीडियो व्यू क्लास आपकी आवश्यकता का समर्थन नहीं कर सकता है। यू को ऑडियो परत डेटा (आप चाहते हैं) जावा परत पर ऑडियोट्रैक क्लास के साथ खेलने के लिए पार्स करना होगा।

+0

सच नहीं है। मेरा जवाब देखें –

3

कोई 3 पार्टी के लिए आवश्यक पुस्तकालय:

mVideoView.setVideoURI(Uri.parse("")); // set video source  

mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() { 
    @Override 
    public boolean onInfo(MediaPlayer mp, int what, int extra) { 
     MediaPlayer.TrackInfo[] trackInfoArray = mp.getTrackInfo(); 
     for (int i = 0; i < trackInfoArray.length; i++) { 
      // you can switch out the language comparison logic to whatever works for you 
      if (trackInfoArray[i].getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO 
       && trackInfoArray[i].getLanguage().equals(Locale.getDefault().getISO3Language()) { 
       mp.selectTrack(i); 
       break; 
      } 
     } 
     return true; 
    } 
}); 

जहां तक ​​मेरा बता सकते हैं - ऑडियो ट्रैक क्रम में 3-अक्षर वाले ISO 639-2 में एन्कोड किया जाना चाहिए सही ढंग से मान्यता प्राप्त होना।

+0

क्या आप मुझे उन ऑडियो ट्रैक को एन्कोड करने के तरीके पर इंगित कर सकते हैं –

+0

ffmpeg –

+0

शुरू करने के लिए एक अच्छी जगह है, आपने लिखा है कि ऑडियो ट्रैक 3 अक्षर आईएसओ 639-2 में एन्कोड किया जाना चाहिए। क्या आप समझा सकते हैं कि यह क्या है? –

संबंधित मुद्दे