From: jreichen <jre...@us...> - 2011-04-09 00:26:11
|
Update of /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/playlist In directory vz-cvs-3.sog:/tmp/cvs-serv11567/src/sagex/streaming/httpls/playlist Modified Files: VariantPlaylist.java Log Message: - Refactor HTTP Live Streaming Playlist Code - Put absolute URLs in HTTP Live Streaming Playlists Index: VariantPlaylist.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/playlist/VariantPlaylist.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** VariantPlaylist.java 15 Jan 2011 21:09:47 -0000 1.1 --- VariantPlaylist.java 9 Apr 2011 00:26:09 -0000 1.2 *************** *** 3,6 **** --- 3,8 ---- import java.util.UUID; + import javax.servlet.http.HttpServletRequest; + import org.mortbay.log.Log; *************** *** 8,44 **** { public static String[] VARIANT_PLAYLIST_BITRATES = {"150", "1240", "840", "640", "440", "240"}; private int mediaFileId; private String playlist; ! public VariantPlaylist(int mediaFileId) { this.mediaFileId = mediaFileId; this.playlist = createPlaylist(); } private String createPlaylist() { StringBuilder sb = new StringBuilder(); - String url = null; String conversionId = UUID.randomUUID().toString(); // Header ! sb.append("#EXTM3U\r\n"); Log.debug("#EXTM3U"); // Body for (String bitrate : VARIANT_PLAYLIST_BITRATES) { ! sb.append("#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=" + bitrate + "000\r\n"); ! Log.debug("#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=" + bitrate + "000"); ! ! url = "/stream/HTTPLiveStreamingPlaylist?" + ! "MediaFileId=" + mediaFileId + ! "&ConversionId=" + conversionId + ! "&Quality=" + bitrate; ! sb.append(url + "\r\n"); ! Log.debug(url); } --- 10,70 ---- { public static String[] VARIANT_PLAYLIST_BITRATES = {"150", "1240", "840", "640", "440", "240"}; + private static final String LINE_TERM = "\r\n"; + private HttpServletRequest req; private int mediaFileId; + private String defaultBitrate; private String playlist; ! public VariantPlaylist(HttpServletRequest req, int mediaFileId, String defaultBitrate) { + if ((defaultBitrate != null) && + (defaultBitrate.trim().length() > 0) && + !isValidBitrate(defaultBitrate)) + { + throw new IllegalArgumentException("Bitrate"); + } + + this.req = req; this.mediaFileId = mediaFileId; + this.defaultBitrate = defaultBitrate; this.playlist = createPlaylist(); } + private boolean isValidBitrate(String defaultBitrate) + { + for (String bitrate : VARIANT_PLAYLIST_BITRATES) + { + if (bitrate.equals(defaultBitrate)) + { + return true; + } + } + return false; + } + private String createPlaylist() { StringBuilder sb = new StringBuilder(); String conversionId = UUID.randomUUID().toString(); // Header ! sb.append("#EXTM3U" + LINE_TERM); Log.debug("#EXTM3U"); // Body + if ((defaultBitrate != null) && + (defaultBitrate.trim().length() > 0)) + { + sb.append(createPlaylistEntry(conversionId, defaultBitrate)); + } + for (String bitrate : VARIANT_PLAYLIST_BITRATES) { ! if (!bitrate.equals(defaultBitrate)) ! { ! sb.append(createPlaylistEntry(conversionId, bitrate)); ! } } *************** *** 46,49 **** --- 72,92 ---- } + private String createPlaylistEntry(String conversionId, String bitrate) + { + String header = "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=" + bitrate + "000"; + Log.debug(header); + + String url = req.getRequestURL().toString().replace(req.getRequestURI(), "") + + req.getContextPath() + + "/HTTPLiveStreamingPlaylist" + + // req.getPathInfo() + + "?MediaFileId=" + mediaFileId + + "&ConversionId=" + conversionId + + "&Quality=" + bitrate; + Log.debug(url); + + return header + LINE_TERM + url + LINE_TERM; + } + public String toString() { |