Я прочитал предыдущую нить, и это ответ от Nishant, FFMPEG: Dynamic change of bit_rate for VideoFFmpeg: битрейта изменение динамически
avcodec_init();
avcodec_register_all();
codec = avcodec_find_encoder(CODEC_ID_H263);
c = avcodec_alloc_context();
picture= avcodec_alloc_frame();
c->bit_rate = bitrate;
c->width = w;
c->height = h;
c->time_base= (AVRational){1,framerate};
c->pix_fmt = PIX_FMT_YUV420P;
avcodec_close(c);
av_free(c);
И это мой код:
if(previous_BR != cur_BR){
previous_BR = cur_BR;
AVCodecContext* new_c = av_mallocz(sizeof(AVCodecContext));;
avcodec_copy_context(new_c, ost_table[0]->st->codec);
avcodec_close(ost_table[0]->st->codec);
av_free(ost_table[0]->st->codec);
avcodec_init();
avcodec_register_all();
ost_table[0]->enc = avcodec_find_encoder(CODEC_ID_H264);
new_c = avcodec_alloc_context3(ost_table[0]->enc);
ost_table[0]->st->codec = new_c;
AVFrame *picture= avcodec_alloc_frame();
new_c->bit_rate = cur_BR;
new_c->width = 352;
new_c->height = 288;
int framerate = 30;
new_c->time_base= (AVRational){1,framerate};
new_c->pix_fmt = PIX_FMT_YUV420P;
new_c->codec_type = AVMEDIA_TYPE_VIDEO;
new_c->codec_id = CODEC_ID_H264;}
Я пытался добавить мой код для transcode(), но ffmpeg выходит после того, как он проходит через мои коды. что-то не так с моими кодами? или что еще я должен добавить?
Я поместил код после «redo:», так что он будет рекурсивно возвращаться назад. , пожалуйста, помогите !!
спасибо.
Привет, спасибо за ответ, я просто хочу знать, работает ли вышеперечисленный выше код, где я должен поместить их в ffmpeg.c, или мне нужно использовать его в своем приложении. Однако я предпочитаю просто модифицировать существующий файл ffmpeg.c. –
Зависит. Если это дополнение к ffmpeg, вам нужно вставить код ffmpeg и определить его прототип в файлах заголовков. Если вам не нужно делать отдельное приложение и связывать его с libavcodec (и другими библиотеками ffmpeg). Также вы должны поставить условие обработки ошибок для битрейта. Вы не можете установить бит, который не может быть достигнут CODEC_ID_H263 (h.263). – Raulp
Привет, я загрузил свои коды и, пожалуйста, просмотрите все, что мне нужно изменить, чтобы оно работало? это нормально, чтобы поставить его после повтора:? –