Швидкий інструмент для створення мініатюр відеогалереї для командного рядка


15

Я використовую gframecatcher для створення мініатюрних відео-галерей, тобто щось подібне:

введіть тут опис зображення

Однак це інструмент графічного інтерфейсу, і я хочу створити рекурсивно галерею для кожного відео в структурі каталогу, тому я шукаю швидкий інструмент командного рядка для цього.

Відповіді:


28

Витягніть знімки зображення (це 100 пікселів у висоту, і зберігайте співвідношення сторін), швидкість ( -r) - за секунду (це дає один кадр кожні ~ 5 хвилин), це також додає часову позначку до вихідного зображення.

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

Потім використовуйте ImageMagickдля створення зображення вашої галереї:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png

7
Ви можете використовувати дроби для курсу ( -r). Це полегшує та точніше вказувати час. 5хв = 300 секунд ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.png.
DutGRIFF

avconvпрацює так само, якщо у вас немає ffmpegдоступних (деякі версії Ubuntu).
Кен Шарп

2
Це працює, але потребує сантехніки через весь відеофайл. superuser.com/questions/538112/… надає кілька прикладів, які намагаються знайти змістовні ескізи, а також уникають необхідності сидіти та обробляти все відео, щоб отримати кілька кадрів.
Скрилар

Це не додає позначення часу до зображення.
Felwit

Як би ви це зробили в пакеті для відео в каталозі?
Пол Джонс

13

Мені подобається використовувати простий у користуванні скрипт bash командного рядка під назвою VCS - Video Contact Sheet. Їх офіційна сторінка: http://p.outlyer.net/vcs/

Його набагато простіше у використанні навіть простіше, ніж GUI

'' Це сценарій bash, призначений для створення аркушів відеоконтакту (попереднього перегляду), також ескізів або попереднього перегляду відео. Будь-яке відео, що підтримується mplayer та ffmpeg, може використовувати цей сценарій. '' Вам потрібно буде мати ffmpegабо mplayerвстановити у вашій системі.

Використання:

vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

Як працює команда

