jrtplib 编译安装配置[通俗易懂]

jrtplib 编译安装配置[通俗易懂]  RTP是目前解决流媒体实时传输问题的最好办法,而JRTPLIB是一个用C++语言实现的RTP库,包括UDP通讯,它的主页地址是:Jori’spage  jrtplib源码的获取,可以在它的主页上直接下载,也可以使用git直接克隆一份。因为它的主页是国外网站,下载速度非常慢,我这里提供一份已经下载好的最新的jrtplib源码:jrtplib-3.11.1.tar.gz  我…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

    RTP 是目前解决流媒体实时传输问题的最好办法,而JRTPLIB 是一个用C++语言实现的RTP库,包括UDP通讯,它的主页地址是:Jori’s page

    jrtplib 源码的获取,可以在它的主页上直接下载,也可以使用git 直接克隆一份。因为它的主页是国外网站,下载速度非常慢,我这里提供一份已经下载好的最新的jrtplib源码:jrtplib-3.11.1.tar.gz

    我这里介绍JRTPLIB在ubuntu系统中的编译安装以及配置

    (1)下载源码:

        git clone https://github.com/j0r1/JRTPLIB.git

    (2)安装cmake

        sudo apt install cmake

    (3)生成Makefile 文件

        sudo cmake CMakeLists.txt 

    (4)编译

        make

    (5)安装

        sudo make  install

    可以看到已经安装到下面的路径去了:

.....................
-- Installing: /usr/local/include/jrtplib3/rtpudpv4transmitter.h
-- Installing: /usr/local/include/jrtplib3/rtpudpv6transmitter.h
-- Installing: /usr/local/include/jrtplib3/rtpbyteaddress.h
-- Installing: /usr/local/include/jrtplib3/rtpexternaltransmitter.h
-- Installing: /usr/local/include/jrtplib3/rtpsecuresession.h
-- Installing: /usr/local/include/jrtplib3/rtpsocketutil.h
-- Installing: /usr/local/include/jrtplib3/rtpabortdescriptors.h
-- Installing: /usr/local/include/jrtplib3/rtpselect.h
-- Installing: /usr/local/include/jrtplib3/rtptcpaddress.h
-- Installing: /usr/local/include/jrtplib3/rtptcptransmitter.h
-- Installing: /usr/local/include/jrtplib3/rtpfaketransmitter.h
-- Installing: /usr/local/lib/libjrtp.a
-- Installing: /usr/local/lib/libjrtp.so.3.11.1
-- Installing: /usr/local/lib/libjrtp.so

    (6)修改头文件引用

    这个时候编译jrtplib 自带的示例程序,会出现下面的错误:

licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ g++ example1.cpp -o test -ljrtp
example1.cpp:6:24: fatal error: rtpsession.h: No such file or directory
compilation terminated.
licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ 

    这个是头文件路径不对引起的。可以直接修改头文件的引用,如下:

licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ vim example1.cpp 
  1 /*
  2    Here's a small IPv4 example: it asks for a portbase and a destination and 
  3    starts sending packets to that destination.
  4 */
  5 
  6 #include <jrtplib3/rtpsession.h>
  7 #include <jrtplib3/rtpudpv4transmitter.h>
  8 #include <jrtplib3/rtpipv4address.h>
  9 #include <jrtplib3/rtpsessionparams.h>
 10 #include <jrtplib3/rtperrors.h>
 11 #include <jrtplib3/rtplibraryversion.h>
 12 #include <stdlib.h>
 13 #include <stdio.h>
 14 #include <iostream>
 15 #include <string>

    修改后可编译通过并生成可执行文件

"example1.cpp" 147L, 3436C written                                                                                                             
licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ g++ example1.cpp -o test -ljrtp
licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ ls
CMakeFiles           CMakeLists.txt  example2.cpp  example4.cpp  example6.cpp  example8.cpp  test
cmake_install.cmake  example1.cpp    example3.cpp  example5.cpp  example7.cpp  Makefile
licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ 

   
(7)配置共享链接库

        直接运行上面生成的test 文件会出现下面的问题:

licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ ./test 
./test: error while loading shared libraries: libjrtp.so.3.11.1: cannot open shared object file: No such file or directory
licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ 

        这个是共享连接库连接不到的问题,执行下面命令:

sudo ln -s /usr/local/lib/libjrtp.so.3.11.1 /usr/lib/

      之后运行程序,可正常运行。

licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ ./test 
Using version 3.11.1
Enter local portbase:
6666

Enter the destination IP address
192.168.0.6
Enter the destination port
6666

Number of packets you wish to be sent:
10

Sending packet 1/10

Sending packet 2/10

Sending packet 3/10

Sending packet 4/10

Sending packet 5/10

Sending packet 6/10

Sending packet 7/10

Sending packet 8/10

Sending packet 9/10

Sending packet 10/10
licaibiao@lcb:~/test/RTP/JRTPLIB/examples$ 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164746.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是跨域问题?跨域解决问题

    什么是跨域问题?跨域解决问题一 为什么会出现跨域问题 出于浏览器的同源策略限制 同源策略是一种约定 它是浏览器最核心也是最基本的安全功能 如果缺少了同源策略 则浏览器的正常的功能可能会受到影响 跨域收是 Web 是构建在同源策略基础上的 浏览器只是针对同源策略的一种实现 同源策略会阻止一个域的 JavaScript 脚本和另一个域的内容进行交互 所谓同源 即指同一个域 就是两个页面具备同样的协议 protocol 主机 host 和端口号 port 跨域报错的原因请求是跨域的 并不一定会报错 普通的图片请求 css 文件请求是不

    2025年6月12日
    4
  • java调用用友eai,GitHub – hellozjf/u8eai: 用友EAI接口调研结果

    java调用用友eai,GitHub – hellozjf/u8eai: 用友EAI接口调研结果文档结构 src main java com hellozjf test u8eai controller domain

    2025年11月12日
    2
  • Spark Streaming 实现 word count

    Spark Streaming 实现 word countSparkStreami 实现 wordcount 一 一个输入源端口对应一个 receiver1 1 数据源端口 1 2sparkstream 接收处理数据二 两个输入源端口对应一个 receiver2 1 测试源端口一 一个输入源端口对应一个 receiver1 1 数据源端口使用网络猫作为数据的输入源端口下载网络猫 linux 命令行执行 yuminstall ync 使用测试端口 9999nc lk99991 2sparkstream 接收处理数据这

    2025年8月13日
    5
  • Java核心知识点精心整理(全是精华)「建议收藏」

    Java核心知识点精心整理(全是精华)「建议收藏」我不是针对谁,我是说其它面试题都是辣鸡

    2022年9月1日
    3
  • mysql锁表原因及如何处理_表被锁了还能查询

    mysql锁表原因及如何处理_表被锁了还能查询1、锁表发生在insert update、delete中  2、锁表的原理是数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite或者回滚或者退出数据库用户 3、锁表的原因  第一、A程序执行了对tableA的insert,并还未commite时,B程序也对tableA进行insert则此时会发生资源正忙的异常就是锁表 第二、锁表常…

    2022年8月23日
    4
  • 抽象工厂模式与工厂方法模式有哪些不同_抽象工厂模式java代码

    抽象工厂模式与工厂方法模式有哪些不同_抽象工厂模式java代码Abstract Factory动机实例模式定义结构要点总结笔记动机在软件系统中,经常面临着”一系列相互依赖的对象“的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作如果应对这种变换?如何绕过常规的对象创建方法(new),提供一种”封装机制“来避免客户程序和这种”多系列具体对象创建工作“的紧耦合?实例数据库连接的时候会有很多关联的对象,这些对象是一个整体朴素class EmployeeDAO{public: vector<EmployeeDAO> GetEm

    2022年8月11日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号