我对RTMP流媒体很新,我正在寻求帮助.足以让我开始.
我现在谷歌搜索大约5-7个小时仍然无法确定我的答案!
Red5的文档是有限的,根本找不到任何支持!甚至类似的问题都没有在stackoverflow上回答:(
我的问题是:
更糟糕的是,我几乎没有Java经验.
请帮助ST.
有没有办法使用Red5将视频从iPhone或Android流式传输到RTMP服务器?我通过互联网搜索,只有2个应用程序,成功地做到这一点(UStream,Qik)他们关闭源代码的问题所以,如果有人可以帮我找到一些代码片段,使这成为可能?
我在网上发现了一些关于使用Wireshark 跟踪RTMP (实时消息传递协议)的示例,但它对我不起作用.所有RTMPT数据包都呈现为基本TCP数据包,如下所示:
149 14.324999 85.115.xxx.xxx 192.168.1.20 TCP macromedia-fcs > 54557 [ACK] Seq=1 Ack=1452 Win=69 Len=0
Run Code Online (Sandbox Code Playgroud)
我正在使用Wireshark 1.2.8与Windows Vista上安装的所有协议.
我该怎么办才能解决这个问题?
谢谢!
我正在使用Java编写一个red5应用程序,我正在使用c3p0进行数据库交互.
似乎在我的MySQL服务器中连接超时后,我的应用程序停止使用建议配置autoreconnect = true.
我怎么能这样做?
这是我用来创建数据源的函数:
private ComboPooledDataSource _createDataSource() {
Properties props = new Properties();
// Looks for the file 'database.properties' in {TOMCAT_HOME}\webapps\{RED5_HOME}\WEB-INF\
try {
FileInputStream in = new FileInputStream(System.getProperty("red5.config_root") + "/database.properties");
props.load(in);
in.close();
} catch (IOException ex) {
log.error("message: {}", ex.getMessage());
log.error("stack trace: " + ExceptionUtils.getFullStackTrace(ex));
return null;
}
// It will load the driver String from properties
String drivers = props.getProperty("jdbc.drivers");
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
ComboPooledDataSource cpds = new ComboPooledDataSource(); …Run Code Online (Sandbox Code Playgroud) 它可以"流式传输"MediaRecorder的结果吗?
我能看到的唯一方法是接收FileDescriptor的mediaRecorder.setOutputFile.所以我可以将结果写入文件或通过套接字发送到接收器.
我尝试了第二个解决方案,但结果视频已损坏,因为在流中不是"可搜索的".
想法是使用android设备的相机将结果发布到Red5.
这是我的问题,我已经使用Red5实现了一个服务器端应用程序,它发送H.264编码的直播流,在客户端,流被接收为byte []
为了在Android客户端端解码它我已经跟随Javacv- FFmpeg库.解码代码如下
public Frame decodeVideo(byte[] data,long timestamp){
frame.image = null;
frame.samples = null;
avcodec.av_init_packet(pkt);
BytePointer video_data = new BytePointer(data);
avcodec.AVCodec codec = avcodec.avcodec_find_decoder(codec_id);
video_c = null;
video_c = avcodec.avcodec_alloc_context3(codec);
video_c.width(320);
video_c.height(240);
video_c.pix_fmt(0);
video_c.flags2(video_c.flags2()|avcodec.CODEC_FLAG2_CHUNKS);
avcodec.avcodec_open2(video_c, codec, null))
picture = avcodec.avcodec_alloc_frame()
pkt.data(video_data);
pkt.size(data.length);
int len = avcodec.avcodec_decode_video2(video_c, picture, got_frame, pkt);
if ((len >= 0) && ( got_frame[0] != 0)) {
....
process the decoded frame into **IPLImage of Javacv** and render it with **Imageview** of Android …Run Code Online (Sandbox Code Playgroud) 我正在尝试为Red5找到1,只有1个工作示例项目,它已更新为最新的0.9版本而不会丢失jar和其他废话.
现在,它在v0.9,libs与其他版本不同.他们的网站上有5个可怜的例子,但都是用旧版本构建的.对于这5个旧示例,我可以使用Add External JARS功能尝试添加以前版本的库,他们没有提到它们构建的版本,我不会尝试每个以前的版本来查看哪些工作(我已经做了,没有任何作用).他们似乎没有在更新或营销他们的开源项目上付出任何努力.
谁更聪明,可以为这些傻瓜揭开一些光芒?
我正在为网络编写一个很大的Red5 Java应用程序.Red5是基于Java的Flash Media Server替代方案,使用spring框架编写.
我想在线申请我的应用程序的许多版本,每个版本都有不同的行为,不同的类启用或禁用.
我正在寻找一种方法将我的代码转换为基于模块的代码,这将允许我从主应用程序中删除/添加模块/功能.
我知道OSGI http://www.springsource.org/osgi,但它说它需要一个SpringSource dm服务器,我不知道它将如何在red5中一起工作,而且完全理解它似乎非常复杂.
我一般都不太了解spring框架,我使用它与db相关,就是这样.red5更广泛地使用它.
所以任何人都可以从这些信息中获得任何意义吗?有什么可以把我的代码分成模块吗?
任何有关该问题的信息将不胜感激.
我想要做的是将一个.flv媒体文件发布到RTMP服务器,让订阅者观看它.我正在测试以查看几个订阅者(和oflaDemo)中的流ffplay.
问题是ffmpeg在近20秒内将5分钟的.flv文件发布到服务器,在这20秒内,流出现在订阅上,但之后它会切断.我使用的命令是:
ffmpeg -i file.flv -re -acodec copy -vcodec copy -f flv "rtmp://localhost/oflaDemo/aaa live=1"
Run Code Online (Sandbox Code Playgroud)
我如何强制ffmpeg在5分钟内传输5分钟文件,或任何其他解决方案.
谢谢.
我使用的是red5服务器1.0.6
我的一些录制文件已损坏,我在一些文章中读到,如果在流的大小之前关闭bufferLength流0,则录制的文件将被破坏.这是我保存和关闭流的代码.
@Override public void streamPublishStart(IBroadcastStream stream) {
try {
/* My script to save started stream details in database */
stream.saveAs("audio/"+username, true);
}
catch (Exception e) {
e.printStackTrace();
}
}
@Override public void streamBroadcastClose(IBroadcastStream stream) {
/* My script to save closed stream details in database */
stream.close();
}
Run Code Online (Sandbox Code Playgroud)
stream.close()记录被破坏的原因是什么?如果我不关闭流会怎么样?