Відредагуйте ім'я вхідного фільму до імені вашого відеофайлу!

  • -U0(немає імені у нижньому колонтитулі - інакше воно відображає ім'я хоста - зауважте, що це нуль, не літера O)

  • -i 1m(встановлює інтервал часу зйомки в хвилинах - у цьому випадку це кожна хвилина - ви також можете використовувати -nзамість цього, який встановлює кількість захоплень, наприклад -n 21, створить 21 зображення, але не використовуйте обох)

  • -c встановлює кількість стовпців (тут це 3 стовпчики)

  • -H 200 -a 300/200 (встановлює розмір і розмір, тому файл не надто великий - здається, ви повинні робити і те, і інше)

  • -o filename.jpg(використовувати .jpgза замовчуванням, як .pngзанадто великий - і змінити ім'я файлу на один на ваш вибір!)


7

Цей, здається, відповідає законопроекту , він безкоштовний і з відкритим кодом і навіть працює в Windows :)

У нього навіть є вдосконалені речі, наприклад, замість того, щоб сліпо підбирати будь-який кадр на певному інтервалі, він може вибирати ті, які є досить близькими, але не виглядають занадто розмитими, тому замість цього:

скріншот

Ви можете передати йому параметр ( -D6), щоб він це зробив :

кращий скріншот

Плюс мені дуже не подобається меж, щоб зображення могли бути трохи більшими.


7

Є рішення з форуму ffmpeg.

Щоб зробити кілька скріншотів і розмістити їх в одному файлі зображень (створюючи плитки), ви можете використовувати відеофільтр плитки FFmpeg, наприклад, такий:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

Це вимагатиме 10 секунд у фільмі, вибирайте кожен 1000-й кадр, масштабуйте його до 320x240 пікселів та створюйте 2x3 плитки у вихідному зображенні out.png.

Оригінальний пост тут - http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597


Також ffmpeg, здається, підтримує "обрізання" з тим же синтаксисом.
деякі ідеї

4

Ось так я обробляю простий аркуш контактів за допомогою AWS EC2 від мого mac.

Крок №1: Створіть екземпляр EC2 у веб-службах Amazon

Я використав:

Amazon Linux AMI 2015.03.1 (HVM), SSD Volume Type - ami-0d4cfd66
t2.medium

Крок №2: Налаштування екземпляра

Це все для запуску з мого mac для зручності, але ви також можете запустити лише команди "sudu su ..." з командного рядка EC2.

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; tar -xf ffmpeg.static.64bit.latest.tar"

Заміна 11.22.33.44 своїм IP2 IP.

Крок №3: Обробіть відео

Надіслати відео:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem pem' /Users/mdouma/Desktop/myVideo.mov ec2-user@11.22.33.44:/home/ec2-user/

Обробіть його на контактному аркуші:

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "rm -f out.png ; ./ffmpeg -ss 00:00:00 -i myVideo.mov -vf 'select=not(mod(n\,1)),scale=113:111,crop=111:111,tile=18x36' out.png"

Змінити / Користувачі / mdouma на ваш локальний корінь Змініть ", 1" на інше число, наприклад, ", 7", якщо ви хочете лише кожен 7-й кадр. Змініть 111 на потрібний розмір

Скопіюйте його назад на мій комп'ютер:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem'  ec2-user@11.22.33.44:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png

Це чудова порада. Зауважте, що sudo suце безцільно.
Кен Шарп

2
Чому ви надсилаєте це на ec2? Чому б просто не запустити його на своєму mac локально? відеофайли можуть бути великими ГБ ...
перевіряли

4

Цей інструмент мені допоміг (2019-02) - і він підтримується. Багато варіантів - сітка, якість, шрифти, кольори, рамка, інтервал, ...

https://github.com/amietn/vcsi

Створіть аркуші відео контактів. Лист відеоконтакту - це зображення, що складається з ескізів відеозапису, розташованих на сітці.

Вам потрібні лише ffmpeg та python.


Це дуже добре - дякую!
Ешлі

1

Пакет 'imagemagick' містить утиліти для подібних матеріалів.

http://www.imagemagick.org/Usage/thumbnails/

Є бібліотеки API, які використовують imagemajick і для багатьох мов .


Яка була б відповідна команда?
студент

convertє, мабуть, найбільш загальним. Подивіться на розділ, який очолює створення загальних мініатюр на першій сторінці, на яку я посилався.
goldilocks

1

Totem - відеоплеєр за замовчуванням для 14.04 та деякі більш ранні версії Ubuntu - має опцію меню з простими опціями (у меню Правка, "Створити галерею знімка екрана ..."). Існує також еквівалент (ish) командного рядка під назвою "тотем-відео-мініатюра", який має довідкову сторінку, яка говорить вам, як ним користуватися; Я написав простий скрипт bash, який використовував вихід з команди find (дбаючи про те, щоб не розділяти файли з пробілами в іменах), щоб автоматично генерувати галерею скріншотів мініатюр (або контактний аркуш, як також зазначено вище) для будь-яких файлів вище певного розмір у каталозі, у якого його ще не було.

Я міг би завантажити його в свій github під ~ jgbreezer, якщо хтось захотів полювати на нього. Хоча рішення, що використовують ffmpeg та інші речі, можуть бути більш гнучкими та надійними; Здається, я отримую помилки від команди totem про те, що не знаходити певні кадри, але це, здається, працює все-таки більшу частину часу.


0

Я хотів те ж саме, і Google в кінцевому підсумку використовував ffmpeg та imagemagick. НЕ "швидкий" ІМХО. Тоді знайшли скрипт-баш на ім'я SlickSlice (востаннє оновлений 2008 рік, але працював ідеально станом на вчора). Встановив його та налаштував на свій смак, використовуючи файл конфігурації та сам сценарій. Сценарій, до речі, використовує ImageMagick і MPlayer.

Я зробив детальну інструкцію та налаштування після успішного використання. Після успішного встановлення ви можете генерувати мініатюру часової шкали відео з такою ж простою, як і команда:
slickslice -x "InputFile.mp4"(за замовчуванням 4 стовпчика х 15 рядків) або
slickslice -x "InputFile.mp4" -S 6x10(для 6 стовпців х 10 рядків).

Він виводить так, як SLICKSLICED_InputFile.mp4.jpegя налаштовував його на створення InputFile.mp4-screen.jpeg, редагуючи сам сценарій bash.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.