Open Devyatyi9 opened 5 months ago
Полагаю нужно получать битрейт (с помощью ffprobe) и далее указывать его для ffmpeg при конвертации в avi, но возможно ещё дело в каком-то сжатии.
Параметр битрейта для видео -b:v
и для аудио -b:a
.
Например -b:v 2M
или -b:a 128k
Заюзал параметры:
"D:\ProjectsD\ffmpeg\bin\ffmpeg.exe" -i "C:\Users\User\Projects\Eventurika-Honkai-Impact-Translation\usm_builder_input/7.3_MainLine_CG05_JP_10000_e80755901f2f71bf5ee16c8bdb37f19b.m2v" -i "C:\Users\User\Projects\Eventurika-Honkai-Impact-Translation\usm_builder_input/7.3_MainLine_CG05_JP_10000_e80755901f2f71bf5ee16c8bdb37f19b.hca" -c:v copy "C:\Users\User\Projects\Eventurika-Honkai-Impact-Translation\usm_builder_temp/7.3_MainLine_CG05_JP_10000_e80755901f2f71bf5ee16c8bdb37f19b.avi" "C:\Users\User\Projects\Eventurika-Honkai-Impact-Translation\usm_builder_temp/7.3_MainLine_CG05_JP_10000_e80755901f2f71bf5ee16c8bdb37f19b.wav" -y
-c:v copy
и это всё исправило (качество изображения)
-с это codec
Правда на выходе получает вместо фиксированного, вариативный фреймрейт, но это общий фреймрейт, для видео почему-то выставлено 50фпс, и указано что оригинальный фреймрейт 25. (нужно посмотреть лог выше)
Также почему-то добавляется аудио дорожка, хотя параметр копирования указан только для видео и в оригинальном видео нет звука, только в hca, возможно нужно было указывать его в конце, если это вобще влияет.
Я бы понял если бы там было -c:av
Вот это кстати полезно будет прочесть, стопка коротких простых примеров
tbn - временная база (метка времени per second) AVStream (аудио/видео потока), которая пришла из контейнера (взятая из входного файла, уведомление-извещение - notification)... Time Base Notification tbc - временная метка AVCodecContext используемая для кодека конкретного потока (аудио или видио) - Time Base Сorrection (или Codec,Context..?)... tbr - предполагаемая метка времени, взятая из потока в виде пользовательского значения, установленного самим юзером. Показывается для того, чтобы пользователь мог видеть - установленную частоту кадров в секунду... Time Base R(?...Rate...?) или..? To Be Record ("Будет записано", - известный термин)...
Пока что в данный момент к параметру копирования видеокодека (-c:v copy) можно добавить получение фпс m2v файла через ffprobe, перед конвертацией в avi, чтобы хотя бы фпс был корректным (с усреднённым битрейтом ещё не придумал что делать используя лишь команды ffmpeg/ffprobe (есть какие-то варианты, но там нужно пофреймово анализ делать).
-c:v copy
- используем т.к. это ускорит процесс. Но тогда появятся баги с фреймрейтом. Предлагаю использовать: -vsync 2 -r МАКС_FPS
, где МАКС_FPS нужно брать из m2v файла.
Реализовываю это сейчас
Все еще не идеально) качество меняется, особенно оттенки. Слева оригинальное (доставал через vgmtoolbox, потом вытягивал первый фрейм с помощью potplayer), справа после добавления ру сабов.
Не уверен связано ли это с уменьшением максимального битрейта после кодирования в usm формат.
Для проверки изменения разных цветов думаю предложить сделать какое-то тестовое видео. Можно даже два. Одно с полной статикой, другое с динамикой (либо какие-то другие варианты, как заглушка для tv например). В кадре цветовой круг, во втором видео его можно было бы вращать, либо как-то ещё двигать в разные стороны/наклонять.
Подозреваю что проблема у кодека именно в кодировании красного спектра Возможно потребуется какая-то корректировка цветового профиля
https://community.adobe.com/t5/after-effects/colour-changes-on-h-264-adobe-media-encoder/m-p/12161312 https://www.reddit.com/r/editors/comments/njpir2/how_to_fix_pixelated_red_text_on_an_h264_export/ https://www.reddit.com/r/VegasPro/comments/x0air5/utilize_h264265s_chroma_subsampling_444_mode/
Кстати о тестовых видео, можно попробовать эти (сурс в описании): https://www.youtube.com/watch?v=mCiabWdtM34 https://www.youtube.com/watch?v=QhZz62bQ_Zk
PS надо бы поглядеть что там за параметры такие использовали
Решил посмотреть снова сэмпл для сравнения
Ну, вроде тоже самое в m2v Если не считать Color range: Limited и Color primaries
Вот ещё по поводу цвета Там же ссылаются на эту статью как источник Но Энкодер в любом случае использует BT.601 (который рассчитан на 720p) https://en.wikipedia.org/wiki/Rec._601 https://en.wikipedia.org/wiki/Chroma_subsampling#4:2:2
$"-i \"{videoFilePath}\" -i \"{audioFilePath}\" \"{outputVideoFilePath}\" \"{outputAudioFilePath}\" -y"
original m2v vs converted avi