使用wowza和xuggler将RTMP转换为RTSP
大家好!
在过去的三个月中,我们一直在进行电话会议项目。 我们认为,使用诸如Flex之类的技术的基于Web的应用程序将是此类要求苛刻的项目的最佳方法。 随着软件的复杂性和电信提供商的需求增加,我们面临的挑战值得注意。 一个挑战是要求从使用我们的软件的代理向其RTSP服务器提供实时视频。 我们面临的问题是, Flex在视频和音频传输中使用了RTMP协议,我们需要快速进行一些重新流处理而又无需重新发明轮子的事情。
在本文中,我们将尝试提供足够的信息来解决一个复杂的问题,即实时流的RTMP到RTSP的重新流传输。 我们的解决方案基于同时支持RTMP和RTSP的 wowza流服务器以及xuggler ,后者在Java应用程序中带来了FFMPEG的强大功能。
Wowza支持将H.264实时流从RTMP转换为RTSP ,但不支持H.263 。 默认情况下,从ActionScript Camera对象捕获的视频是H.263编码的。 我们将提供基于xuggler的代码,该代码可实时将H.263转换为H.264 ,并将H.264流发布到Wowza 。
首先,我们需要设置xuggler 。 我们需要最新版本的FFMPEG和H.264,因此有必要从svn存储库中检出xuggler 。
svn checkout http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler xuggle-xuggler
然后我们必须设置一些环境参数。
的Linux
export XUGGLE_HOME=/usr/local/xuggler
export PATH=$XUGGLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$XUGGLE_HOME/lib:$LD_LIBRARY_PATH
苹果电脑
export XUGGLE_HOME=/usr/local/xuggler
export PATH=$XUGGLE_HOME/bin:$PATH
export DYLD_LIBRARY_PATH=$XUGGLE_HOME/lib:$DYLD_LIBRARY_PATH
视窗
- 将XUGGLE_HOME设置为您选择的目录(确保该目录在磁盘上)。 生成时,必须确保XUGGLE_HOME在C:驱动器上,并且在路径中没有空格。 抱歉。 如果使用安装程序,则此限制不适用。
- 添加%XUGGLE_HOME%\ bin ; 到PATH环境变量的开头。
- (可选)将%XUGGLE_REPO%设置到您希望蚂蚁安装已发布的常春藤jar的目录(如果未设置,则默认在构建目录中为dist / ivy)。
然后,我们必须构建并安装xuggler 。
ant run-tests
sudo ant install
现在你已经xuggler安装在$ XUGGLE_HOME
完成安装后,我们必须编写完成此技巧的代码。
package com.javacodegeeks.xuggler;import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;import com.xuggle.xuggler.Converter;public class Transcoder {/*** @param args*/public static void main(String[] args) {String inputStream = "rtmp://wowzahost/live/streamLive3H.263";String outputStream = "rtmp://wowzahost/live/streamLive3H.264";String[] parameters = new String[] { "--acodec", "libfaac", "--vcodec","libx264", "--vpreset","/usr/local/xuggler/share/ffmpeg/libx264-ultrafast.ffpreset",inputStream, outputStream };Converter converter = new Converter();Options options = converter.defineOptions();CommandLine cmdLine;try {cmdLine = converter.parseOptions(options, parameters);converter.run(cmdLine);System.out.println("Finish!!!");} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
注意事项。
- 在$ XUGGLE_HOME / share / ffmpeg目录中,您会找到所有x264可用的预设。更好的质量意味着更多的延迟。 您将必须选择适合您的需求。
- 您将不必更改acodec和vcodec
- FFMPEG的最新版本可以读取和写入RTMP流。
示例项目在此处可用。
感谢您的时间。 希望您会发现本文有趣。
最好的祝福
。/拍
翻译自: https://www.javacodegeeks.com/2010/05/rtmp-to-rtsp-re-stream-using-wowza-and.html
使用wowza和xuggler将RTMP转换为RTSP相关推荐
- wowza rtsp_使用wowza和xuggler将RTMP转为RTSP
wowza rtsp 注意:这是我们的" Xuggler开发教程 "系列的一部分. 大家好! 在过去的三个月中,我们一直在进行电话会议项目. 我们认为,使用诸如Flex之类的技术的 ...
- 公网可用的RTMP、RTSP测试地址(更新于2021年3月)
好多博客提到的公网可测试的RTSP和RTMP URL大多都不用了,以下是大牛直播SDK(Github)于2021年3月亲测可用的几个URL,有其他可用的URL,也欢迎大家在评论区回复. RTMP流地址 ...
- Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨
背景 随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求.目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务 ...
- 如何在Unity3d平台下低延迟播放RTMP或RTSP流
随着VR类.工业仿真.智慧城市等场景的快速发展,开发者对Unity3d低延迟的直播需求量越来越大,前两年,大牛直播SDK发布了Windows平台.Android平台和iOS平台的Unity3d RTM ...
- 利用RTMP或RTSP实现跨平台一对一互动功能
目前市面上大多一对一互动都是基于WebRTC,缺点如下: 服务器部署非常复杂,不利于私有部署,在一些私密性高的场景下,无法使用,如公安.市政等体系: 传输基于UDP,很难保证传输质量,由于UDP是不可 ...
- RTMP、RTSP、m3u8、flv 区别及含义
RTMP 与 RTSP 是比较常见的两种流媒体协议. 流媒体协议是一种用于通过 Web 传递多媒体的协议. 每次观看直播或点播视频时,背后的技术就是流媒体协议. RTMP 英文全称:Real Time ...
- 常用的RTMP、RTSP、HTTP协议流直播流地址
一.RTMP.RTSP.HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议.理论上这三种都可以用来做视频直播或点播.但通常来说,直播一般用 RTMP.RTSP.而点播用 H ...
- RTMP、RTSP、HTTP协议流常用直播流地址
引用 一.RTMP.RTSP.HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议.理论上这三种都可以用来做视频直播或点播.但通常来说,直播一般用 RTMP.RTSP.而点播 ...
- Unity下如何实现RTMP或RTSP流播放和录制
技术背景 在探讨Unity平台RTMP或RTSP直播流数据播放和录制之前,我们先简单回顾下RTSP或RTMP直播流数据在Unity平台的播放流程: 通过Native RTSP或RTSP直播播放SDK回 ...
最新文章
- 2018 CVPR GAN 相关论文调研 (自己分了下类,附地址哦)
- git 拉取远端仓库_Git : 建立自己的本地仓库,并拉取远程代码
- 【企业管理】正确评价价值-概述
- 上验证cudnn是否安装成功_windows和linux上的tensorflow安装(极简安装方法)
- 使用泛型创建只读集合
- Ocelot简易教程(二)之快速开始2
- 中国历史上影响最大的10首诗
- 数据增强在贝壳找房文本分类中的应用
- docker安装禅道
- 怎么查看文件的MD5码
- NTC与PTC压敏电阻在电源电路中起的作用
- mysql无法加载主类_错误: 找不到或无法加载主类 JDBC
- OFFPIPE 海底管道铺设计算分析软件
- Process finished with exit code -1073740791 (0xC0000409) 一种解决方案
- 孙鑫VC++学习笔记(转载至程序员之家--虎非龙)[11--15]
- 印章与印鉴的区别_篆刻与印章到底有什么区别?
- 宋鸿兵在《货币战争5》中谈到的美国医疗
- mp4转换m3u8格式php,【过程】第一次将m3u8文件转换为MP4文件经验分享
- Alibaba独家首发“Java成长笔记”,差距不止一点点
- 【密码学】云的MD5破解
热门文章
- sql server数据库:创建数据库、建立数据库用户、为用户赋予权限
- java内核_测量时间:从Java到内核再到
- oracle jdk_两个Oracle JDK的故事
- 工业互联网二级节点建设_建设者还是二传手?
- sidecar_Spring Cloud Sidecar –节点初始化
- couchbase_具有Rx-Java的Couchbase Java SDK
- 使用Spring Cloud Gateway保护反应式微服务
- Java单依赖性Dockerized HTTP端点
- 摆脱pom XML…几乎
- Java 10:“ var”关键字