ffmpeg을 이용하여 rtp로 스트리밍 전송하는 부분에 대해서 궁금증이있습니다.
av_read_frame으로 읽어서 av_write_frame을 이용하여 rtp 로 전송할려구 합니다.
rtp로 전송하는데 있어서 address랑 port를 할당하여야 하는데 어떻게 해야 되는지를 모르겠습니다.
AVFormatContext *rtpCtx;
.................
................. //ctx는 input file fomatcontex로 이미 할당됨
URLContext *h;
rtpCtx = av_alloc_format_context();
rtpCtx->oformat = guess_format("rtp",NULL,NULL);
AVStream *vSt = av_new_stream(rtpCtx, 0);
vSt->codec = avcodec_alloc_context();
rtpCtx->nb_streams = 1;
rtpCtx->streams[0] = vSt;
memcpy(vSt, ctx->streams[videoindex], sizeof(AVStream));
vSt->priv_data = NULL;
snprintf(rtpCtx->filename, sizeof(rtpCtx->filename), "rtp://%s:%d",Module_Msg->ip,Module_Msg->port);
printf("rtpCtx->filname [%s]\n",rtpCtx->filename);
if(url_open(&h, rtpCtx->filename, URL_WRONLY)<0){
printf("url open fail\n");
return -1;
}
max_packet_size = url_get_max_packet_size(h);
if(url_open_dyn_packet_buf(&rtpCtx->pb, max_packet_size)<0){
printf("url_open_dyn_packet_buf fail\n");
return -1;
}
if(av_set_parameters(rtpCtx, NULL)<0){
printf("av_set_parameter fail\n");
return -1;
}
av_write_header(rtpCtx);
for
( av_read_frame
av_write_frame)
av_write_trailer;
위 코드는 비디오 스트림만을 뽑아서 rtp를 이용하여 write하는 부분입니다.
위처럼 세팅하니 패킷이 나가지가 않습니다.
av_write_frame으로 rtp전송시 fromatctx 세팅이 위에 처럼 하는게 맞는건지가 궁금합니다.
조언부탁드립니다.
댓글 달기