Java向Red5媒体服务器发送实时视频输入流

Java向Red5媒体服务器发送实时视频输入流,java,inputstream,h.264,red5,rtmp,Java,Inputstream,H.264,Red5,Rtmp,我有一个来自Java套接字的InputStream。 InputStream是一个H.264视频直播流。我想将此视频InputStream发送到red5媒体服务器,以便其他客户端可以观看 我找到了这个例子 package com.ryong21.example.publisher;导入java.io.File; 导入java.io.IOException; 导入java.util.Date; 导入org.red5.server.messaging.IMessage; 导入org.red5.ser

我有一个来自Java套接字的
InputStream
InputStream
是一个H.264视频直播流。我想将此视频
InputStream
发送到red5媒体服务器,以便其他客户端可以观看

我找到了这个例子

package com.ryong21.example.publisher;导入java.io.File;
导入java.io.IOException;
导入java.util.Date;
导入org.red5.server.messaging.IMessage;
导入org.red5.server.stream.message.RTMPMessage;
导入org.red5.server.stream.provider.FileProvider;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
公共类出版商{
公共静态void main(字符串[]args)引发IOException、InterruptedException{
Logger log=LoggerFactory.getLogger(Publisher.class);
字符串publishName=“测试”;
字符串localFile=“2.mp3”;
String host=“rtmpxn.91kge.com”;
国际港口=1935年;
字符串app=“live”;
IMessage msg=null;
int时间戳=0;
int lastTS=0;
PublishClient=新PublishClient();
client.setHost(主机);
client.setPort(端口);
client.setApp(app);
client.start(publishName,“live”,null);
while(client.getState()!=PublishClient.PUBLISHED){
睡眠(500);
}
FileProvider fp=新的FileProvider(新文件(本地文件));
日期开始=新日期();
log.debug(begin.toString());
while(true){
msg=fp.pullMessage(空);
如果(msg==null){
调试(“完成!”);
打破
}
时间戳=((RTMPMessage)msg.getBody().getTimestamp();
sleep(时间戳-lastTS);
lastTS=时间戳;
client.pushMessage(msg);
}      
日期结束=新日期();
log.debug(end.toString());
client.stop();
}
}`


我的问题是如何将其用于Sockets InputStream,而不是FileProvider中使用的文件。InputStream已采用H.264编码

好的,在深入研究视频流之后,我发现我首先必须将InputStream转换为容器格式的文件。可能的容器格式为.mp4或.flv


创建了容器文件后,我现在可以将其发布到red5媒体服务器。

好的,在深入研究视频流之后,我发现我首先必须将InputStream转换为容器格式的文件。可能的容器格式为.mp4或.flv

创建容器文件后,我现在可以将其发布到red5媒体服务器