Всем доброго времени суток, столкнулся с такой проблемой, в приложении получаю данные с камер в виде кадров, пытаюсь реализовать многоканальный стрим изображений через rtsp, на каждый канал выделяю отдельную функцию для стрима с разными названиями каналов и разными портами, в результате все изображения попадают в один стрим, в следствии чего отображается каша. каналы воспроизвожу при помощи ffplay функция для стрима
AVCodecID codecID = AV_CODEC_ID_H264;
AVCodec* codec;
AVCodecContext* codecCtx;
AVPixelFormat pixfmt = AV_PIX_FMT_GRAY8;
codec = avcodec_find_encoder(codecID);
codecCtx = avcodec_alloc_context3(codec);
codecCtx->width = HorFrameSize;
codecCtx->height = VerFrameSize;
//codecCtx->time_base = (AVRational ) { 1, 25 };
codecCtx->time_base.num = 1;
codecCtx->time_base.den = 25;
codecCtx->gop_size = 25;
codecCtx->max_b_frames = -1;
codecCtx->pix_fmt = AV_PIX_FMT_YUV420P;
codecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
if (codecID == AV_CODEC_ID_H264)
{
av_opt_set(codecCtx->priv_data, "preset", "ultrafast", 0);
av_opt_set(codecCtx->priv_data, "tune", "zerolatency", 0);
}
avcodec_open2(codecCtx, codec, NULL);
//Init the Frame containing our raw data
AVFrame* frame;
frame = av_frame_alloc();
frame->format = pixfmt;
frame->width = codecCtx->width;
frame->height = codecCtx->height;
av_image_alloc(frame->data, frame->linesize, frame->width, frame->height, codecCtx->pix_fmt,32);
//Init the format context
AVFormatContext* fmtCtx = avformat_alloc_context();
AVOutputFormat* format = av_guess_format("rtsp", NULL, NULL);
avformat_alloc_output_context2(&fmtCtx, format, format->name, "rtsp://192.168.138.102:8550/0");
avio_open(&fmtCtx->pb, fmtCtx->filename, AVIO_FLAG_WRITE);
//Configure the AVStream for the output format context
struct AVStream* stream = avformat_new_stream(fmtCtx, codec);
avcodec_parameters_from_context(stream->codecpar, codecCtx);
stream->time_base.num = 1;
stream->time_base.den = 25;
/* Rewrite the header */
avformat_write_header(fmtCtx, NULL);
SwsContext * ctx = sws_getContext(HorFrameSize, VerFrameSize, pixfmt, HorFrameSize, VerFrameSize,AV_PIX_FMT_YUV420P, 0, 0, 0, 0);
QImage image ;
AVPacket pkt;
int j = 0;
for(int i = 0; ; i++)
{
fflush(stdout);
//av_read_frame (fmtCtx,&pkt);
av_init_packet(&pkt);
pkt.data = NULL; // packet data will be allocated by the encoder
pkt.size = 0;
image.loadFromData ((const uchar*)Image,(int)ImageSize);
uint8_t* rgbData = image.bits();
uint8_t * inData[1] = { rgbData }; // RGB24 have one plane
int inLinesize[1] = { HorFrameSize }; // RGB stride
sws_scale(ctx, inData, inLinesize, 0, VerFrameSize, frame->data, frame->linesize);
/* Which frame is it ? */
frame->pts = i;
/* Send the frame to the codec */
avcodec_send_frame(codecCtx, frame);
/* Use the data in the codec to the AVPacket */
switch(avcodec_receive_packet(codecCtx, &pkt))
{
case AVERROR_EOF:
qDebug()<<"Stream EOF\n";
break;
case AVERROR(EAGAIN):
qDebug()<<"Stream EAGAIN\n";
break;
default:
printf("Write frame %3d (size=%5d)\n", j++, pkt.size);
av_packet_rescale_ts(&pkt, codecCtx->time_base, stream->time_base);
/* Write the data on the packet to the output format */
av_interleaved_write_frame(fmtCtx, &pkt);
/* Reset the packet */
av_packet_unref(&pkt);
break;
}
usleep(1e6/25);
}
// end
avcodec_send_frame(codecCtx, NULL);
//Free everything
av_free(codecCtx);
av_free(fmtCtx);
в чем может быть проблема?
Виртуальный выделенный сервер (VDS) становится отличным выбором
ЗдравствуйтеЕсть select в form и div который должен принять ответ от сервера
Добрый, день помогите пожалуйста, отправляю на сервер комментарий пользователя, средствами ajax, скрипту answerphp
В общем суть следующая, писал лендинг на ноутеВ последствии, после переноса исходников на пк при открытии сайта обнаружил, что шрифты не отображаются...