Linux: Bir videodan kareler nasıl çıkarılır? (Kayıpsız)


10

Ben gibi programları kullanarak üzerinde birkaç cevaplar ve makaleleri okudum VLC, MPlayer, ffmpegvb, ancak gördüğüm yöntemlerin hiçbiri değil "kayıpsız". Her kareyi yakalamazlar. Bir videodaki her kareyi bir resim olarak çıkarmak istiyorum (% 100 kalite, herhangi bir ayrıntıyı kaybetmek istemiyorum), böylece biri bu görüntüleri teorik olarak alabilir ve aralarındaki farkı anlayamadan video dosyasını yeniden oluşturabilir. Orijinal (tabii ki ses eksikliği hariç).

Bonus puanları kareleri almak için bir başlangıç ​​ve bitiş zamanı belirleyebilirsem, video dosyasını önceden kesmem gerekmeyecek.


Muhtemelen buna cevap vermek için ffmpegversiyonunuz ve giriş dosyalarınız hakkında bazı bilgiler gereklidir. Lütfen tam konsol çıktısını göster ffmpeg -i input.
llogan

Yanıtlar:


11

Kareleri kayıpsız bir resim sıkıştırma formatı olan PNG olarak çıkarabilirsiniz. Örneğin, 5mn işaretinden 10mn işaretine kadar kareleri çıkarmak için:

ffmpeg -ss 05:00 -i <input> -t 05:00 filename%05d.png

Hata alıyorum Çıktı dosyası boş, hiçbir şey kodlanmadı (check -ss / -t / -frames parametresini kontrol edin)
Caridorc

4

Bir film dosyasındaki tüm kareleri çıkarabilmesi gereken birkaç araç vardır:

avconv
avconv -i file.avi -f image2 Out%00d.jpg

ffmpeg
ffmpeg -i input.file thumb%04d.png -hide_banner

Bu, PNG veya JPG'den daha az işlem süresi alan BMP'yi de dışa aktarabilir.

FFMPEG çıkarma işlemini otomatikleştirmeye çalışan mov2frame.sh adında bir bash betiği de vardır .

mplayer
mplayer -ao null -vo png input.file

veya başka bir seçenek:

mplayer -nosound -vo png:z=9 my_file.mp4

VLC Bu medya oynatıcı, görüntü kümelerini filtrelerini kullanarak dışa aktarabilir, ancak tek kullanımınız veya taşınabilir bir sürüme sahip olmadığınız sürece zor görünüyor.

  1. Karelerinizi saklamak ve yolunu kopyalamak için bir klasör oluşturun. Mac OSX / Linux kullanıcıları için bu tam yol olmalı (no ~).

  2. VLC'de Araçlar / Tercihler'i tıklayın.

  3. “Ayarları göster” altında, “tümü” ne tıklayın.

  4. “Video” altında, “Filtreler” öğesini seçin. “Sahne video filtresi” ni işaretleyin.

  5. “Filtreler” i genişletin ve “Sahne filtresi” ni seçin,

  6. Yolu daha önceki “dizin yolu öneki” içine yapıştırın.

  7. “Kayıt oranı” kutusunda kodlanacak karelerin oranını seçin. Her 12 çıkışta 1/12, 1/1 hepsini ihraç edecek

  8. “Kaydet” e tıklayın.

  9. Medya / Video Aç'ı tıklayın ve videonuzu bulun. Sabırla her şeyin oynamasına izin ver.

  10. Araçlar / Tercihler'i tıklayın. “Ayarları göster” altında, “tümü” ne tıklayın. “Video” altında “filtreler” i seçin. “Sahne video filtresi” nin işaretini kaldırın. “Kaydet” e tıklayın. Bu, VLC'nin bir sonraki oynatışınızda küçük resimler oluşturmayacağı şekildedir. bağlantı

Ayrıca, ilk program çalıştırmasında yönetici izinleriyle ilgili bazı olası sorunlar olduğu da görülüyor:

sudo vlc [sudo] password for mint16: VLC is not supposed to be run as root. Sorry. If you need to use real-time priorities and/or privileged TCP ports you can use vlc-wrapper (make sure it is Set-UID root and cannot be run by non-trusted users first).

VLC ayrıca PNG yerine BMP'ye çıkarırken çok daha iyi sonuç veriyor


Kare hızı çıktısını ffmpeg kullanarak nasıl azaltabilirim? Örneğin saniyede sadece 2 kare görüntü alabilir miyim?
Caridorc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.