JPG в MP4 с использованием ffmpeg?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 JPG в MP4 с использованием ffmpeg?

Сообщение Anonymous »

У меня есть приложение, которое генерирует файлы JPG на фиксированном FPS (в настоящее время 40). Каждую 1 минуту я запускаю скрипт оболочки (через Cron), который запускает следующую команду (есть некоторые другие, но это главная команда): < /p>

Код: Выделить всё

ffmpeg -framerate 40 -i ${i}'/img%04d.jpg' -r 40 -c:a aac -vcodec libx264 -vf format=yuv420p ${mp4file}
, где $ {i} является каталогом, а $ {mp4file} - файл вывода MP4.
Это объединяет все файлы JPG в один контейнер MP4 и работает очень хорошо. Тем не менее, я сделал это только для тестирования, чтобы доказать концепцию, и я хотел бы выполнить одну и ту же программно. Class = "Lang-None PrettyPrint-Override">avformat_alloc_output_context2(...);
avcodec_find_encoder(AV_CODEC_ID_H264);
avformat_new_stream(...);
avcodec_alloc_context3(...);
av_opt_set(...); //Setting a preset here to fast
av_opt_set_int(...); //Setting CRF here
avcodec_open2(...);
av_frame_alloc();
av_frame_get_buffer(mContext.frame, 0);
avcodec_parameters_from_context(...);
sws_getContext(...);
av_dump_format(...);
avio_open(...);
av_dict_set(...); //Setting movflags, Author, etc.
avformat_write_header(...);
av_frame_make_writable(...);
sws_scale(...);
avcodec_send_frame(...); //This is where the raw data is encoded
//Flush Packets (in a loop)
avcodec_receive_packet(...);
av_packet_rescale_ts(...);
av_interleaved_write_frame(...);
av_packet_unref(...);
av_write_trailer(...);
avio_close(...);
< /code>
Мой вопрос: если у меня уже сгенерированы файлы JPG, то я немного не уверен, что мне нужно сделать, чтобы вывести их в контейнер MP4. Я предполагаю, что мне не нужно выполнять следующее?avcodec_send_frame(...); //This is where the raw data is encoded
//Flush Packets (in a loop)
avcodec_receive_packet(...);
av_packet_rescale_ts(...);
av_interleaved_write_frame(...);
< /code>
Я понимаю, что файлы JPG уже кодированы, и поэтому не нужно снова кодировать? Я прочитал различные примеры проектов (mux.c, demux.c и т. Д.) На сайте FFMPEG, но я изо всех сил пытаюсь собрать два и два. Есть решение через библиотеку OpenCV, но я хотел бы придерживаться FFMPEG, если это возможно.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ing-ffmpeg
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»