Firefly开源社区

打印 上一主题 下一主题

[Linux] librtsp中的音频推流函数要怎么用,也没例程参考

74

积分

0

威望

0

贡献

技术小白

积分
74

librtsp中的音频推流函数要怎么用,也没例程参考

发表于 2022-1-11 10:12:19      浏览:5794 | 回复:8        打印      只看该作者   [复制链接] 楼主
另外ffrtsp 这个库在哪里获取,我在百度也没找到?求大佬支招~
最近做rk rtsp音视频推流和拉流,视频推流参考例程没什么问题,音视频不知道怎么一起推,求大佬支招~
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11182

优秀版主

发表于 2022-1-11 10:46:11        只看该作者  沙发
ffrtsp 是我们自己实现的,目的为了快速让用户把基本的硬件用起来。目前没有提供源码的计划也不支持音频封装,如果需要添加功能的话,建议找第三方开源工具可库,例如 ffmpeg live555 等自行实现
回复

使用道具 举报

74

积分

0

威望

0

贡献

技术小白

积分
74
发表于 2022-1-12 09:14:42        只看该作者  板凳
板蓝根 发表于 2022-1-11 10:46
ffrtsp 是我们自己实现的,目的为了快速让用户把基本的硬件用起来。目前没有提供源码的计划也不支持音频封 ...

好吧,
另外问一下
1.rkmedia能不能调用麦克风设备,我试了一下音频功能,好像只能从传输声卡发出的声音
2.另外rk 里带librtsp那个库的接口怎么用,视频推流可以,音频推流模仿的视频推流的写法,好像没效果
代码:
void video_packet_cb(MEDIA_BUFFER mb) {
  static RK_S32 packet_cnt = 0;
// printf("#Get packet-%d, size %zu\n", packet_cnt, RK_MPI_MB_GetSize(mb));

  if (g_rtsplive && g_rtsp_session) {
    rtsp_tx_video(g_rtsp_session, RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetSize(mb),
                  RK_MPI_MB_GetTimestamp(mb));
    rtsp_do_event(g_rtsplive);
  }

  RK_MPI_MB_ReleaseBuffer(mb);
  packet_cnt++;
}
static void audio_packet_cb(MEDIA_BUFFER mb) {
   
   
    static RK_S32 packet_cnt = 0;
   // printf("#Get packet-%d, size %zu\n", packet_cnt, RK_MPI_MB_GetSize(mb));
  
    if (g_rtsplive && g_rtsp_session) {
      rtsp_tx_audio(g_rtsp_session, RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetSize(mb),
                    RK_MPI_MB_GetTimestamp(mb));
      rtsp_do_event(g_rtsplive);
    }
  
    RK_MPI_MB_ReleaseBuffer(mb);
    packet_cnt++;
}

   g_rtsplive = create_rtsp_demo(554);
      g_rtsp_session = rtsp_new_session(g_rtsplive, "/live/main_stream");
      rtsp_set_video(g_rtsp_session, RTSP_CODEC_ID_VIDEO_H264, NULL, 0);
      rtsp_set_audio(g_rtsp_session, RTSP_CODEC_ID_AUDIO_AAC, NULL, 0);
      rtsp_sync_video_ts(g_rtsp_session, rtsp_get_reltime(), rtsp_get_ntptime());
      rtsp_sync_audio_ts(g_rtsp_session, rtsp_get_reltime(), rtsp_get_ntptime());   
//      MPP_CHN_S stEncChn;
      stEncChn.enModId = RK_ID_VENC;
      stEncChn.s32DevId = 0;
      stEncChn.s32ChnId = 0;
      ret = RK_MPI_SYS_RegisterOutCb(&stEncChn, video_packet_cb);
      if (ret) {
        printf("ERROR: register output callback for VENC[0] error! ret=%d\n", ret);
      }

        stSrcChn.enModId = RK_ID_RGA;
        stSrcChn.s32DevId = 0;
        stSrcChn.s32ChnId = 2;
        stDestChn.enModId = RK_ID_VENC;
        stDestChn.s32DevId = 0;
        stDestChn.s32ChnId = 0;
        ret = RK_MPI_SYS_Bind(&stSrcChn, &stDestChn);
        if (ret) {
          printf("ERROR: Bind VI[0] and VENC[0] error! ret=%d\n", ret);
        }

