Я использую FFmepg для перекодирования видео m2v
в mp4
x265
.
Исходным видео является NTSC DVD с частотой кадров 29.97
.
VLC и Windows свойства оба дают 29.97
, но FFprobe говорит, что r_frame_rate
равно 59.94
.
Свойства файла FFprobe:
codec_name=mpeg2video
codec_time_base=1001/30000
r_frame_rate=60000/1001
avg_frame_rate=30000/1001
Проблема
Если не использовать параметры частоты кадров FFmpeg, частота кадров нового mp4
будет 59.94
.
С опциями частоты кадров он заканчивается на 29.97
как у источника.
-x265-params "fps=30000/1001"
-framerate 30000/1001
-r 30000/1001
Удаление дубликатов кадров
Я получил предупреждение More than 1000 frames duplicated
, вероятно, из-за преобразования 60000/1001
в 30000/1001
. Хотя на самом деле это не может быть 59.94 fps
, потому что источником является NTSC DVD.
VSync
-vsync 0
удалил дублирующиеся кадры, но видео было 23.94 fps
.
mpdecimate
-vf "mpdecimate, fps=30000/1001"
Удалил дублирующиеся кадры и дал правильный 29.97 fps
, но выглядит более изменчиво. Может быть, эти дубликаты были нужны?
Настройки FFmpeg
ffmpeg -y
-fflags +genpts
-i input.m2v
-c:v libx265
-preset medium -x265-params "crf=20:rc-lookahead=18:fps=30000/1001"
-pix_fmt yuv420p
-tune grain -profile:v main -level 4.1
-copyts
-avoid_negative_ts make_zero
-vf "mpdecimate, fps=30000/1001"
-threads 0
output.mp4
Вопросы
Как правильно преобразовать это значение в x265
mp4
при сохранении исходной частоты кадров?
Является ли частота кадров источника DVD 29.97
или 59.94
?
Должен ли я удалять дублирующиеся кадры, и это повреждает видео?