|
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()
{
|