Похожие вопросы

Создание изображения каждые XX секунд видео [FFMPEG]
ffmpeg ALSA захват аудио не работает
ffmpeg:.ogv to.mp4 - аудио видео не синхронизировано
Как использовать ffmpeg для захвата снимка потока HLS/rtsp?
Конвертирование 2 channel stereo g729 в индивидуальный одноканальный pcm кодированный файл
Изменения частоты кадров в видео, без перекодирования
Разделение аудиопотока с помощью FFmpeg
Сделать ffmpeg цикл видео бесконечно во время потоковой передачи
Конвертируйте видео и аудио дорожки только с помощью ffmpeg
Преобразование видео в прозрачный с помощью ffmpeg
Создаваемые пользователем хромакей композитные видео с FFMPEG / AVCONV
Как использовать ffmpeg для добавления 3D метаданных в полнокадровое видео SBS без повторного кодирования?
ffmpeg: как правильно разместить несколько наложений и затухание верхнего
Перекодируйте HLS m3u8 в MP4 и включите текстовую дорожку
Преобразование видео останавливается во время преобразования.avi movie to 3GP использование ffmpeg

Получить список I-кадров в видео в FFMPEG / Python

Я пытаюсь выбрать скажем 10 кадров из данного видео, возможно, с наибольшим разнообразием и сюжеты. Хотелось бы поэкспериментировать с различными сценариями подбора, но хорошо, что понятие I-frame по своей сути означает изменения сцены! Поэтому я хотел бы получить I-кадров. Но, возможно, есть много I-кадров, поэтому, вероятно, мне придется их попробовать.

Как я могу получить список всех I-кадров frame_number в видео в FFMpeg или Python? Я хотел бы использовать список для выбора только 10 из них и сохранить их как PNG/JPEG.

5
задан Tina J
источник

3 ответов

вывод всех i кадров в формате PNG.

ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png

кредит этому комментарию похожий superuser.com вопрос. как извлечь все ключевые кадры из видеоклипа?

надеюсь, что это поможет. Овации.

Ian

1
отвечен iangetz 2018-08-02 23:29:14
источник

это похоже на проблему X / Y, поэтому я предложу несколько разных команд:

список метки

если вы хотите вывести список меток для каждого кадра:

ffprobe -v error -skip_frame nokey -show_entries frame=pkt_pts_time -select_streams v -of csv=p=0 input
0.000000
2.502000
3.795000
6.131000
10.344000
12.554000

Примечание -skip_frame nokey.

выберите фильтр

другой метод заключается в использовании выберите фильтр С scene возможность вывода миниатюр:

ffmpeg -i input -vf "select=gt'(scene,0.4)',scale=160:-1" -vsync vfr %04d.png
1
отвечен LordNeckbeard 2018-08-03 19:02:00
источник

получение информации от здесь, Я был в состоянии сделать это с ffprobe:

def iframes():
    if not os.path.exists(iframe_path):
        os.mkdir(iframe_path)
    command = 'ffprobe -v error -show_entries frame=pict_type -of default=noprint_wrappers=1'.split()
    out = subprocess.check_output(command + [filename]).decode()
    f_types = out.replace('pict_type=','').split()
    frame_types = zip(range(len(f_types)), f_types)
    i_frames = [x[0] for x in frame_types if x[1]=='I']
    if i_frames:
        cap = cv2.VideoCapture(filename)
        for frame_no in i_frames:
            cap.set(cv2.CAP_PROP_POS_FRAMES, frame_no)
            ret, frame = cap.read()
            outname = iframe_path+'i_frame_'+str(frame_no)+'.jpg'
            cv2.imwrite(outname, frame)
        cap.release()
        print("I-Frame selection Done!!")


if __name__ == '__main__':
    iframes()
0
отвечен Tina J 2018-08-03 15:22:35
источник

Другие вопросы ffmpeg iframe python video video-encoding