-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
您好 能简单提供个调用demo吗 #1
Comments
我这边解码是使用如下:
|
收到 谢谢 还想问下你的jetpack是哪个版本呢 |
jetpack 4.4,支持NX的版本。 |
我想问下 这里我不调用jmi::nvjmi_decoder_retrieve_frame_data这个接口 一直在回调做一件事 |
是的,如果解码后的缓存里已经放满了图像数据,不及时取出,后续解码后的数据就无法放入,会阻塞在那里。 |
OK |
这里随便new一块内存就行。 |
好的 如果缓存满了就等待消费 不消费的话意味着后面的数据会丢掉是吧 不会像队列那样先进先出去刷掉前面的数据吗这个设计 |
这个不会刷掉,需要自行取出队列里的数据。一般put packet后,就需要尝试取出解码后的数据。 |
您好 我写了一个rtsp的客户端,解析rtsp码流 回调出来的数据写成文件再用官方00_video_decode解码 没有问题
但是调用您封装的接口的时候 总是报段错误,是不是我哪里调用不对呢 gdb调试报错信息如下:
写入数据长度=298781
fps=0
video_type=51
height=0
width=0
frame_timestamp_usec=0
channelid=0
payload_size=298781
pts=0
ctx[0]=0x55555979d0
Thread 12 "test" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fa37fdf30 (LWP 4923)]
0x0000007fb7f73024 in jmi::nvjmi_decoder_put_packet (ctx=0x55555979d0, packet=0x0) at nvjmi_dec.cpp:485
warning: Source file is more recent than executable.
485 if (packet->payload_size == 0){
(gdb) bt
#0 0x0000007fb7f73024 in jmi::nvjmi_decoder_put_packet (ctx=0x55555979d0, packet=0x0) at nvjmi_dec.cpp:485
#1 0x0000005555556594 in CallBackStreamFun(void*, int*, int, int, char*, RTSP_FRAME_INFO*, void*) ()
#2 0x0000007fb7f2a5e4 in CRtspParent::RecvData (this=this@entry=0x5555598fc0, pCRtp=0x5555c30030, pUserData=pUserData@entry=0x5555598fc0)
at /home/pes/mxj/data/nfs/mahxn0/workspace/multimedia_api/librtspclient/src/CRtspParent.cpp:1142
#3 0x0000007fb7f2b500 in CRtspParent::RecvDataThread (pUserData=pUserData@entry=0x5555598fc0)
at /home/pes/mxj/data/nfs/mahxn0/workspace/multimedia_api/librtspclient/src/CRtspParent.h:68
#4 0x0000007fb7f28db8 in rtsp_StartTask (p=) at /home/pes/mxj/data/nfs/mahxn0/workspace/multimedia_api/librtspclient/src/CRtspParent.cpp:96
#5 0x0000007fb79df088 in start_thread (arg=0x7fffffecbf) at pthread_create.c:463
#6 0x0000007fb7cd94ec in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
(gdb)
原调用代码如下:
FILE *fp4 = NULL;
int CallBackStreamFun(Rtsp_Client_Handle handle, int *_channelPtr, int _mediaType, int bufflen, char *pBuf, RTSP_FRAME_INFO *_frameInfo, void *userPtr)
{
int channel_id = *_channelPtr;
printf("写入数据长度=%ld\n", (unsigned long)bufflen);
printf("fps=%d\n",_frameInfo->video_fps);
printf("video_type=%d\n", _frameInfo->video_type);
printf("height=%d\n", _frameInfo->video_height);
printf("width=%d\n", _frameInfo->video_width);
printf("frame_timestamp_usec=%d\n", _frameInfo->frame_timestamp_usec);
printf("channelid=%d\n", channel_id);
}
int CallBackStreamFun1(Rtsp_Client_Handle handle, int *_channelPtr, int _mediaType, int bufflen, char *pBuf, RTSP_FRAME_INFO *_frameInfo, void *userPtr)
{
if (NULL == fp4)
{
fp4 = fopen("../data/out.264", "wb");
int ret = fwrite(pBuf, 1, bufflen, fp4);
}
else
{
int ret = fwrite(pBuf, 1, bufflen, fp4);
}
return 0;
}
//状态回调
int StatueCallBack(int iRecvSum, int iRecvLostSum, int iNowStreamFlag, void *pUserData);
int StatueCallBack(int iRecvSum, int iRecvLostSum, int iNowStreamFlag, void *pUserData)
{
printf(">>>>>> pUserData[%s] iRecvSum[%d] iRecvLostSum[%d] iNowStreamFlag[%d] DisConnectStatue: ",
pUserData, iRecvSum, iRecvLostSum, iNowStreamFlag);
printf("\n");
}
int main()
{
int Ret;
nvJmiCtxParam ctx_param;
ctx_param.coding_type = NV_VIDEO_CodingH264;
ctx_param.resize_height = 1080;
ctx_param.resize_width = 1920;
//开始解析码流信息
//步骤1,初始化
Ret = RtspClient_Init_V3(16000,NULL,0);
if (Ret < 0)
{
printf("initial rtspclient_sdk failed!\n");
}
//步骤2,打开码流 创建解码器
}
The text was updated successfully, but these errors were encountered: