ffmpeg объединяет два видеофайла с одинаковым соотношением сторон, а fps по-прежнему дает пропущенный вывод - PullRequest
0 голосов
/ 11 января 2019

Мне нужно объединить два клипа, которые имели следующую кодировку

Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 100 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default)

Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 261 kb/s, 23.98 fps, 23.98 tbr, 48k tbn, 47.95 tbc (default)

с использованием обычного concat метода портит поток видео второго клипа

ffmpeg -y -f concat -safe 0 -i filesname.txt -vcodec copy -acodec copy 1.mp4

Какую требуемую кодировку мне нужно применить к первому клипу, чтобы его было легко соединить с первым?

Примечание: Первый клип имел следующие характеристики, и я закодировал его, используя следующую команду, чтобы соответствовать спецификациям второго клипа.

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 61 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default)

ffmpeg -i 1_original.mp4 -c:v libx264 -preset slow -profile:v baseline -vf scale=320x240 -r 23.98 -c:a aac -ar 44100 1.mp4

1 Ответ

0 голосов
/ 11 января 2019

Задача

Ваша временная база варьируется между входами, но временная база должна быть одинаковой для объединения. Второй вход имеет частоту кадров 24000/1001. (К сожалению, вывод консоли показывает округленное значение, но вы можете сослаться на ffprobe -v error -show_streams input.mp4). Однако вы перекодировали другое видео до частоты кадров 23,98. Это привело к разнице во времени 19184 трлн против 48 тыс тн

Решение

Используйте -r 24000/1001 (или псевдоним -r ntsc-film):

ffmpeg -i 1_original.mp4 -c:v libx264 -preset slow -profile:v baseline -vf setsar=1 -r 24000/1001 -c:a aac -ar 44100 1.mp4
  • Я заменил фильтр масштаба на setsar , чтобы исправить разницу в соотношении сторон, хотя эта разница не остановит демультиплексор concat.

  • Если ваши частоты кадров на самом деле одинаковы, но временная шкала отличается, вы можете вместо этого сделать ремукс с -c copy и -video_track_timescale. Есть несколько примеров использования этой опции на этом сайте.

...