christina

christina

0个粉丝

2

问答

0

专栏

0

资料

christina  发布于  2014-01-06 11:09:02
采纳率 0%
2个问答
11197

使用jrtplib库函数发送实时视频流

 
我在海思自带的venc例子基础上修改,写了一个发送码流包的函数H264Send,然后在SAMPLE_COMM_VENC_SaveH264(FILE* fpH264File, VENC_STREAM_S *pstStream)这个函数里 for (i = 0; i < pstStream->u32PackCount; i++)

    {status=H264SendPacket(pstStream->pstPack.pu8Addr[0],pstStream->pstPack.u32Len[0]);}这样发送,但是vlc不显示,各位,帮忙看看,我是在找不出错误在哪。


int H264SendPacket(unsigned char *val,unsigned long length)

{
      
            

            int status;       

            unsigned long valid_len=length-4;

            unsigned char NALU=val[4];//,*sendStartAddr=NULL;



            if(valid_len<=MAX_RTP_PKT_LENGTH)

                 {
            //memcpy(sendbuf,pbuf,length);

                      status=sess.SendPacket((void *)&val[4],valid_len,PLOAD_TYPE,true,DefaultTimestampIncrement);

                      checkerror(status);
            printf("send\n");
            



                  }

            else if(valid_len>MAX_RTP_PKT_LENGTH)

                  {
             valid_len-=1;
             int k=0,l=0;
             k=valid_len/MAX_RTP_PKT_LENGTH;
             l=valid_len%MAX_RTP_PKT_LENGTH;
             int t=0;
             int pos=5;
             //sendStartAdd=&val[3];
             if(l!=0)
                                  {
                k=k+1;
                                  }            
             while(t0))
                                 {
                 if(t<(k-1))//(t                                               {
                       val[pos-2]=(NALU & 0x60)|28;
                       val[pos-1]=(NALU & 0x1f);
                       if(0==t)
                                                            {
                            val[pos-1]|=0x80;
                                                             }
                       status=sess.SendPacket((void *)&val[pos-2],MAX_RTP_PKT_LENGTH+2,PLOAD_TYPE,true,DefaultTimestampIncrement);
                       checkerror(status);
                       t++;
pos+=MAX_RTP_PKT_LENGTH;
                                               }
                 else //if((k==t&&l>0)||((t==k-1)&&l==0))
                                               {
                       int iSendLen;
                       if(l>0)
                                                             {
                            iSendLen=valid_len-t*MAX_RTP_PKT_LENGTH;
                                                             }
                       else
                            iSendLen=MAX_RTP_PKT_LENGTH;
                       val[pos-2]=(NALU & 0x60)|28;
                       val[pos-1]=(NALU & 0x1f);
                       val[pos-1]|=0x40;
                     
                       status=sess.SendPacket((void *)&val[pos-2],iSendLen+2,PLOAD_TYPE,true,DefaultTimestampIncrement);
printf("sending\n");
                       checkerror(status);
                       t++;
                                                 }
              
                              }
                   }  


         return status;

}
我来回答
回答17个
时间排序
认可量排序

christina

0个粉丝

2

问答

0

专栏

0

资料

christina 2014-01-06 11:11:52
认可0
session是全局变量,在发送之前,已经初始化了,目的地址,端口等,都设置结束了。板子上运行没问题,但是vlc就是接收不到。问题在哪,望各位提点一下。

christina

0个粉丝

2

问答

0

专栏

0

资料

christina 2014-01-06 11:20:39
认可0
我的sdp是这么写的
m=video 1234 RTP/AVP 96//1234是destport
a=rtpmap:96 H264/90000
a=decode_buf=300
a=framerate:15
c=IN IP4 192.168.136.95//我笔记本的ip地址
不知是不是我理解有错误,我才接触rtp,也才开始做海思的板子。望各位给提点一下。

christina

0个粉丝

2

问答

0

专栏

0

资料

christina 2014-01-06 17:29:48
认可0
问题解决了,因为我安装jrtplib是,有个RTP_BIG_ENDIAN没有注释掉。但是我这个延迟特别大,而且有丢帧现象。

sk-3

0个粉丝

6

问答

0

专栏

2

资料

sk-3 2014-01-06 19:13:05
认可0
延迟大,是因为vlc给你做缓存了。 有参数可以控制

christina

0个粉丝

2

问答

0

专栏

0

资料

christina 2014-01-08 08:41:59
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=5925&ptid=2950]sk-3 发表于 2014-1-6 19:13[/url]
延迟大,是因为vlc给你做缓存了。 有参数可以控制[/quote]

怎么设置,可否详细的说一下。

cumt_gbw

