[Patch] HD stream selection in HTTP Live Streaming (HLS)
In org.serviio.library.metadata.FFmpegMetadataRetriever
- Code:
private static Map<String, Object> getParametersMap(List<String> ffmpegMediaDescription)
throws InvalidMediaFormatException
{
. . .
List<EmbeddedSubtitles> subtitlesList = new ArrayList();
String[] array = ffmpegMediaDescription.toArray(new String[ffmpegMediaDescription.size()]);
int i = 0;
while (i < array.length)
{
String line = array[i].trim();
int inputPos = line.indexOf("Input #0");
. . .
parameters.put("bitrate", bitrate);
}
}
}
}
else if (line.startsWith("Program"))
{
int j = i + 1;
while (j < array.length)
{
if (array[j].trim().startsWith("Program"))
{
i = j - 1;
break;
}
j++;
}
}
else if ((line.startsWith("Stream")) && (line.indexOf("Video:") > -1) && (parameters.get("video_codec") == null))
. . .
subtitlesList.add(new EmbeddedSubtitles((Integer)streamInfo.getValueA(), sCodec, (String)streamInfo.getValueB(), defaultLanguage));
}
}
}
i++;
}
parameters.put("embedded_subtitles", subtitlesList);
return parameters;
. . .
(Example manifest)
- Code:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",FORCED=NO,AUTOSELECT=YES,URI="subtitlelist_leng_b110000.m3u8",LANGUAGE="eng"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=110000,RESOLUTION=320x180,SUBTITLES="subs"
chunklist_b110000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000,CODECS="mp4a.40.2",SUBTITLES="subs"
chunklist_b64000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=268000,RESOLUTION=320x180,SUBTITLES="subs"
chunklist_b268000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=668000,RESOLUTION=640x360,SUBTITLES="subs"
chunklist_b668000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=880x480,SUBTITLES="subs"
chunklist_b1000000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1800000,RESOLUTION=1024x576,SUBTITLES="subs"
chunklist_b1800000.m3u8