2011-09-29 59 views

回答

0

代碼懶惰的帥哥那裏如下,詳細的回答是here

private HashMap<String, Integer> parseHLSMetadata(InputStream i){ 

     try { 
      BufferedReader r = new BufferedReader(new InputStreamReader(i, "UTF-8")); 
      String line; 
      HashMap<String, Integer> segmentsMap = null; 
      String digitRegex = "\\d+"; 
      Pattern p = Pattern.compile(digitRegex); 

      while((line = r.readLine())!=null){ 
       if(line.equals("#EXTM3U")){ //start of m3u8 
        segmentsMap = new HashMap<String, Integer>(); 
       }else if(line.contains("#EXTINF")){ //once found EXTINFO use runner to get the next line which contains the media file, parse duration of the segment 
        Matcher matcher = p.matcher(line); 
        matcher.find(); //find the first matching digit, which represents the duration of the segment, dont call .find() again that will throw digit which may be contained in the description. 
        segmentsMap.put(r.readLine(), Integer.parseInt(matcher.group(0))); 
       } 
      } 
      r.close(); 
      return segmentsMap; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 
    } 

乾杯。