Удаление дублирующихся кадров с помощью FFmpeg - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть файл mp4, samp1.mp4, в котором есть дубликаты кадров, и я попытался использовать mpdecimate, чтобы удалить их.Я использовал командную строку FFmpeg

ffmpeg -i samp1.mp4 -vf mpdecimate out3.mp4 > out3.txt 2>&1

Но выходной файл out3.mp4 по-прежнему содержит дубликаты кадров.

Команда создает текст:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'samp1.mp4':
  Metadata:
    major_brand     : M4V 
    minor_version   : 1
    compatible_brands: M4V mp42isom
    creation_time   : 2018-12-26T20:38:35.000000Z
  Duration: 00:00:04.77, start: 0.000000, bitrate: 4495 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 4476 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2018-12-26T20:38:35.000000Z
      handler_name    : Mainconcept MP4 Video Media Handler
      encoder         : AVC Coding

Output #0, mp4, to 'out3.mp4':
  Metadata:
    major_brand     : M4V 
    minor_version   : 1
    compatible_brands: M4V mp42isom
    encoder         : Lavf58.25.100
    Stream #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1280x720, q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc (default)
    Metadata:
      creation_time   : 2018-12-26T20:38:35.000000Z
      handler_name    : Mainconcept MP4 Video Media Handler
      encoder         : Lavc58.42.104 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=   57 fps=0.0 q=29.0 size=       0kB time=00:00:00.13 bitrate=   2.9kbits/s dup=35 drop=0 speed=0.262x    
frame=   87 fps= 75 q=29.0 size=     256kB time=00:00:01.13 bitrate=1848.9kbits/s dup=56 drop=0 speed=0.978x    
frame=  117 fps= 65 q=29.0 size=     256kB time=00:00:02.13 bitrate= 982.2kbits/s dup=74 drop=0 speed=1.19x    
frame=  142 fps= 62 q=29.0 size=     256kB time=00:00:02.96 bitrate= 706.3kbits/s dup=88 drop=0 speed=1.29x    
frame=  142 fps= 47 q=-1.0 Lsize=     720kB time=00:00:04.63 bitrate=1271.0kbits/s dup=88 drop=0 speed=1.52x    

=================== Последние пять строк вывода интересны.Первая строка

frame=   57 fps=0.0 q=29.0 size=       0kB time=00:00:00.13 bitrate=   2.9kbits/s dup=35 drop=0 speed=0.262x   

, кажется, говорит, что кадр 57 был дубликатом, общее количество найденных дубликатов сейчас = 35, а общее количество пропущенных кадров равно 0.

1)правильно, 2) почему не было пропущено ни одного кадра на одной из строк, и 3) почему выходной файл все еще содержит дубликаты?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 27 декабря 2018

MP4, по умолчанию, является мультиплексором с постоянной частотой кадров в ffmpeg, поэтому промежутки времени, созданные mpdecimate, будут подключены к повторяющимся кадрам.

Решение состоит в том, чтобы установить режим переменной частоты кадров.

ffmpeg -i samp1.mp4 -vf mpdecimate -vsync vfr out3.mp4 > out3.txt 2>&1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...