2015-06-23 18 views
6

मैं स्ट्रीमिंग यूआरएल के लिए एक्सप्लेयर का उपयोग कर रहा हूं। मैं exoplayer में srt फ़ाइल जोड़ना चाहता हूं। लेकिन मुझे लगता है कि खिलाड़ी srt फ़ाइल का समर्थन नहीं करता है इसलिए मैंने अपनी फ़ाइल सामग्री को 1 चर में रखा है।एंड्रॉइड में उपशीर्षक कैसे दिखाएं ExoPlayer

एंड्रॉइड एक्सप्लॉयर में उपशीर्षक कैसे दिखाएं?

+0

इस रेपो को देखने का प्रयास करें: https://github.com/bluemix/CinemanaPlayer –

उत्तर

2

मुझे समाधान मिला। मैं सम्मान बिल्डर है कि पास उपशीर्षक खिलाड़ी गतिविधि में के बाद का उपयोग कर TimedTextFileFormat नीचे टीटीएमएल को srt कन्वर्ट करने के लिए मेरे कोड है टीटीएमएल फ़ाइल में SRT फ़ाइल कनवर्ट करते हैं,

private Subtitle subttl; 

private void parseSubtitile(String subtitle) { 

// subtitle is the srt file content 
      // TODO Auto-generated method stub 
      // StringBuilder buf = new StringBuilder(); 

InputStream json = null; 
json = null; 
     json = new ByteArrayInputStream(subtitle.getBytes()); 
    // FormatTTML formate = new FormatTTML(); 
    InputStream is = null; 
    try { 
     // TimedTextObject ttmlObj=formate.parseFile("Testing", json); 
     TimedTextFileFormat ttff = new FormatSRT(); 
     TimedTextObject tto = ttff.parseFile("Test", json); 
     // IOClass.writeFileTxt("test1", tto.toTTML()); 

     String data = tto.toTTML(); 
     is = new ByteArrayInputStream(data.getBytes()); 
     Log.d("web", data.toString()); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (FatalParsingException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    TtmlParser parser = new TtmlParser(); 
    try { 
     subttl = parser.parse(is, null, 0); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

, इस में मैं HlsRendererBuilder को भेज रहा हूँ।

private RendererBuilder getRendererBuilder() { 
     String userAgent = Util.getUserAgent(this, "ExoPlayerDemo"); 
     switch (contentType) { 

    case DemoUtil.TYPE_HLS: 
     return new HlsRendererBuilder(this, userAgent, 
       contentUri.toString(), debugTextView, audioCapabilities, 
        subttl); 
} 

HlsRendererBuilder वर्ग से TrackRenderer को इसे पारित, // बिल्ड डिबग रेंडरर।

TrackRenderer debugRenderer = debugTextView != null 
    ? new DebugTrackRenderer(debugTextView, player, videoRenderer,context,subttl) : null; 

और कोड नीचे रन विधि प्रयोग में DebugTrackRenderer कक्षा में,

public void run() { 
    String data1 = subttl.getText(getCurrentPositionUs()); 

    player.onText(String.valueOf(data1)); 


} 
0

एक्सपोप्लेयर में उपशीर्षक प्रगति में कार्य हैं।

the 1.4.0 release पर कहा गया है:

(WorkInProgress) - स्टाइल का समर्थन + तैनात उपशीर्षक के आरंभिक चरण।

5

एक थोड़ी देर हो चुकी है, लेकिन यह Exoplayer 1.5.1 जहां DebugTrackRenderer हटा दिया गया है का उपयोग करते हुए दूसरों की मदद कर सकते हैं।

का प्रयोग करें,

DataSource textDataSource = new DefaultUriDataSource(context, bandwidthMeter, userAgent); 
    SingleSampleSource textSampleSource = new SingleSampleSource(subTitleUrl, textDataSource, 
      MediaFormat.createTextFormat(MediaFormat.NO_VALUE,MimeTypes.APPLICATION_SUBRIP, MediaFormat.NO_VALUE, TrackRenderer.MATCH_LONGEST_US, null)); 
    TrackRenderer textRenderer = new TextTrackRenderer(textSampleSource, player, 
      player.getMainHandler().getLooper()); 

कोड से ऊपर SingleSampleSource को subTitleUrl गुजरता है।

तो बस अपने TextTrackRenderer कि के रूप में डिफ़ॉल्ट रूप से सक्षम है,

player.setSelectedTrack (YourPlayer.TYPE_TEXT, YourPlayer.TRACK_DEFAULT) सक्षम;

यह चाल करेगा।

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