立羽丶 2025-05-24 15:41 采纳率: 50%
浏览 10

librtmp推流问题

使用librtmp库进行推流,往虎牙直播推流正常,往斗鱼直播推流时提示无效的推流码,推流失败,不知道什么原因,librtmp打印如下:

[RTMP]Connect
DEBUG: Parsing...
DEBUG: Parsed protocol: 0
DEBUG: Parsed host    : 172.16.172.109
DEBUG: Parsed app     : live
==>palypath0:dystream?time=1748069363
==>palypath:dystream?time=1748069363
DEBUG: RTMP_Connect1, ... connected, handshaking
DEBUG: HandShake: Type Answer   : 03
DEBUG: HandShake: Server Uptime : 1748072128
DEBUG: HandShake: FMS Version   : 0.0.0.0
DEBUG: HandShake: Handshaking finished....
DEBUG: RTMP_Connect1, handshaked
DEBUG: Invoking connect
[RTMP]connect success!
DEBUG: HandleCtrl, received ctrl. type: 0, len: 6
DEBUG: HandleCtrl, Stream Begin 0
DEBUG: RTMP_ClientPacket, received: invoke 241 bytes
DEBUG: (object begin)
DEBUG: (object begin)
DEBUG: Property: <Name:             fmsVer, STRING:     FMS/3,0,1,123>
DEBUG: Property: <Name:       capabilities, NUMBER:     31.00>
DEBUG: Property: <Name:               mode, NUMBER:     1.00>
DEBUG: (object end)
DEBUG: (object begin)
DEBUG: Property: <Name:              level, STRING:     status>
DEBUG: Property: <Name:               code, STRING:     NetConnection.Connect.Success>
DEBUG: Property: <Name:        description, STRING:     Connection succeeded.>
DEBUG: Property: <Name:     objectEncoding, NUMBER:     0.00>
DEBUG: Property: <Name:               data, NUMBER:     0.00>
DEBUG: Property: <Name:            version, STRING:     3,5,1,516>
DEBUG: (object end)
DEBUG: (object end)
DEBUG: HandleInvoke, server invoking <_result>
DEBUG: HandleInvoke, received result for method call <connect>
DEBUG: Invoking releaseStream
DEBUG: Invoking FCPublish
DEBUG: Invoking createStream
DEBUG: RTMP_ClientPacket, received: invoke 20 bytes
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: (object end)
DEBUG: HandleInvoke, server invoking <_result>
DEBUG: HandleInvoke, received result id 2 without matching request
DEBUG: RTMP_ClientPacket, received: invoke 24 bytes
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: (object end)
DEBUG: HandleInvoke, server invoking <onFCPublish>
DEBUG: RTMP_ClientPacket, received: invoke 20 bytes
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: (object end)
DEBUG: HandleInvoke, server invoking <_result>
DEBUG: HandleInvoke, received result id 3 without matching request
DEBUG: RTMP_ClientPacket, received: invoke 29 bytes
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: (object end)
DEBUG: HandleInvoke, server invoking <_result>
DEBUG: HandleInvoke, received result for method call <createStream>
DEBUG: Invoking publish
DEBUG: RTMPSockBuf_Fill, recv returned -1. GetSockError(): 104 (Connection reset by peer)
ERROR: WriteN, RTMP send error 32 (59 bytes)
ERROR: Close Rtmp!

DEBUG: Invoking FCUnpublish
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-05-24 15:41
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    librtmp推流问题

    你使用 librtmp 库进行推流,往虎牙直播推流正常,但往斗鱼直播推流时提示无效的推流码,推流失败。librtmp 打印如下:

    [RTMP]Connect
    DEBUG: Parsing...
    

    可能的原因:

    1.斗鱼直播的推流服务器可能需要特殊的头信息或参数,librtmp 库没有默认设置这些信息。 2.斗鱼直播的推流服务器可能需要特殊的加密或身份验证,librtmp 库没有默认设置这些信息。

    解决方案:

    1.检查斗鱼直播的推流文档,了解其推流服务器的需求和参数。 2.使用 librtmp 库提供的设置函数,设置头信息、参数、加密或身份验证等信息。 3.检查 librtmp 库的日志信息,了解推流失败的原因。

    例如,你可以使用 rtmp_set_option 函数设置头信息和参数:

    rtmp_set_option(rtmp, RTMP_OPTION_HEADERS, "Content-Type", "application/x-h264");
    rtmp_set_option(rtmp, RTMP_OPTION_HEADERS, "Stream-Name", "your_stream_name");
    

    你也可以使用 rtmp_set_option 函数设置加密或身份验证信息:

    rtmp_set_option(rtmp, RTMP_OPTION_AUTH, "username", "your_username");
    rtmp_set_option(rtmp, RTMP_OPTION_AUTH, "password", "your_password");
    

    请注意,这只是一个示例代码,你需要根据斗鱼直播的推流文档和 librtmp 库的文档进行修改和设置。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月24日