//audio
        fp = fopen("/data/work/out.mp2", "w+");
     // RK_MPI_SYS_Init();
     //  MPP_CHN_S mpp_chn_ai, mpp_chn_aenc;
        mpp_chn_ai.enModId = RK_ID_AI;
        mpp_chn_ai.s32ChnId = 0;
        mpp_chn_aenc.enModId = RK_ID_AENC;
        mpp_chn_aenc.s32ChnId = 0;

       // AI_CHN_ATTR_S ai_attr;
        ai_attr.pcAudioNode = ALSA_PATH;
        ai_attr.enSampleFormat = RK_SAMPLE_FMT_S16;
        ai_attr.u32NbSamples = 1024;
        ai_attr.u32SampleRate = 16000;
        ai_attr.u32Channels = 2;
        ai_attr.enAiLayout = AI_LAYOUT_NORMAL; // chanel layout: [ref:mic]; remove
                                                // ref, output mic mono

      // AENC_CHN_ATTR_S aenc_attr;
        aenc_attr.enCodecType = RK_CODEC_TYPE_MP2;
        aenc_attr.u32Bitrate = 64000;
        aenc_attr.u32Quality = 1;
        aenc_attr.stAencMP2.u32Channels = 1;
        aenc_attr.stAencMP2.u32SampleRate = 16000;



        // 1. create AI
        RK_MPI_AI_SetChnAttr(mpp_chn_ai.s32ChnId, &ai_attr);
        RK_MPI_AI_EnableChn(mpp_chn_ai.s32ChnId);

        // 2. create AENC
        RK_MPI_AENC_CreateChn(mpp_chn_aenc.s32ChnId, &aenc_attr);
        RK_U32 ret = RK_MPI_SYS_RegisterOutCb(&mpp_chn_aenc, audio_packet_cb);
        printf("ret = %d.\n", ret);
        // 3. bind AI-AENC
        RK_MPI_SYS_Bind(&mpp_chn_ai, &mpp_chn_aenc);
帮忙看一下哪里错了~
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11182

优秀版主

发表于 2022-1-12 09:30:50        只看该作者  地板
librtsp 也不支持音频推流
回复

使用道具 举报

74

积分

0

威望

0

贡献

技术小白

积分
74
发表于 2022-1-12 09:34:25        只看该作者  5#
板蓝根 发表于 2022-1-12 09:30
librtsp 也不支持音频推流

好吧,那他的接口是先写着,还没开发好么
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11182

优秀版主

发表于 2022-1-12 09:50:33        只看该作者  6#
不是的, rtsp 推流这部分一般是客户自己开发的,这里的库只是 demo 用的
回复

使用道具 举报

74

积分

0

威望

0

贡献

技术小白

积分
74
发表于 2022-1-12 10:24:31        只看该作者  7#
板蓝根 发表于 2022-1-12 09:50
不是的, rtsp 推流这部分一般是客户自己开发的,这里的库只是 demo 用的

好的好的,谢谢大佬~
回复

使用道具 举报

1万

积分

7

威望

0

贡献

技术大神

Rank: 8Rank: 8

积分
11422

突出贡献

发表于 2022-1-12 14:54:33        只看该作者  8#
xiongyingsun 发表于 2022-1-12 10:24
好的好的,谢谢大佬~

音视频同时推流可以看下这个帖子:
  1. https://dev.t-firefly.com/thread-104655-1-1.html
复制代码

里面有个示例就是音视频推流的。
回复

使用道具 举报

74

积分

0

威望

0

贡献

技术小白

积分
74
发表于 2022-1-12 16:41:32        只看该作者  9#
799959745 发表于 2022-1-12 14:54
音视频同时推流可以看下这个帖子:

里面有个示例就是音视频推流的。

好的。我研究一下,谢谢大佬~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表