Зробіть ескіз із відео


11

Як можна зробити простий знімок із відео. Переважно з командного рядка?

Ідея: зробіть 9 знімків за 9 рівних розміщених (на часовій шкалі) разів і збережіть їх у форматі JPG

Приклад:

Movie length = 10 min
T1= snapshot of 1 min
T2= snapshot of 2 min
......
T9= snapshot of 9 min
   |   |
 T1| T2| T3
---+---+---
 T4| T5| T6
---+---+---
 T7| T8| T9
   |   |

Яка найкраща програма для цього? Чи є програми з відкритим кодом?

Відповіді:


5

ffmpeg - відмінний інструмент з відкритим кодом для маніпулювання відео, включаючи вилучення кадрів.

Для вилучення одного кадру з певної часової позначки ви можете використовувати команду типу

ffmpeg -i video.avi -r 1  -t 00:01:00 -f image2 image%05d.png

-r - кадр. Ви також можете використовувати такі команди

ffmpeg -i video.avi -r 1/1440 -f image2 image%05d.png

отримувати один кадр кожні одну хвилину (припускаючи відео 24FPS). % 05d означає, що порядковий номер кожного мініатюрного зображення слід форматувати за допомогою 5 цифр.

Якщо ви хочете поєднати зображення як фотомонтаж (вашу сітку), ви можете використовувати imagemagick після вилучення кадрів за допомогою ffmpeg.


2

Це не програма командного рядка, але ви також можете використовувати qframecatcher .

Для ubuntu / debian необхідні вимоги: sudo apt-get install libqt4-dev libxine-dev build-basic

wget http://download.berlios.de/qframecatcher/qframecatcher-0.4.1.tar.gz
tar xzf qframecatcher-0.4.1.tar.gz
cd qframecatcher/src
qmake
make
./qframecatcher

Джерело: http://blog.radevic.com/2008/06/how-to-create-movie-or-video-frame.html


1

vcsi - це інструмент командного рядка, написаний на Python, який може бути використаний для створення сітки знімків 3 на 3 за допомогою наступної команди:

vcsi -g 3x3 video.mkv -o output.jpg

0

Мій приклад використання - це лише одна ескіза з відео, лише один файл, який можна використовувати як <video>плакат тегів. Отже, який би був швидкий спосіб зробити це?

За допомогою цього ffmpegви можете зробити:

ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

Це дасть вам кадр біля другої 123з video.mp4збережений як poster.jpg.

Як бачите, проблема полягає в тому, що нам потрібно знати, яка секунда є правильною.

Для того, щоб наші залежності були низькими, ми будемо використовувати для цього ffmpeg:

# Get the time as h:m:s (non-padded)
l=$(ffmpeg -i video.mp4 2>&1 | grep Duration: | sed -r 's/\..*//;s/.*: //;s/0([0-9])/\1/g')
# Convert that into seconds
s=$((($(cut -f1 -d: <<< $l) * 60 + $(cut -f2 -d: <<< $l)) * 60 + $(cut -f3 -d: <<< $l)))
# Get frame at 25% as the thumbnail
ffmpeg -ss $((s / 4)) -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

25% відео здається загальним вибором, але ви можете зробити його також 33% або 50%.

Ось сценарій, який робить це .

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