如何在服务器上将mpeg转换为flv?

时间:2009-04-15 16:58:44

标签: red5

需要在我的Red5服务器上将视频转换为flv。在这方面的任何帮助都会非常有帮助。

4 个答案:

答案 0 :(得分:1)

我在我的Ubuntu盒子上使用ffmpeg效果很好。

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

答案 1 :(得分:1)

要创建静态文件,请使用ffmpeg(在Ubuntu上也称为avconv):

ffmpeg -i /pathto/inputfile.xxx /pathto/outputfile.flv 
其中'xxx'是输入文件的扩展名,例如.avi,.mp4等。

要使用RED5从输入流(例如来自捕获设备)创建实时输出流以进行实时广播,请在管道中使用ffmpeg,如下所示:

 inputstream > - | ffmpeg -f xxx -i - -f flv rtmp://your.red5.server:1935/live/mybroadcast

对于输入流的视频格式,xxx是您最佳猜测。根据格式,例如'rawvideo' - 您可能需要一些额外的转换选项和/或单独处理音频流(第二个-i选项)。

要接收您的RED5广播,请将浏览器的Flash播放器连接到与ffmpeg输出相同的路径,这与RED5流的输入相同,RED5流的输入也与RED5流的输出相同(是的, rtmp非常有效):

rtmp://your.red5.server:1935/live/mybroadcast

答案 2 :(得分:0)

Dan Fernandez在Coding4Fun上创建了一个项目,该项目使用FFMPEG将flv转换为mpeg,反之亦然。

这是他创建的名为InnerTube

的项目

以下是详细说明FFMPEG命令行参数的网站的链接。

答案 3 :(得分:0)

我建议使用Xuggler(http://www.xuggle.com)来完成这项工作,这是一个可以添加到Red5应用程序的示例方法:


    public void convert(String sourceFilePath, String destinationFilePath) {
        //assumes the following: sourceFilePath is input file and destinationFilePath is output file
        IMediaReader reader = ToolFactory.makeReader(sourceFilePath);
        IMediaWriter writer = ToolFactory.makeWriter(destinationFilePath, reader);
        writer.open();
        writer.setForceInterleave(true);
        IContainerFormat outFormat = IContainerFormat.make();
        outFormat.setOutputFormat("flv", destinationFilePath, null);
        IContainer container = writer.getContainer();
        container.open(args[1], IContainer.Type.WRITE, outFormat);
        writer.addVideoStream(0, 0, ICodec.findEncodingCodecByName("flv"), 320, 240);
        writer.addAudioStream(1, 0, ICodec.findEncodingCodecByName("libmp3lame"), 2, 44100);
        reader.addListener(writer);
        while (reader.readPacket() == null);
    }

您提到“mpeg”,但此代码块将转换FFMpeg和Xuggler支持的任何媒体类型。