使用crtmpserver重新流式传输MPEG2 TS PAL流

时间:2011-10-02 17:38:56

标签: linux ffmpeg video-streaming

我想构建某种流包装器:​​

我拥有一台旧的Dreambox PAL Sat Reciever with Networking。这个流我想转码到一个较低的结果一个restream它。

我的目标是拥有一个简单的网站,通过rtmp嵌入此流。

我认为crtmpserver应该是合适的软件。现在我有一个站点在运行,可以通过jwplayer / crtmpserver播放本地文件。

我正在寻找解决方案:

httpUrl - > ffmpeg - > crtmpserver

这可能吗?我可以将ffmpeg的输出重定向到一个已归档的管道,而crtmpserver可以抓住它吗?或者使用UDP?

任何提示都赞赏!!!谢谢!!

1 个答案:

答案 0 :(得分:4)

这很简单:

  1. 启动服务器(在控制台模式下进行调试) 你应该看到这样的东西:

    | TCP | 0.0.0.0 | 9999 | inboundTcpTs |的FLVPlayback |

  2. 基本上,这是mpegts流的tcp接受器

    1. 使用ffmpeg创建流:

      ffmpeg -i<来源> < source_related_pa​​rameters> < audio_codec_parameters> < video_codec_parameters> -f mpegts“tcp://127.0.0.1:9999”

    2. 示例:

      ffmpeg -i /tmp/aaa.flv -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts "tcp://127.0.0.1:9999"
      
      1. 返回服务器并观看控制台。你应该看到这样的东西:

        从协议ITS(13)注册到应用程序ts_13_257_256的名为flvplayback的流INTS(6)

      2. ts_13_257_256是流名称。现在你可以使用jwplayer或类似的播放器并将其指向该流

        如果要使用UDP,则需要停止服务器并更改配置文件,而不是使用

        protocol="inboundTcpTs"
        
        你应该

        protocol="inboundUdpTs"
        

        你甚至可以复制整个部分并更改端口号以同时拥有两者。 此外,您必须更改ffmpeg,而不是使用tcp://127.0.0.1:9999,您可以使用udp://127.0.0.1:9999

        现在,如果您还想要一个流名称而不是ts_13_257_256(顺便说一下ts_protocolId_AudioPID_VideoPID),您可以以类似的方式使用LiveFLV:

        ffmpeg -i /tmp/aaa.flv -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv -metadata streamName=myStreamName "tcp://127.0.0.1:6666"
        

        服务器应显示:

        Stream INLFLV(1) with name `myStreamName` registered to application `flvplayback` from protocol ILFL(3)
        

        你去,现在你有一个“计算”的流名称是myStreamName

        最后一次观察。请在crtmpserver的邮件列表中询问此类问题。你会听到更好的声音。 你可以在这里找到资源: http://www.rtmpd.com/resources/

        下寻找谷歌小组

        干杯, 安德烈