注意:这是我们的“ Xuggler开发教程 ”系列的一部分。

大家好!

在过去的三个月中,我们一直在进行电话会议项目。 我们认为,使用诸如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相关推荐

  1. wowza rtsp_使用wowza和xuggler将RTMP转为RTSP

    wowza rtsp 注意:这是我们的" Xuggler开发教程 "系列的一部分. 大家好! 在过去的三个月中,我们一直在进行电话会议项目. 我们认为,使用诸如Flex之类的技术的 ...

  2. 公网可用的RTMP、RTSP测试地址(更新于2021年3月)

    好多博客提到的公网可测试的RTSP和RTMP URL大多都不用了,以下是大牛直播SDK(Github)于2021年3月亲测可用的几个URL,有其他可用的URL,也欢迎大家在评论区回复. RTMP流地址 ...

  3. Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨

    背景 随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求.目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务 ...

  4. 如何在Unity3d平台下低延迟播放RTMP或RTSP流

    随着VR类.工业仿真.智慧城市等场景的快速发展,开发者对Unity3d低延迟的直播需求量越来越大,前两年,大牛直播SDK发布了Windows平台.Android平台和iOS平台的Unity3d RTM ...

  5. 利用RTMP或RTSP实现跨平台一对一互动功能

    目前市面上大多一对一互动都是基于WebRTC,缺点如下: 服务器部署非常复杂,不利于私有部署,在一些私密性高的场景下,无法使用,如公安.市政等体系: 传输基于UDP,很难保证传输质量,由于UDP是不可 ...

  6. RTMP、RTSP、m3u8、flv 区别及含义

    RTMP 与 RTSP 是比较常见的两种流媒体协议. 流媒体协议是一种用于通过 Web 传递多媒体的协议. 每次观看直播或点播视频时,背后的技术就是流媒体协议. RTMP 英文全称:Real Time ...

  7. 常用的RTMP、RTSP、HTTP协议流直播流地址

    一.RTMP.RTSP.HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议.理论上这三种都可以用来做视频直播或点播.但通常来说,直播一般用 RTMP.RTSP.而点播用 H ...

  8. RTMP、RTSP、HTTP协议流常用直播流地址

    引用 一.RTMP.RTSP.HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议.理论上这三种都可以用来做视频直播或点播.但通常来说,直播一般用 RTMP.RTSP.而点播 ...

  9. Unity下如何实现RTMP或RTSP流播放和录制

    技术背景 在探讨Unity平台RTMP或RTSP直播流数据播放和录制之前,我们先简单回顾下RTSP或RTMP直播流数据在Unity平台的播放流程: 通过Native RTSP或RTSP直播播放SDK回 ...

最新文章

  1. 2018 CVPR GAN 相关论文调研 (自己分了下类,附地址哦)
  2. git 拉取远端仓库_Git : 建立自己的本地仓库,并拉取远程代码
  3. 【企业管理】正确评价价值-概述
  4. 上验证cudnn是否安装成功_windows和linux上的tensorflow安装(极简安装方法)
  5. 使用泛型创建只读集合
  6. Ocelot简易教程(二)之快速开始2
  7. 中国历史上影响最大的10首诗
  8. 数据增强在贝壳找房文本分类中的应用
  9. docker安装禅道
  10. 怎么查看文件的MD5码
  11. NTC与PTC压敏电阻在电源电路中起的作用
  12. mysql无法加载主类_错误: 找不到或无法加载主类 JDBC
  13. OFFPIPE 海底管道铺设计算分析软件
  14. Process finished with exit code -1073740791 (0xC0000409) 一种解决方案
  15. 孙鑫VC++学习笔记(转载至程序员之家--虎非龙)[11--15]
  16. 印章与印鉴的区别_篆刻与印章到底有什么区别?
  17. 宋鸿兵在《货币战争5》中谈到的美国医疗
  18. mp4转换m3u8格式php,【过程】第一次将m3u8文件转换为MP4文件经验分享
  19. Alibaba独家首发“Java成长笔记”,差距不止一点点
  20. 【密码学】云的MD5破解

热门文章

  1. sql server数据库:创建数据库、建立数据库用户、为用户赋予权限
  2. java内核_测量时间:从Java到内核再到
  3. oracle jdk_两个Oracle JDK的故事
  4. 工业互联网二级节点建设_建设者还是二传手?
  5. sidecar_Spring Cloud Sidecar –节点初始化
  6. couchbase_具有Rx-Java的Couchbase Java SDK
  7. 使用Spring Cloud Gateway保护反应式微服务
  8. Java单依赖性Dockerized HTTP端点
  9. 摆脱pom XML…几乎
  10. Java 10:“ var”关键字