Dapatkah saya menangkap serangkaian gambar yang diberi nama sesuai stempel waktu

0

Saya berhasil menangkap tangkapan layar setiap 15 detik dengan perintah di bawah ini, tetapi saya perlu menghubungkan gambar ke tempat di mana video diambil.

% D memberi saya bilangan bulat, tetapi apakah ada variabel yang sama, filter, atau selain itu untuk memasukkan atau entah bagaimana menangkap cap waktu gambar dalam nama file output?

c:\ffmpeg\bin>ffmpeg -i c:\files\video.mp4 -vf fps=1/15 c:\images\image_%d.png";

Output saat ini adalah:

c:\images\image1.png
c:\images\image2.png
c:\images\image3.png
...
c:\images\image999.png

Output yang diinginkan adalah sesuatu seperti:

c:\images\image_00-00-00.png    // Capture at start of video
c:\images\image_00-00-15.png    // Capture at 00:00:15
c:\images\image_00-00-30.png    // Capture at 00:00:30
c:\images\image_00-00-45.png    // Capture at 00:00:45
c:\images\image_00-01-00.png    // Capture at 00:01:00
...
c:\images\image_01-25-15.png    // Last capture
GDP
sumber
Sejauh yang saya tahu ini belum memungkinkan. Ini sepertinya tiket # 1452: image2 untuk mendukung% t .
llogan
Saya pikir tidak, meskipun memilah-milah hasil google lama, sepertinya data itu tersedia, dan mudah-mudahan seseorang telah menemukannya. Terima kasih.
GDP
2
Jika Anda yakin bahwa outputnya persis 1/15 terpisah, maka Anda dapat membuat skrip beberapa penamaan ulang. Lame, tapi mungkin sebuah opsi.
llogan

Jawaban:

1

Seperti yang ditulis beberapa orang, mungkin tidak ada pilihan untuk itu ffmpeg perintah, yang dapat melakukan apa yang Anda inginkan. Di mesin linux saya sarankan Anda menggunakan skrip berikut

#!/bin/bash
interval=15 # interval between images in seconds

for ((i=0; i<$1; ++i)); do
timestamp=$(date -d @$((-3600+${i}*${interval})) +%H-%M-%S)
mv image${i}.png image_${timestamp}.png
done

exit 0

Anda dapat menyebutnya di direktori dengan gambar sebagai

$ script_name NNN

dimana NNN adalah jumlah total gambar (saya berasumsi bahwa Anda mulai penomoran dengan 0 bukan 1, tidak sulit).

Seperti yang Anda lihat, saya mengandalkan perintah linux date, yang mampu mengubah detik menjadi jam.

Karena Anda tampaknya menggunakan mesin Windows, ada beberapa opsi, bagaimana Anda dapat menggunakan skrip ini.

  1. Tulis ulang menjadi file batch Windows. Ada sebuah topik di sini , yang membahas cara menggunakan perintah yang mirip dengan date di Windows.

  2. Memasang cygwin dan jalankan skrip di atas dari baris perintah cygwin

  3. Gunakan mandiri bash command line untuk menjalankan skrip di atas.

John Smith
sumber