精华内容
下载资源
问答
  • librtmp优化

    2016-12-28 17:13:39
    附: 7月份上传的那份code 有bug ...1 librtmp优化,并支持 chunksize发送 rtmp_->m_outChunkSize = 4096; rtmp_->m_bSendChunkSizeInfo = 1; 2 支持纯 ipv6 环境 ,跨平台支持 附: 7月份上传的那份code 有bug
  • libRTMP文档

    2018-07-31 15:46:00
    https://rtmpdump.mplayerhq.hu/ 原文地址:http://rtmpdump.mplayerhq.hu/librtmp.3.html git clone git://git.ffmpeg.org/rtmpdump ...librtmp − RTMPDump Real-Time Messaging Protocol API 库 RT...

    https://rtmpdump.mplayerhq.hu/

     

    原文地址:http://rtmpdump.mplayerhq.hu/librtmp.3.html

    git clone git://git.ffmpeg.org/rtmpdump

     

    名称

     

    librtmp − RTMPDump Real-Time Messaging Protocol API

     

     

    RTMPDump RTMP(librtmp, -lrtmp)

     

     

     

    #include <librtmp/rtmp.h>

     

    描述

     

    Real-Time Messaging Protocol,RTMP是用于互联网上传输视音频数据的网络协议。本API提供了支持RTMP, RTMPT,RTMPE, RTMP RTMPS以及以上几种协议的变种(RTMPTE, RTMPTS)协议所需的大部分客户端功能以及少量的服务器功能。尽管Adobe公司已经公布了RTMP协议规范(RTMP specification),但是本工程并不是通过Adobe的协议规范而是通过逆向工程的方式完成的。因此,它的运行方式可能和公布的协议规范有所偏离,但是一般情况下它和Adobe的客户端的运行方式是一模一样的。

     

    RTMPDump 软件包含一个基本的客户端:rtmpdump,一些示例服务器和一个用来提供对RTMP协议进行支持的库(libRTMP)。本页面对libRTMP的函数进行一个概述。 这些函数可以在 -lrtmp 库中找到。其他还有很多函数,但是还没有为这些函数写文档。

     

    基本的操作如下文所述。

     

    RTMP_Alloc() :用于创建一个RTMP会话的句柄。

     

    RTMP_Init():初始化句柄。

     

    RTMP_SetupURL():设置会话的参数。

     

    RTMP_Connect():建立RTMP链接中的网络连接(NetConnection)。

     

    RTMP_ConnectStream():建立RTMP链接中的网络流(NetStream)。

     

    RTMP_Read():读取RTMP流的内容。

     

    客户端可以在调用RTMP_Connect()之前调用RTMP_EnableWrite(),然后在会话开始之后调用 RTMP_Write()。

     

    RTMP_Pause():流播放的时候可以用于暂停和继续

     

    RTMP_Seek():改变流播放的位置

     

    当RTMP_Read()返回0 字节的时候,代表流已经读取完毕,而后可以调用RTMP_Close()

     

    RTMP_Free():用于清理会话。

     

    所有的数据都使用 FLV 格式进行传输。一个基本的会话需要一个RTMP URL。RTMP URL 格式如下所示:

     

     rtmp[t][e|s]://hostname[:port][/app[/playpath]]

     

    支持普通的,隧道的,以及加密的会话。

     

    其他附加的选项可以在URL的后面添加, 以空格为间隔符的“key=value”形式的字符串。

     

     

    选项

     

    网络(Network)参数

     

    这些选项定义了如何连接一个流媒体服务器。

     

    socks=host:port

     

    使用指定 SOCKS4代理。

     

     

     

    连接(Connection)参数

     

    这些选项定义了RTMP连接(Connect)请求消息的内容。如果没有提供正确的值,流媒体服务器会拒绝连接请求。

     

    app=name

     

    连接到RTMP的应用名,覆盖RTMP URL中的app。有时rtmpdumpURL 无法正确自动解析app名称。这时必须使用该选项。

     

    tcUrl=url

     

    目标流的URL。默认是 rtmp[t][e|s]://host[:port]/app.

     

    pageUrl=url

     

    流媒体所在网页的URL。默认情况下没有被发送的价值。

     

    swfUrl=url

     

    流媒体使用的SWF播放器的URL。默认情况下没有被发送的价值。

     

    flashVer=version

     

    swf播放器使用的Flash版本. 默认是"LNX 10,0,32,18"。

     

    conn=type:data

     

    任意AMF数据追加到connect,type类型说明:

     

    B 布尔型

     

    N 数字

     

    S 字符串

     

    O 对象

     

    Z 空null

     

    对于布尔型必须是0或1作为FALSE或TRUE,

     

    对于对象数据必须以0或1分别作为结束和开始的标制,子对象中数据项前加前缀类型N,并指定值名称,例如: NB:myFlag:1

     

    conn=B:1 conn=S:authMe conn=O:1 conn=NN:code:1.23 conn=NS:flag:ok conn=O:0

     

     

    会话(Session)参数

     

    这些选项在连接成功后生效。

     

    playpath=path

     

    覆盖RTMP URL解析的playpath,rtmpdump有时不能正确解析,通过该选项明确。

     

    playlist=0|1

     

    在play命令之前发set_playlist命令。否则播放列表将会只包含playpath。

     

    live=0|1

     

    指定媒体是实时流。在实时流中没有恢复和搜索。

     

    subscribe=path

     

    订阅的实时流名称。默认playpath。

     

    start=num

     

    开始到流的秒数(num),实时流无效。

     

    stop=num

     

    停止到流的秒数(num)。

     

    buffer=num

     

    设置缓冲时间,单位毫秒。 默认值36000000。

     

    timeout=num

     

    num秒后没有收到任何数据会话超时,默认值120。

     

     

    安全(Security)参数

     

    这些选项处理额外的身份验证,来自服务器的请求。

     

    token=key

     

    输入安全令牌响应,如果服务器需要使用安全令牌验证。

     

    jtv=JSON

     

    JSON令牌用于传统Justin.tv服务器 ,调用NetStream.Authenticate.UsherToken。

     

    swfVfy=0|1

     

    swf播放器的URL,此选项将替换所以三个--swfUrl,--swfhash, and --swfsize选项。使用此选项时,swf播放器将从指定URL检索,并自动计算哈希和大小。此外信息缓存在一个swfinfo文件在用户主目录,所以它在每次rtmpdump运行时,并不需要检索和重新计算。swfinfo记录URL,生成时间,修改SWF文件时间,它的大小,它的哈希,默认情况下,缓冲信息用于30天,然后重新检测。

     

    swfAge=days

     

    指定使用缓存的swf信息天数,然后重新检查,使用0为经常检查,如果检查显示swf具有相同的修改时间戳,它不会被再次检索。

     

    例子

     

    RTMP_SetupURL()使用的一个例子字符串:

     

     "rtmp://flashserver:1935/ondemand/thefile swfUrl=http://flashserver/player.swfswfVfy=1"

     

     

     

     

     

    http://rtmpdump.mplayerhq.hu

    转载于:https://www.cnblogs.com/elesos/p/9396252.html

    展开全文
  • librtmp usage

    2016-10-27 13:42:03
    librtmp是一组RTMP API,该组API中提供了大量的客户端函数以及小部分服务器函数,以支持RTMP、RTMPT、RTMPE、RTMPS、RTMPTE以及RTMPTS。虽然RTMP最基础的Spec已经由Adobe公司发布,不过本组API并未采用Adobe的Spec...

    rtmpdump是开发用于RTMP流的工具箱,支持所有RTMP格式,具体包含如下:

    • RTMP
    • RTMPE = RTMP + ENC,已加密的RTMP
    • RTMPS = RTMP + SSL,通过SSL传输层传输RTMP
    • RTMPT = RTMP + HTTP,在HTTP协议中传输RTMP
    • RTMPTE = RTMP + HTTP + ENC,在HTTP协议中传输已加密RTMP
    • RTMPTS = RTMP + HTTP + SSL,通过SSL传输层在HTTP协议中传输RTMP

    源码下载
    git clone git://git.ffmpeg.ort/rtmpdump

    从v2.1开始,提供了两个额外的程序,rtmpsrv和rtmpsuck.
    * rtmpsrv是服务器的存根,它记录了来自客户端的请求的连接和播放参数。然后它会使用这些参数来调用rtmpdump以请求流。
    * rtmpsuck是一个透明代理,它会拦截来自客户端的连接并创建一个向外的连接至真实服务器。当所有握手完成且双端协商加密key完毕后,它会把所有服务器发给客户端的流数据以明文形式记录至文件。

    librtmp Usage

    librtmp是一组RTMP API,该组API中提供了大量的客户端函数以及小部分服务器函数,以支持RTMP、RTMPT、RTMPE、RTMPS、RTMPTE以及RTMPTS。虽然RTMP最基础的Spec已经由Adobe公司发布,不过本组API并未采用Adobe的Spec进行逆向开发。因此,本组API可能与已发布Spec有所出入,但通常是和其他Adobe客户端运行方式一致的。

    1. 概述

    RTMPDump软件包在rtmpdump中包含了一个基础客户端工具程序,一些服务器示例,以及一个支持编程访问RTMP协议的库。

    基础交互过程如下:
    * RTMP_Alloc()创建会话句柄(session handle)
    * RTMP_Init()进行初始化
    * RTMP_SetupURL()提供所有会话参数
    * RTMP_Connect()建立网络连接
    * RTMP_ConnectStream()建立RTMP会话
    * RTMP_Read()读取流,如返回0字节,则流读取完毕
    * RTMP_Close()用于关闭流
    * RTMP_Free()用于释放会话句柄

    • 如需发布流,可在RTMP_Connect()前调用RTMP_EnableWrite(),然后在会话建立后使用使用RTMP_Write()
    • RTMP_Pause()在流播放过程中用于在暂停和播放状态间切换
    • RTMP_Seek()用于在流播放过程中移动位置

    所有数据以FLV格式进行传输,基础会话需要提供RTMP URL。RTMP URL格式如下:

    rtmp[t][e][s]://hostname[:port][/app[/playpath]]
    

    如前所述,原始rtmp、协议或传输层包裹的及已加密会话均可支持。

    额外的参数可通过在URL后添加以空格区隔的键值对(key=value)进行指定,需要注意的是含有特殊字符时要使用‘\HH(Hexadecimal)’格式,以免误导选项解释器(option parser),例如,空格需表示为’\20’,反斜杠为’\5c’。

    2. 选项

    网络参数(Network)

    参数定义如何连接至媒体服务器:
    * socks=host:port 使用指定的SOCKS4 proxy

    连接参数(Connection)

    选项定义了RTMP连接请求分组内容,如未提供正确值,媒体服务器将拒绝连接:
    * app=name RTMP服务器上希望连接的程序,会覆盖URL中包含的程序名。某些时候librtmp URL parser不能够智能决定app名称,所以可通过该参数进行指定
    * tcUrl=url 目标流的URL,默认为rtmp[t][e|s]://host[:port]/app
    * pageUrl=url 媒体被嵌入的网页URL,默认不设定任何值
    * swfUrl=url 用于媒体的SWF播放器,默认不设定任何值
    * flashVer=version 用于启动SWF播放器的Flash插件版本,默认为”LNX 10,0,32,18”
    * conn=type:data 在连接消息后添加任意AMF数据,类型必须为B(Boolean)/N(number)/S(string)/O(object)或Z(null)。对于Boolean类型,用0和1分别代表FALSE和TRUE;类似地对于Objects必须使用0或1来分别代表一个对象的结束和开始;子对象中的数据成员可能被命名,可在类型前加前缀‘N’并依次指定名称和值,如NB:myFlag:1。该选项可多次使用以构建各种AMF序列,如:

    `conn=B:1 conn=S:authMe conn=0:1 conn=NN:code:1.23 conn=NS:flag:ok conn=0:0`
    

    3. 会话参数

    这些选项将在连接请求成功后生效。

    • playpath=path 覆盖从RTMP URL中解析出来的playpath。有时候rtmpdump URL parser不能够正确地判断出正确的playpath,所以必须通过该选项进行显式指定
    • playlist=0/1 默认值为FALSE。如果值为1或TRUE,则在发送play命令前提交一个set_playlist命令。播放列表中会只包含当前playpath。如该值为0或FALSE,set_playlist命令不会被发送。
    • live=0/1 标明该媒体是一个live流,这意味着恢复和seeking操作都是不支持的
    • subscribe=path 订阅的live流名称,默认情况和playpath一致
    • start=num 从流的第几秒开始,live流不支持该参数
    • stop=num 在流的第几秒结束
    • buffer=num 设置buffer的大小,单位为ms,默认值为3000
    • timeout=num 设置会话超时时间,如num秒内未收到服务器端数据,则超时返回。默认为120s.

    4. 安全参数

    这些参数用于处理来自服务器端的额外的验证请求。

    • token=key SecureToken响应的Key,如server需要SecureToken验证时,将使用到该Key
    • jtv=JSON JSON token用于传统的Jstin.tv服务器,将调用NetStream.Authenticate.UsherToken
    • swfVfy=0/1 如该值为1或TRUE,SWF播放器将会从swfUrl指定路径获取以完成SWF确认。SWF的hash和size是自动计算完成的。同时SWF信息会被缓存到用户目录下的文件.swfinfo中,所以实际上不必每次接收后都进行重复计算。.swfinfo文件记录了SWF URL、fetch到的时间、SWF文件修改的时间戳、文件大小、以及hash代码。默认情况下,缓存信息会在重校验(re-checking)前的30天内有效
    • swfAge=days 指定重校验前缓存SWF信息的使用天数。设置为0时表示每次都要去校验SWF URL。注意如果校验结果显示SWF文件和之前的时间戳一致,不会再重复获取。
    展开全文
  • Android移植librtmp

    千次阅读 2017-01-12 15:30:48
    一、前言 为了让android能够使用librtmp,我们需要下载它的源码并使用交叉编译工具编译成可以供android使用的库...1、从ndk中提出一个交叉编译工具链,并设置环境变量,供我们编译使用。 2、因为librtmp需要依赖ssl

    一、前言
    为了让android能够使用librtmp,我们需要下载它的源码并使用交叉编译工具编译成可以供android使用的库文件。我在网上参考了一些别人移植的文章,但到自己移植的时候缺踩了许多坑。还好今天终于移植成功了,特此总结一下。
    二、流程
    我看了一下网上的资料大概流程都是:
    1、从ndk中提出一个交叉编译工具链,并设置环境变量,供我们编译使用。
    2、因为librtmp需要依赖ssl library,所有我们首先需要下载,并交叉编译ssl,
    3、交叉编译ssl library(我选择的是 polarssl-1.2.17)
    4、开始交叉编译librtmp,需要引用polarssl。

    下面我贴出这种编译的详细流程:
    1、提出交叉编译工具链

    ndk-bundle/build/tools/make-standalone-toolchain.sh --toolchain=arm-linux-androideabi-4.9 --platform=android-14 --install-dir=/home/blueberry/developer/android_tools/armeabi-4.9

    最后这个工具集就会在 /home/blueberry/developer/android_tools/armeabi-4.9这个文件加下
    然后我们设置环境变量:

    vim /etc/profile export PATH=/home/blueberry/developer/android_tools/armeabi-4.9/bin:$PATH

    后运行source /etc/profile

    2、下载编译polarssl
    然后我们下载polarssl-1.2.14版本(最好是这个版本)
    地址:https://tls.mbed.org/tech-updates/releases/polarssl-1.2.14-released
    下载完成之后解压到本地。编译前将include/polarssl/config.h中的
     #define POLARSSL_HAVEGE_C的注释去掉,否则编译librtmp的时候会出现 undefined reference tohavege_random’`错误,这里是因为polarssl默认关闭了havege模块。

    3、然后编译:

    make CC=arm-linux-androideabi-gcc APPS= make install DESTDIR=/home/blueberry/developer/android_tools/armeabi-4.9/sysroot

    编译好之后,这个库的头文件和库就会存放在 /home/blueberry/developer/android_tools/armeabi-4.9/sysroot 这个目录下了。

    4、接下来就是编译librtmp了
    如果需要动态库,则执行:

    make SYS=android CROSS_COMPILE=arm-linux-androideabi- INC="-I/home/blueberry/developer/android_tools/armeabi-4.9/sysroot/include" CRYPTO=POLARSSL
    

    编译静态库则需要执行:

    ~/developer/osl/librtmp/rtmpdump$ make SYS=android CROSS_COMPILE=arm-linux-androideabi- INC="-I/home/blueberry/developer/android_tools/armeabi-4.9/sysroot/include" CRYPTO=POLARSSL SHARED=
    

    上述就是我按着网上的方法所做的。应该没有差错,但事实不尽人意啊!我在编译动态库的时候遇到了这个错误:

    home/blueberry/developer/android_tools/armeabi-4.9/bin/../sysroot/usr/lib/crtbegin_dynamic.o:crtbrand.c:function _start: error: undefined reference to 'main'
    collect2: error: ld returned 1 exit status
    make[1]: *** [librtmp] Error 1
    make[1]: Leaving directory `/home/blueberry/developer/osl/librtmp/rtmpdump/librtmp'
    

    我在网上搜索,说解决这种错误的方法就是加入-shared选项,我搞了半天也没搞成功。

    然后我 继续编译静态库结果编译出了librtmp.a但是这个库我在用的时候发现缺少很多函数。

    总之,我可能和网上作者使用的库的版本不同,所以会到这些错误。

    三、编写Android.mk来编译librtmp

    哎、既然上面的方法失败了,就用另一个方法。即使我们来编写Android.mk来编译librtmp
    我们需要编写 2个Android.mk文件、1个Application.mk文件
    1、Android.mk

    LOCAL_PATH := $(call my-dir)
    
    subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \
            librtmp \
       ))
    
    SSL := /home/blueberry/developer/android_tools/armeabi-4.9/sysroot
    ifndef SSL
     $(error "You must define SSL before starting")
    endif
    
    include $(subdirs)                              

    2、librtmp/Android.mk

    LOCAL_PATH:= $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := polarssl
    LOCAL_EXPORT_C_INCLUDES := $(SSL)/include
    LOCAL_SRC_FILES := $(SSL)/lib/libpolarssl.a
    
    include $(PREBUILT_STATIC_LIBRARY)
    
    include $(CLEAR_VARS)
    
    LOCAL_C_INCLUDES += $(NDK_PROJECT_PATH)/librtmp \
        $(SSL)/include
    
    LOCAL_SRC_FILES:= \
        amf.c \
       hashswf.c \
       log.c \
       parseurl.c \
       rtmp.c
    
    LOCAL_STATIC_LIBRARIES = polarssl
    LOCAL_CFLAGS += -I$(SSL)/include -DUSE_POLARSSL
    LOCAL_LDLIBS += -L$(SSL)/lib -L$(SSL)/usr/lib
    LOCAL_LDLIBS += -lz
    
    LOCAL_MODULE := librtmp
    
    include $(BUILD_SHARED_LIBRARY)

    3、新建jni目录,创建Application.mk
    jni/Application.mk

    NDK_TOOLCHAIN_VERSION := 4.9
    APP_PLATFORM := android-21
    APP_CPPFLAGS += -DANDROID
    APP_ABI := armeabi-v7a
    APP_PROJECT_PATH := $(shell pwd)
    APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk

    4、最后就是使用 ndk-build来编译了。
    我们也可以写一个脚本:
    build.sh

    NDK=/home/blueberry/developer/Sdk/ndk-bundle
    $NDK/ndk-build NDK_APPLICATION_MK=./jni/Application.mk NDK_PROJECT_PATH=./

    5、最后我们执行,
    在libs文件下就会有我们编译出的 动态库了。

    提示:大家在使用的时候要注意路径。

    我编译好的动态库以及mk文件下载地址:http://download.csdn.net/detail/a992036795/9735901 其中libs下存放的编译好的动态库。大家用的时候只需要将需要用到的头文件和动态库考出就好。

    我移植好的额polarssl的静态库即polarssl源码下载地址:http://download.csdn.net/detail/a992036795/9811299

    参考:http://www.07net01.com/2015/07/886927.html
    http://hamer-blog.logdown.com/posts/600798

    展开全文
  • libRTMP使用说明

    千次阅读 2016-09-11 17:25:50
    libRTMP使用说明

    名称

    librtmp − RTMPDump Real-Time Messaging Protocol API

    RTMPDump RTMP(librtmp, -lrtmp)

    简介

    #include<librtmp/rtmp.h>

    描述

    实时流协议(Real-TimeMessaging Protocol,RTMP)是用于互联网上传输视音频数据的网络协议。本API提供了支持RTMP, RTMPT,RTMPE, RTMP RTMPS以及以上几种协议的变种(RTMPTE, RTMPTS)协议所需的大部分客户端功能以及少量的服务器功能。尽管Adobe公司已经公布了RTMP协议规范(RTMP specification),但是本工程并不是通过Adobe的协议规范而是通过逆向工程的方式完成的。因此,它的运行方式可能和公布的协议规范有所偏离,但是一般情况下它和Adobe的客户端的运行方式是一模一样的。

    RTMPDump 软件包含一个基本的客户端:rtmpdump,一些示例服务器和一个用来提供对RTMP协议进行支持的库(libRTMP)。本页面对libRTMP的函数进行一个概述。 这些函数可以在 -lrtmp 库中找到。其他还有很多函数,但是还没有为这些函数写文档。

    基本的操作如下文所述。

    RTMP_Alloc() :用于创建一个RTMP会话的句柄。

    RTMP_Init():初始化句柄。

    RTMP_SetupURL():设置会话的参数。

    RTMP_Connect():建立RTMP链接中的网络连接(NetConnection)。

    RTMP_ConnectStream():建立RTMP链接中的网络流(NetStream)。

    RTMP_Read():读取RTMP流的内容。

    客户端可以在调用RTMP_Connect()之前调用RTMP_EnableWrite(),然后在会话开始之后调用 RTMP_Write()。

    RTMP_Pause():流播放的时候可以用于暂停和继续

    RTMP_Seek():改变流播放的位置

    RTMP_Read()返回0 字节的时候,代表流已经读取完毕,而后可以调用RTMP_Close()

    RTMP_Free():用于清理会话。

    所有的数据都使用 FLV 格式进行传输。一个基本的会话需要一个RTMP URL。RTMP URL 格式如下所示:

     rtmp[t][e|s]://hostname[:port][/app[/playpath]]

    支持普通的,隧道的,以及加密的会话。

    其他附加的选项可以在URL的后面添加以空格为间隔符的“key=value”形式的字符串。

    选项

    网络(Network)参数

    这些选项定义了如何连接一个流媒体服务器。

    socks=host:port

    使用指定 SOCKS4代理。

    连接(Connection)参数

    这些选项定义了RTMP连接(Connect)请求消息的内容。如果没有提供正确的值,流媒体服务器会拒绝连接请求。

    app=name

    连接到RTMP的应用名,覆盖RTMP URL中的app。有时rtmpdumpURL 无法正确自动解析app名称。这时必须使用该选项。

    tcUrl=url

    目标流的URL。默认是 rtmp[t][e|s]://host[:port]/app.

    pageUrl=url

    流媒体所在的网页的URL。默认情况下没有被发送的价值。

    swfUrl=url

    流媒体使用的SWF播放器的的URL。默认情况下没有被发送的价值。

    flashVer=version

    swf播放器使用的Flash版本. 默认是"LNX 10,0,32,18"。

    conn=type:data

    任意AMF数据追加到connect,类型说明,

    B 布尔型

    N 数字

    S 字符串

    O 对象

    Z 空

    对于布尔型必须是0或1作为FALSE或TRUE,

    对于对象数据必须以0或1分别作为结束和开始的标制,子对象中数据项前加前缀类型N,并指定值名称,例如:

      -C B:1 -C S:authMe -C O:1 -C NN:code:1.23-C NS:flag:ok -C O:0

    会话(Session)参数

    这些选项在连接成功后生效。

    playpath=path

    覆盖RTMP URL解析的playpath,rtmpdump有时不能正确解析,通过该选项明确。

    playlist=0|1

    在play命令之前发生set_playlist命令。否则播放列表将会值包含playpath。

    live=0|1

    指定媒体是实时流。在实时流中没有恢复和搜索。

    subscribe=path

    订阅的实时流名称。默认playpath。

    start=num

    开始到流的秒数(num),实时流无效。

    stop=num

    停止到流的秒数(num)。

    buffer=num

    设置缓冲时间,单位毫秒。 默认值36000000。

    timeout=num

    num秒后没有收到任何数据会话超时,默认值120。

    安全(Security)参数

    这些选项处理额外的身份验证,来自服务器的请求。

    token=key

    输入安全令牌响应,如果服务器需要使用安全令牌验证。

    jtv=JSON

    JSON令牌用于传统Justin.tv服务器 ,调用NetStream.Authenticate.UsherToken。

    swfVfy=0|1

    swf播放器的URL,此选项将替换所以三个--swfUrl,--swfhash, and --swfsize选项。使用此选项时,swf播放器将从指定URL检索,并自动计算哈希和大小。此外信息缓存在一个swfinfo文件在用户主目录,所以它在每次rtmpdump运行时,并不需要检索和重新计算。swfinfo记录URL,生成时间,修改SWF文件时间,它的大小,它的哈希,默认情况下,缓冲信息用于30天,然后重新检测。

    swfAge=days

    指定使用缓存的swf信息天数,然后重新检查,使用0为经常检查,如果检查显示swf具有相同的修改时间戳,它不会被再次检索。

    例子

    RTMP_SetupURL()使用的一个例子字符串:

     "rtmp://flashserver:1935/ondemand/thefile swfUrl=http://flashserver/player.swfswfVfy=1"

    参见

    rtmpdump(1), rtmpgw(8)

    作者

    Andrej Stepanchuk, Howard Chu,The Flvstreamer Team 

    http://rtmpdump.mplayerhq.hu


    翻译的有的地方还不是很通顺,以后再改进

    LIBRTMP地址:http://rtmpdump.mplayerhq.hu/librtmp.3.html

    原文地址:http://blog.csdn.net/leixiaohua1020/article/details/14229543
    展开全文
  • 编译librtmp

    千次阅读 2018-09-13 11:45:46
    将第一步和第二步中的.lib文件复制到\Librtmp\Librtmp\lib文件夹中。 d.设置库引用,     库名称     最终项目样子   编译完成!!   ex: 1、修改rtmp_sys.h...
  • libRTMP 整体说明

    2021-06-29 14:54:33
    (libRTMP)的整体的函数调用结构图如下图所示: 二、基本流程 使用RTMP下载一个流媒体的大致流程是这样的: RTMP_Init();//初始化结构体 InitSockets();//初始化Socket RTMP_ParseURL();//解析输入URL RTMP_...
  • librtmp发送阻塞

    千次阅读 2018-03-20 09:56:55
    librtmp发送阻塞 我的解决方法是:直接用RTMP_IsConnected()在推流之前检测网络是否断开,流是否断开,如果发现断开,马上启动重连RTMP。这样可以避免在路由器不稳定的情况下,出现阻塞现象。 上面的解决方法...
  • librtmp推流demo

    2018-10-18 11:19:26
    基于librtmp做推流demo,有h264数据解析,sps,pps解析,做了封装类,可参考学习
  • VS2012 编译Librtmp

    千次阅读 2015-10-20 18:23:16
    折腾一天编译Librtmp,各种问题,对于一个被.NET 坑害的人来做C++简直累死了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,591
精华内容 636
关键字:

librtmp设置