当前位置: 首页 > 工具软件 > Xuggler > 使用案例 >

使用wowza和xuggler将RTMP转换为RTSP

汝开畅
2023-12-01
注意:这是我们的“ Xuggler开发教程 ”系列的一部分。

大家好!

    在过去的三个月中,我们一直在进行电话会议项目。 我们认为,使用诸如Flex之类的技术的基于Web的应用程序将是此类要求苛刻的项目的最佳方法。 随着软件的复杂性和电信提供商的需求增加,我们面临的挑战值得注意。 一个挑战是要求从使用我们的软件的代理向其RTSP服务器提供实时视频。 我们面临的问题是, Flex在视频和音频传输中使用了RTMP协议,我们需要快速进行一些重新流处理而又无需重新发明轮子的事情。

    在本文中,我们将尝试提供足够的信息来解决一个复杂的问题,即实时流的RTMPRTSP的重新流传输。 我们的解决方案基于同时支持RTMPRTSP的 wowza流服务器以及xuggler ,后者在Java应用程序中带来了FFMPEG的强大功能。

    Wowza支持将H.264实时流从RTMP转换RTSP ,但不支持H.263 。 默认情况下,从ActionScript Camera对象捕获的视频是H.263编码的。 我们将提供基于xuggler的代码,该代码可实时将H.263转换为H.264 ,并将H.264流发布到Wowza

    首先,我们需要设置xuggler 。 我们需要最新版本的FFMPEGH.264,因此有必要从svn存储库中检出xuggler

    svn checkout http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler xuggle-xuggler

    然后我们必须设置一些环境参数。

    的Linux

    export XUGGLE_HOME=/usr/local/xuggler
    export PATH=$XUGGLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$XUGGLE_HOME/lib:$LD_LIBRARY_PATH

    苹果电脑

    export XUGGLE_HOME=/usr/local/xuggler
    export PATH=$XUGGLE_HOME/bin:$PATH
    export DYLD_LIBRARY_PATH=$XUGGLE_HOME/lib:$DYLD_LIBRARY_PATH

    视窗

    • XUGGLE_HOME设置为您选择的目录(确保该目录在磁盘上)。 生成时,必须确保XUGGLE_HOME在C:驱动器上,并且在路径中没有空格。 抱歉。 如果使用安装程序,则此限制不适用。
    • 添加%XUGGLE_HOME%\ bin ; 到PATH环境变量的开头。
    • (可选)将%XUGGLE_REPO%设置到您希望蚂蚁安装已发布的常春藤jar的目录(如果未设置,则默认在构建目录中为dist / ivy)。

    然后,我们必须构建并安装xuggler

    ant run-tests
    sudo ant install

    现在你已经xuggler安装在$ XUGGLE_HOME

    完成安装后,我们必须编写完成此技巧的代码。

    package com.javacodegeeks.xuggler;
    
    import org.apache.commons.cli.CommandLine;
    import org.apache.commons.cli.Options;
    import org.apache.commons.cli.ParseException;
    
    import com.xuggle.xuggler.Converter;
    
    public class Transcoder {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
    
            String inputStream = "rtmp://wowzahost/live/streamLive3H.263";
            String outputStream = "rtmp://wowzahost/live/streamLive3H.264";
    
            String[] parameters = new String[] { "--acodec", "libfaac", "--vcodec",
                    "libx264", "--vpreset",
                    "/usr/local/xuggler/share/ffmpeg/libx264-ultrafast.ffpreset",
                    inputStream, outputStream };
    
            Converter converter = new Converter();
    
            Options options = converter.defineOptions();
    
            CommandLine cmdLine;
            try {
                cmdLine = converter.parseOptions(options, parameters);
                converter.run(cmdLine);
                System.out.println("Finish!!!");
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }

    注意事项。

    • $ XUGGLE_HOME / share / ffmpeg目录中,您会找到所有x264可用的预设。更好的质量意味着更多的延迟。 您将必须选择适合您的需求。
    • 您将不必更改acodec和vcodec
    • FFMPEG的最新版本可以读取和写入RTMP流。

    示例项目在此处可用。

    感谢您的时间。 希望您会发现本文有趣。

    最好的祝福
    。/拍


    翻译自: https://www.javacodegeeks.com/2010/05/rtmp-to-rtsp-re-stream-using-wowza-and.html

     类似资料: