我想构建某种流包装器:
我拥有一台带网络功能的旧 Dreambox PAL Sat 接收器。我想将该流转码为较低的结果并重新流式传输。
我的目标是建立一个简单的网站,通过 rtmp 嵌入该流。
我认为 crtmpserver 应该是正确的软件。现在我有一个正在运行的网站,可以通过 jwplayer/crtmpserver 播放本地文件。
我正在寻找解决方案:
httpUrl -> ffmpeg -> crtmpserver
这可能吗?我可以将 ffmpeg 的输出重定向到归档管道,并且 crtmpserver 可以抓取它吗?还是使用 UDP?
任何提示表示赞赏!谢谢!!
最佳答案
这很简单:
启动服务器(在控制台模式下进行调试) 您应该看到类似这样的内容:
|tcp| 0.0.0.0| 9999|入站TCPTs| flv播放|
基本上,这是 mpegts 流的 tcp 接受器
使用 ffmpeg 创建流:
ffmpeg -i <源> <源相关参数> <音频编解码参数> <视频编解码参数> -f mpegts "tcp://127.0.0.1:9999"
示例:
ffmpeg -i /tmp/aaa.flv -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts "tcp://127.0.0.1:9999"
返回服务器并观察控制台。您应该看到类似这样的内容:
从协议(protocol) ITS(13) 注册到应用程序
flvplayback
的名称为ts_13_257_256
的流 INTS(6)
ts_13_257_256 是流名称。现在您可以使用 jwplayer 或类似的播放器并将其指向该流
如果你想使用UDP,你需要停止服务器并更改配置文件,而不是
protocol="inboundTcpTs"
你应该有
protocol="inboundUdpTs"
您甚至可以复制整个部分并更改端口号以同时拥有两者。 另外,您必须更改 ffmpeg,这样您就可以使用 udp://127.0.0.1:9999 而不是 tcp://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/ 在
下查找 Google 群组干杯, 安德烈
关于linux - 使用 crtmpserver 重新传输 MPEG2 TS PAL 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628060/