xiongyingsun 发表于 2022-1-11 10:12:19

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

另外ffrtsp 这个库在哪里获取,我在百度也没找到?求大佬支招~
最近做rk rtsp音视频推流和拉流,视频推流参考例程没什么问题,音视频不知道怎么一起推,求大佬支招~

板蓝根 发表于 2022-1-11 10:46:11

ffrtsp 是我们自己实现的,目的为了快速让用户把基本的硬件用起来。目前没有提供源码的计划也不支持音频封装,如果需要添加功能的话,建议找第三方开源工具可库,例如 ffmpeg live555 等自行实现

xiongyingsun 发表于 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 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 and VENC 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: ; 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);
帮忙看一下哪里错了~

板蓝根 发表于 2022-1-12 09:30:50

librtsp 也不支持音频推流

xiongyingsun 发表于 2022-1-12 09:34:25

板蓝根 发表于 2022-1-12 09:30
librtsp 也不支持音频推流

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

板蓝根 发表于 2022-1-12 09:50:33

不是的, rtsp 推流这部分一般是客户自己开发的,这里的库只是 demo 用的

xiongyingsun 发表于 2022-1-12 10:24:31

板蓝根 发表于 2022-1-12 09:50
不是的, rtsp 推流这部分一般是客户自己开发的,这里的库只是 demo 用的

好的好的,谢谢大佬~

799959745 发表于 2022-1-12 14:54:33

xiongyingsun 发表于 2022-1-12 10:24
好的好的,谢谢大佬~

音视频同时推流可以看下这个帖子:
https://dev.t-firefly.com/thread-104655-1-1.html
里面有个示例就是音视频推流的。

xiongyingsun 发表于 2022-1-12 16:41:32

799959745 发表于 2022-1-12 14:54
音视频同时推流可以看下这个帖子:

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

好的。我研究一下,谢谢大佬~
页: [1]
查看完整版本: librtsp中的音频推流函数要怎么用,也没例程参考