2012-11-02 46 views
0

我已經安裝了Red5服務器。我創建了一個與oflaDemo相同的自定義應用程序。我可以在我的應用程序的/ streams文件夾中播放視頻,我的應用程序名稱是demo.I要將我的應用程序訪問視頻的目錄RED5_HOME/demo/webapps/streams更改爲共享機器中的文件夾。我可以切換到本地機器的目錄,例如「c:\ streams」。我使用CustomFileNameGenerator實現了IStreamFilenameGenerator,實現了這一點。但我無法訪問共享文件夾。這裏是我CustomFileNameGenerator類在Red5中自定義流播放路徑以從共享機器訪問文件

import java.io.File; 

    import org.apache.log4j.Logger; 
    import org.red5.server.api.scope.IScope; 
    import org.red5.server.api.stream.IStreamFilenameGenerator; 


    public class CustomFilenameGenerator implements IStreamFilenameGenerator { 

    Logger log = Logger.getLogger(CustomFilenameGenerator.class); 

    /** Path that will store recorded videos. */ 
    /public String recordPath = "recordedStreams/";/ 
    /** Path that contains VOD streams. */ 
    public String playbackPath; 



    /** Set if the path is absolute or relative */ 
    public Boolean resolvesAbsolutePath; 


    public String generateFilename(IScope scope, String name, GenerationType type) { 
    // Generate filename without an extension. 
    return generateFilename(scope, name, null, type); 

    } 
    public String generateFilename(IScope scope, String name, String extension,    GenerationType type) { 
    String filename = null; 
    if (type == GenerationType.PLAYBACK) 
    { 
    filename = playbackPath + name; 
    } 
    log.info("file Name " + filename); 
    if (extension != null) 
    // Add extension 
    filename += extension; 
    log.info("Extension and file name " + filename); 


    return filename; 
    } 
    public boolean resolvesToAbsolutePath() 
    { 

    log.info("resolvesAbsolutePath" + resolvesAbsolutePath); 
    return resolvesAbsolutePath; 
    } 
    public void setPlaybackPath(String playbackPath) { 
    this.playbackPath = playbackPath; 
    } 
    public void setResolvesAbsolutePath(Boolean resolvesAbsolutePath) { 
    this.resolvesAbsolutePath = resolvesAbsolutePath; 
    } 



    } 

以下是我的red5-web.properties文件屬性:

webapp.contextPath=/demo 
    webapp.virtualHosts=*, 192.168.1.20, 192.168.1.20:8088, 127.0.0.1:8088,  192.168.1.20:1935 

    playbackPath=C://streams/ 
    resolvesAbsolutePath=true 

以下是我的RED5-web.xml文件中的bean定義

<bean id="streamFilenameGenerator" class="com.abhinow.demo.CustomFilenameGenerator" > 

    <property name="playbackPath" value="${playbackPath}" /> 
    <property name="resolvesAbsolutePath" value="${resolvesAbsolutePath}" /> 
    </bean> 

上面給出的代碼工作正常,我可以在C:\ streams文件夾中播放視頻,但是當我將播放路徑更改爲共享文件夾,如 /192.1 68.1.20 /小流 它不工作。我正在使用Windows計算機。我還試圖通過在Windows中使用映射網絡驅動器功能將共享文件夾/192.168.1.20/streams映射到網絡驅動器,並將該驅動器的名稱命名爲Z :.然後我試圖通過給路徑 Z:// streams 現在它也不起作用。 任何人請幫助我哪裏錯了。我一直在掙扎兩天。請幫我解決這個問題。

非常感謝。

回答

0

你調試,如果

generateFilename 

在您的應用程序正在不斷叫什麼名字? 第一件事可能是在代碼中添加一些log.debug語句並查看red5.log(或std.out)。

塞巴斯蒂安

0

嘗試:

公共字符串generateFilename(的iScope範圍,字符串名稱,字符串擴展,GenerationType型){ ...

回報playbackPath +文件名;

}

+0

唯一代碼的答案是不是所有的有用的;考慮爲你的答案起作用添加一個簡短的解釋。 – adamdunson