Red5 フリーソフトのFlashストリーミングサーバ ~開発クライアントの構築 その5~
(3)DemoService.javaの編集
「DemoService.java」は、red5アプリケーションの「oflaDemo2」(元は、サンプル「oflaDemo」)
で動画配信などをする際に、中心となるアプリケーションファイルとなります。
変更する箇所は、15行目・28行目となります。
- 変更前
package org.red5.demos.oflaDemo; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; import org.red5.logging.Red5LoggerFactory; import org.red5.server.api.IScope; import org.red5.server.api.Red5; import org.slf4j.Logger; import org.springframework.core.io.Resource; public class DemoService { private static Logger log = Red5LoggerFactory.getLogger(DemoService.class, "oflaDemo"); { log.info("oflaDemo DemoService created"); } private String formatDate(Date date) { SimpleDateFormat formatter; String pattern = "dd/MM/yy H:mm:ss"; Locale locale = new Locale("en", "US"); formatter = new SimpleDateFormat(pattern, locale); return formatter.format(date); } /** * Getter for property 'listOfAvailableFLVs'. * * @return Value for property 'listOfAvailableFLVs'. */ public Map<String, Map<String, Object>> getListOfAvailableFLVs() { IScope scope = Red5.getConnectionLocal().getScope(); Map<String, Map<String, Object>> filesMap = new HashMap<String, Map<String, Object>>(); try { log.debug("getting the FLV files"); addToMap(filesMap, scope.getResources("streams/*.flv")); addToMap(filesMap, scope.getResources("streams/*.f4v")); addToMap(filesMap, scope.getResources("streams/*.mp3")); addToMap(filesMap, scope.getResources("streams/*.mp4")); addToMap(filesMap, scope.getResources("streams/*.m4a")); addToMap(filesMap, scope.getResources("streams/*.3g2")); addToMap(filesMap, scope.getResources("streams/*.3gp")); } catch (IOException e) { log.error("", e); } return filesMap; } private void addToMap(Map<String, Map<String, Object>> filesMap, Resource[] files) throws IOException { if (files != null) { for (Resource flv : files) { File file = flv.getFile(); Date lastModifiedDate = new Date(file.lastModified()); String lastModified = formatDate(lastModifiedDate); String flvName = flv.getFile().getName(); String flvBytes = Long.toString(file.length()); if (log.isDebugEnabled()) { log.debug("flvName: {}", flvName); log.debug("lastModified date: {}", lastModified); log.debug("flvBytes: {}", flvBytes); log.debug("-------"); } Map<String, Object> fileInfo = new HashMap<String, Object>(); fileInfo.put("name", flvName); fileInfo.put("lastModified", lastModified); fileInfo.put("size", flvBytes); filesMap.put(flvName, fileInfo); } } } }
- 変更後
package org.red5.demos.oflaDemo2; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat;
次に、「DemoServiceImpl.java」について見ていきます。
(4)DemoServiceImpl.javaの編集
「DemoServiceImpl.java」は、ログ出力用のクラスとなります。
変更する箇所は、1行目となります。
- 変更前
package org.red5.demos.oflaDemo; import java.util.HashMap; import java.util.Map; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; public class DemoServiceImpl implements IDemoService { private static Logger log = Red5LoggerFactory.getLogger(DemoServiceImpl.class, "oflaDemo"); /** * Getter for property 'listOfAvailableFLVs'. * * @return Value for property 'listOfAvailableFLVs'. */ public Map<String, Map<String, Object>> getListOfAvailableFLVs() { log.debug("getListOfAvailableFLVs empty"); return new HashMap<String, Map<String, Object>>(1); } public Map<String, Map<String, Object>> getListOfAvailableFLVs(String string) { log.debug("getListOfAvailableFLVs, Got a string: {}", string); return getListOfAvailableFLVs(); } }
- 変更後
package org.red5.demos.oflaDemo2; import java.util.HashMap; import java.util.Map;
次に、「IDemoService.java」について見ていきます。