0个粉丝

1

问答

0

专栏

0

资料

cumt_gbw 2014-03-17 20:09:09
认可0
楼主解决问题没有?怎么没有尝试用Live555呢?

lingxiao911

0个粉丝

10

问答

0

专栏

0

资料

lingxiao911 2014-10-28 17:26:39
认可0
楼主好样的,我也准备做jrtplib,要向楼主请教了

yuino

1个粉丝

6

问答

0

专栏

0

资料

yuino 2014-11-08 15:34:47
认可0
本帖最后由 yuino 于 2014-11-8 15:36 编辑

请问lz和版主,下面的函数你只处理这个pstStream->pstPack.pu8Addr[0]就可以了吗?pstStream->pstPack.pu8Addr[1]不用一起发送吗?
{status=H264SendPacket(pstStream->pstPack.pu8Addr[0],pstStream->pstPack.u32Len[0]);}

因为原来海思的例子是这样的,去掉可以?理解不来啊,望高手指点.
/******************************************************************************
* funciton : save H264 stream
******************************************************************************/
HI_S32 SAMPLE_COMM_VENC_SaveH264(FILE* fpH264File, VENC_STREAM_S *pstStream)
{
    HI_S32 i;
    for (i = 0; i < pstStream->u32PackCount; i++)
    {
        fwrite(pstStream->pstPack.pu8Addr[0],
               pstStream->pstPack.u32Len[0], 1, fpH264File);
        fflush(fpH264File);
        if (pstStream->pstPack.u32Len[1] > 0)
        {
            fwrite(pstStream->pstPack.pu8Addr[1],
                   pstStream->pstPack.u32Len[1], 1, fpH264File);
            fflush(fpH264File);
        }

    }
    return HI_SUCCESS;
}

srde111

0个粉丝

0

问答

0

专栏

0

资料

srde111 2014-12-08 20:47:03
认可0
lz啊,大神啊,受我一拜啊,那个,编好的cpp这个文件怎么才能在他的这个c工程中运行呢?怎么改啊,您当时怎么做的啊,求助啊,搞了好长时间了还是不会。。。:Q 大神求抱大腿。。。。。

srde111

0个粉丝

0

问答

0

专栏

0

资料

srde111 2014-12-08 21:41:08
认可0
大神啊,我用jrtplib总是提示我 error: template with C linkage这个错误,我知道要封装,但是里面很多函数,还有重载,怎么封装啊?我要哭了:'(:'(

史前小虫

0个粉丝

7

问答

0

专栏

0

资料

史前小虫 2014-12-24 20:13:31
认可0
venc主程序是C程序,要怎么调用jrtplib啊???

史前小虫

0个粉丝

7

问答

0

专栏

0

资料

史前小虫 2014-12-24 20:14:17
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=10083&ptid=2950]srde111 发表于 2014-12-8 20:47[/url]
lz啊,大神啊,受我一拜啊,那个,编好的cpp这个文件怎么才能在他的这个c工程中运行呢?怎么改啊,您当时怎 ...[/quote]

你做好了吗?求助

史前小虫

0个粉丝

7

问答

0

专栏

0

资料

史前小虫 2014-12-24 20:15:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=8924&ptid=2950]yuino 发表于 2014-11-8 15:34[/url]
请问lz和版主,下面的函数你只处理这个pstStream->pstPack.pu8Addr[0]就可以了吗?pstStream->pstPack.pu8Add ...[/quote]

你也做实时流吗?新人求助

lingxiao911

0个粉丝

10

问答

0

专栏

0

资料

lingxiao911 2014-12-25 14:48:43
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=10574&ptid=2950]史前小虫 发表于 2014-12-24 20:13[/url]
venc主程序是C程序,要怎么调用jrtplib啊???[/quote]

C 与 C++ 混合编译

yn--69@163.com

0个粉丝

3

问答

0

专栏

0

资料

yn--69@163.com 2015-01-07 17:57:59
认可0
楼主您好看你的分包 val[pos-2]=(NALU & 0x60)|28;
                       val[pos-1]=                                    
应该是val[4]和val[5]啊为什么你的是3和4,你的分隔符也是4字节啊??

suifing

0个粉丝

1

问答

0

专栏

0

资料

suifing 2015-04-21 22:06:35
认可0
请问楼主,是如何将jrtplib移植到海思板子上的呢?
我之前按照网上的移植方法,在海思板子上无法运行jrtplib写的程序。

谢谢!

qn1564670261

0个粉丝

0

问答

0

专栏

0

资料

qn1564670261 2019-12-13 00:47:54
认可0
您好,你是怎么移植jrtp库的
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区