Як я можу витягти зображення з певного часу відео в Xubuntu 16.04?


8

Я шукаю варіант командного рядка.

Наприклад, якщо у мене є відео sample-video.mp4, і я хочу створити файл зображення sample-image.jpgз відео в 00:00:26, яку команду я повинен дати?

Також було б дуже корисно, якщо ви зможете детально пояснити, яка функція кожного аргументу команди.


2
Відповідно до цього питання та його відповідей, ffmpegсхоже, підтримуються імена файлів для виходу.
IQV

Відповіді:


8

Ви можете використовувати mplayer(з пакету mplayer, не встановлений за замовчуванням):

mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4

Це створить файл, 00000001.jpgтому вам доведеться перейменувати його. Наскільки мені відомо, немає способу вказати ім’я файлу.

-vo jpegозначає, що ви хочете вихід JPEG, -ss 00:00:26шукає задану позицію, -frames 1означає обробити один кадр і потім вийти.


Яка перевага отримати більше 1 кадру? Це будуть копії, або кожен кадр буде відрізнятися на секунду?
Sonevol

Зображення, створені з більшої кількості кадрів, будуть відрізнятися частками секунди. Точне значення залежить від відео.
Флоріан Дієш

5
@Sonevol Кадр точно в 0:00:26 може бути не таким , яким ви хочете. Ви можете взяти ~ 50 кадрів між 0:00:25 і 0:00:27 (або навіть просто 3-4 кадри навколо позначки 0:00:26), а потім переглядати їх, щоб вибрати найкращий.
xDaizu

1
@FlorianDiesch Можливо також вивести у png щось подібне: -vo png:z=9з налаштуванням -z, що визначає рівень стиснення. Для JPEG можна також додати в настройках якості: -vo jpeg:quality=100. Але ваша відповідь чудова, як уже :)
andrew.46

13

Можна використовувати ffmpeg

ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4  -t 1 -f image2 anyfilename.jpeg
  • -loglevel встановити вихідний режим тихо, тому що ffmpeg дуже балаканий
  • -ss is search (за секунди, тобто там, де ви хочете зробити знімок)
  • -i вхідний відеофайл
  • -t часовий інтервал знімка (у секундах)
  • -f Filetype

Ви також можете пограти з такими параметрами, як контроль якості виводу -q:v <linear integer 1-10>або роздільної здатності jpeg -s 480x300.

Ще кілька ідей тут


Метод VLC

cvlc sample-video.mp4 --start-time=26 --run-time=1 --rate=1 --video-filter=scene --vout=dummy --aout=dummy  --scene-ratio=24 --scene-prefix=sample-image --scene-replace vlc://quit
  • cvlc - тому що його командний рядок і ми не хочемо, щоб жодне вікно відкривалося. також це означає, що ми можемо запустити його без X11.

  • --старт-час = 26 - це точне положення знімка в секундах

  • --run-time = 1 - скільки часу відео буде «відтворюватися» в секундах. Ми відтворюємо його протягом однієї секунди, щоб зробити скріншот цієї секунди
  • --rate = 1, коли потрібно зробити знімок екрана. Це в основному означає "кожну секунду" і корисно, якщо у вас є довші файли, робити знімок екрана кожні 60 секунд або кожні 5 хвилин
  • --video-filter = сцена скажіть VLC, що ми хочемо зробити знімки екрана
  • --vout = фіктивний вихід для відео на X11, він нам не потрібен
  • --aout = фіктивний вихід для аудіо не потрібен
  • -scene-ratio = 24, ми кажемо VLC, що є приблизно 24 кадри в секунду
  • --scene-prefix = зразок-зображення імені вашого екрана
  • --scene-substituте замініть будь-які файли, які називаються, як ваш екран, sample-image.pngвашим поточним скріншотом. Якщо пропустити це, VLC почне нумерацію скріншотів
  • vlc: // киньте кинути vlc, як тільки ми закінчимо

Повна документація тут


Що ви маєте на увазі під чаті? І я хочу зробити знімок на 26-й секунді. Тож чому вказувати часові рамки на -t. Я знімаю зображення, а не відео.
Sonevol

3
"Chatty", тому що ffmpeg друкує понад 40 рядків виходу журналу за допомогою цієї команди, як-от поточна версія, тип налаштування та інформацію про вхідний відео-файл - що для вас нецікаво. Для своєї мети ви, ймовірно, можете опустити "-t 1". Здається, за замовчуванням - це одна секунда або частка цього, що добре для екрана екрана. Приємна відмінність полягає в можливості визначити вихідне ім'я файлу та налаштувати якість / роздільну здатність тощо
Роберт Ридл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.