Temukan posisi file video menggunakan pencocokan gambar

2

Apa yang akan menjadi alat / metode terbaik untuk secara otomatis menemukan posisi dari file video, di mana frame kira-kira cocok dengan * gambar yang diberikan?

Pada dasarnya, sebuah perintah untuk: "Temukan posisi di mana [image.jpg] muncul di [video.mpg]"

Lebih disukai dengan ffmpeg , atau alat baris perintah linux lainnya.

* - atau mungkin bingkai yang terbaik dari semua bingkai dalam video, cocok dengan gambar

Ilari Kajaste
sumber
Jika sesuatu seperti ini ada, maka itu sangat keren
That Brazilian Guy
Saya akan berpikir ada beberapa perpustakaan yang cocok dengan gambar di suatu tempat - menggabungkan mereka dengan alat yang mengekstrak bingkai dari video seharusnya tidak terlalu sulit. Jika tidak ada, saya cukup tergoda untuk menulis sendiri. :)
Ilari Kajaste
ada beberapa alat pencocokan gambar luar biasa di luar sana ! (Meskipun yang ini bukan untuk linux, ini akan membandingkan berbagai format gambar, dimensi, kedalaman warna, dan bahkan sebagian gambar; jadi mungkin ada alat CLI atau pustaka yang serupa untuk linux yang Anda dapat menyalurkan output?)
That Brazilian Guy
Jadi, sudahkah Anda menulis alat seperti itu sendiri? Pasti sangat berguna.
user
@ user3075942 Belum, tapi konsepnya masih di todo saya. :)
Ilari Kajaste

Jawaban:

0

Anda dapat menggunakan md5 dan framemd5 muxers jika gambar dan bingkai persis sama . Contoh:

  1. Dapatkan MD5 jumlah gambar target:

    $ ffmpeg -i frame.jpg -f md5 - 2>&1 | grep MD5
    MD5=b7fb5124a65108ebb067129d9d81ed57
    
  2. Temukan bingkai gambar yang tepat dalam video:

    $ ffmpeg -i video.mov -f framemd5 - 2>&1 | grep b7fb5124a65108ebb067129d9d81ed57
      0,        62,        62,         1,  1424400, b7fb5124a65108ebb067129d9d81ed57
    

Angka-angka output mengacu pada: stream_index, packet_dts, packet_pts, packet_duration, packet_size, MD5.

Namun, ini mungkin bukan yang Anda cari. Dapat dibayangkan ini akan berhasil jika video.mov adalah mjpeg; seperti jika Anda membuat video dari input jpg dan stream copy mereka ke output:

ffmpeg -pattern_type glob -i "*.jpg" -codec copy output.mkv
llogan
sumber
Anda benar, pencocokan tepat bukan yang saya cari.
Ilari Kajaste
@IlariKajaste Pertimbangkan untuk mengirimkan permintaan fitur ke Pelacak Bug FFmpeg . Sebutkan pustaka yang dapat melakukan apa yang Anda inginkan jika Anda menemukannya.
llogan
Fitur seperti ini mungkin sedikit keluar dari ruang lingkup sebagai fitur langsung dari FFmpeg. Tetapi dengan skrip kecil dan beberapa perpipaan ini mungkin dilakukan. Saya tidak tahu, itulah sebabnya saya bertanya. :)
Ilari Kajaste
1
@IlariKajaste Sudah ada beberapa filter "deteksi" di ffmpeg: silencedetect, volumedetect, blackdetect, blackframe, cropdetect, edgedetectjadi framedetect "mungkin tidak di luar jangkauan.
llogan
Ah, ya, poin bagus!
Ilari Kajaste