Я намагаюся витягти ключові кадри з відеокліпу. Я спробував таку команду, але вона витягує всі кадри.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Я намагаюся витягти ключові кадри з відеокліпу. Я спробував таку команду, але вона витягує всі кадри.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Відповіді:
Ви можете зробити це простіше , використовуючи -skip_frameбез необхідності selectвідеофільтру:
ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg
-threads 1, порівняно з типовим, -threads autoце робить cropdetectграфік фільтру ( ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null) 2х настільки ж швидким у моїй системі (від 60-х до 30-х)!
Приклад використання selectта scaleфільтрів:
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg
Кілька порад:
Фільтри не повинні надходити перед -iопцією, оскільки вони є вихідною опцією. Я не знаю, звідки саме ви отримали команду, але PICT_TYPE_Iне існує - так і має бути I.
У scaleфільтрі ви можете замінити 73або 41примусити фільтр автоматично обчислити ширину або висоту, щоб зберегти співвідношення сторін: наприклад, scale=73:-1або scale=-1:41. Це запобігає розтягуванню або розсіченню, що може бути результатом "примусового" масштабування.
Якість виводу можна контролювати за допомогою -qscale:v(або псевдоніму -q:v). Ефективний діапазон - це лінійна шкала від 2 до 31, а нижче значення - вища якість.
Щоб ваш ffmpegдозвіл на фільтр до введення вказував мені, що він може бути застарілим. Завантажте нещодавню статичну збірку для вашої операційної системи або побудуйте її самостійно відповідно до посібників з компіляції, якщо вищезгадане не працює.
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
якщо це помилки:
Варіант vf (встановити відеофільтри) не можна застосувати до вхідного url 1508.mp4 - ви намагаєтесь застосувати параметр введення до вихідного файлу або навпаки. Перемістіть цю опцію перед тим, до якого файла належить. Помилка аналізу параметрів вхідного файлу 1508.mp4. Помилка відкриття вхідних файлів: недійсний аргумент
ви можете це зробити:
ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I) -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg
== --------------------------------------------
Параметри "-i" заздалегідь