#c #ffmpeg #transcoding
#c #ffmpeg #транскодирование
Вопрос:
Я собираюсь сделать конвертер в h.265 с помощью ffmpeg на основе документации: http://www.ffmpeg.org/doxygen/trunk/transcoding_8c-example.html Я хочу добавить информацию о прогрессе, но я понятия не имею, какое число я могу использовать, чтобы показать это, например, в%. Пожалуйста, помогите. 🙂
Ответ №1:
Как насчет предложения нескольких вариантов с выбором с аргументом? Я думаю, что прошедшее время и оставшееся расчетное время более показательны, чем% — например, для того, чтобы оставить машину или окно для работы и вернуться, чтобы проверить его позже.
Кроме того, текущая частота кадров преобразования наводит на размышления, в конечном итоге она дает подсказки для настройки битрейта и т. Д., Если он слишком медленный.
Таким образом, вы можете измерить время кодирования до сих пор и попытаться оценить частоту обработки кадров и сколько осталось.
сам ffmpeg отображает текущее время или текущий кадр из обработанного видео и продолжительность видео.
Комментарии:
1. Спасибо за ответ 🙂 Ваше предложение хорошее, но я хочу%, потому что в конце я хочу создать индикатор выполнения. Например, соотношение между текущим временем / продолжительностью будет хорошим или текущим кадром / количеством кадров. Насколько я знаю, невозможно получить «количество кадров» видеопотока в ffmpeg. Итак, я могу сделать это к текущему времени, но у меня проблема, как получить это число во время процесса кодирования.
2. IMO это другой вопрос, а не какие единицы использовать, как указано, а как это сделать с помощью примера кода. Вы также можете создать индикатор выполнения. В main: while (ret >= 0) { ret = avcodec_receive_frame(stream-> dec_ctx, stream-> dec_frame); (…) ret = filter_encode_write_frame(stream-> dec_frame, stream_index); если (ret < 0) goto end; } Подсчитайте кадры. Один из способов получить продолжительность (если вы не можете найти функцию в заголовках) — вызвать командную строку ffmpeg или ffprobe и выполнить выборку выходных данных.