FFmpeg ile Video Ters Çevirme Rehberi: Kusursuz Loop ve Ping-Pong Döngüleri

Özellikle cinemagraph, ambiyans videoları veya kısa animasyonlar hazırlarken en sık başvurulan yöntemlerden biri videoyu ters çevirmektir (reverse). Arayüzlü video düzenleme yazılımlarında birkaç saniyelik bir klibi ters çevirip işlemek (render almak) bazen gereksiz zaman kaybına yol açar.

Komut satırının açık kaynaklı güç merkezi FFmpeg, bu işlemi harici bir kurgu programı açmadan saniyeler içinde halletmenizi sağlar. İster sadece görüntüyü, ister sesle birlikte tüm klibi tersine çevirebilir; hatta tek komutla kusursuz bir ileri-geri döngü (ping-pong loop) üretebilirsiniz.

1. Temel İşlem: Sadece Görüntüyü Ters Çevirme

Cinemagraph gibi ses katmanına ihtiyaç duymadığınız veya sesini zaten harici olarak kurgulayacağınız kliplerde yalnızca video akışını geriye doğru sarmak için -vf reverse video filtresini kullanabilirsiniz:

Bash

ffmpeg -i input.mp4 -vf reverse output.mp4
  • -i input.mp4: İşlem yapılacak kaynak video dosyası.
  • -vf reverse: Video akışını sondan başa doğru yeniden işleyen filtre.
  • output.mp4: Ters çevrilmiş nihai video çıktısı.

2. Hem Görüntüyü Hem Sesi Birlikte Ters Çevirme

Eğer klibinizdeki ortam sesinin veya efektlerin de görüntüyle senkronize biçimde geriye doğru akmasını istiyorsanız, video filtresine ek olarak -af areverse ses filtresini devreye almanız gerekir:

Bash

ffmpeg -i input.mp4 -vf reverse -af areverse output.mp4

Bu komut, hem görsel kareleri hem de ses dalgalarını sondan başa doğru okuyarak eş zamanlı bir çıktı üretir.

3. İleri Seviye: Tek Komutla “Ping-Pong” (İleri + Geri) Döngüsü

Ambiyans kurgularında en yaygın taktik; klibin önce normal oynatılması, ardından ters çevrilmiş halinin hemen arkasına eklenmesidir. Bu yöntem, videonun başı ve sonu arasındaki keskin atlamayı yok ederek pürüzsüz bir sonsuz döngü oluşturur.

Kurgu programında klip kopyalayıp uç uca eklemek yerine, FFmpeg’in filtre zincirini (filter_complex) kullanarak orijinal klip ile ters çevrilmiş klibi tek seferde birleştirebilirsiniz:

Bash

ffmpeg -i input.mp4 -filter_complex "[0:v]reverse[r];[0:v][r]concat=n=2:v=1[outv]" -map "[outv]" pingpong.mp4

Komutun Çalışma Mantığı:

  • [0:v]reverse[r]: Giriş videosunun bir kopyasını alır, ters çevirir ve bunu geçici olarak [r] olarak etiketler.
  • [0:v][r]concat=n=2:v=1[outv]: Orijinal video [0:v] ile ters çevrilmiş videoyu [r] sırayla birbirine bağlar (concatenate).
  • -map "[outv]": Elde edilen birleşik video akışını çıktı dosyasına yazar.

Performans ve Bellek İpucu

reverse filtresi, videoyu sondan başa doğru yeniden kodlayabilmek için ilgili kareleri geçici olarak sistem belleğinde (RAM) tutar. Bu nedenle bu komutlar, 5 ila 30 saniye arasındaki kısa döngü kliplerinde mükemmel ve ışık hızında çalışır.

Dakikalarca süren uzun videolarda bellek kullanımını optimize etmek için klibi önce işleyeceğiniz kısa parçaya bölüp ardından ters çevirme filtresine sokmak her zaman daha sağlıklı bir sonuç verir.

Markdown

---

### Sık Karşılaşılan Hata: "malloc failed" ve 4K Videolarda Bellek Aşımı

Eğer 4K (3840x2160) veya yüksek kare hızına (bitrate) sahip bir videoyu standart `reverse` komutuyla çevirmeye çalışırsanız, terminalde şu hatayla karşılaşabilirsiniz:

```text
x264 [error]: malloc of size ... failed
Error submitting video frame to the encoder
Conversion failed!

Bu Hata Neden Olur?

reverse filtresi videoyu sondan başa doğru dizebilmek için her bir kareyi sıkıştırılmamış halde sistem belleğine (RAM) yükler. 4K bir videoda saniyede 30 devasa kare işlenirken x264 kodlayıcısının varsayılan bellek ayırma sınırları aşılır ve işlem kilitlenir.

Çözüm 1: Bellek ve İşlemci Parametrelerini Optimize Etmek (En Pratik Yol)

x264’ün bellek tüketimini artıran çoklu thread ve ileriye dönük kare tahmin (lookahead) parametrelerini sınırlayarak işlemi başarıyla tamamlayabilirsiniz:

PowerShell

ffmpeg -i input.mp4 -vf reverse -c:v libx264 -preset fast -rc-lookahead 10 -threads 4 -an output_reverse.mp4
  • -an: Sessiz videolardaki boş/gereksiz ses kanalını kaldırarak veri yükünü azaltır.
  • -rc-lookahead 10: Kodlayıcının bellekte önbelleğe aldığı kare sayısını kısar.
  • -threads 4: Aşırı bellek tüketen paralel iş parçacığı sayısını dengeler.

Çözüm 2: Ekran Kartı Gücünü Kullanmak (NVIDIA NVENC)

Sisteminizde NVIDIA ekran kartı bulunuyorsa, işlemi işlemci RAM’i yerine ekran kartınızın video belleği üzerinden donanım hızlandırmasıyla saniyeler içinde tamamlayabilirsiniz:

PowerShell

ffmpeg -i input.mp4 -vf reverse -c:v h264_nvenc -an output_reverse.mp4

Leave a Reply

Your email address will not be published. Required fields are marked *