Ffmpeg kullanarak videonun önüne görüntü kaplaması ekleyin


31

Çok fazla videom var ve yaklaşık 5 saniye boyunca önlerine bir resim koymam gerekiyor, ancak manuel olarak ekleyip her seferinde görüntülemesi çok uzun sürüyor, bu yüzden ffmpeg aracılığıyla yapıp yapamayacağınızı ve ffmpeg konusunda deneyimim olmadığı için lütfen bana yardım edin. Bazı komutları zaten buldum ama hiçbiri işe yaramadı. Örneğin bu.

ffmpeg -itsoffset 5 -i in.mp4 -r 25 -loop 1 -i intro.png -filter_complex "[1:v] fade=out:125:25:alpha=1 [intro]; [0:v][intro] overlay [v]" -map "[v]" -map 0:a -acodec copy out.mp4

1
Az önce bu komutu kopyaladınız mı ya da ihtiyaçlarınıza göre mi yazdınız? Soruyorum çünkü bu komut solma gibi şeyleri ve sorunuzda ele alınmayan her türlü başka şeyi içeriyor. Sadece bir görüntüyü bindirmeye mi ihtiyacınız var yoksa bundan daha fazlasına mı ihtiyacınız var?
PTS

Bir yerden kopyaladım, tek ihtiyacım olan görüntüyü videonun önüne koymak.
Azthy

Yanıtlar:


44

Aşağıdaki sözdizimini kullanarak basit bir görüntü kaplaması yapabilirsiniz:

ffmpeg -i input.mp4 -i image.png \
-filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,20)'" \
-pix_fmt yuv420p -c:a copy \
output.mp4

overlay=25:25 görüntüyü 25px sağa ve 25px aşağıya, sol üst köşeden (0: 0) gelecek şekilde konumlandırmak istediğimiz anlamına gelir.

enable='between(t,0,20)' Görüntünün ikinci 0 ile 20 arasında gösterilmesini istediğimiz anlamına gelir.

[0:v][1:v]bizim ithal ettiğimiz ilk video dosyasının -ibizim durumda input.mp4 örneğinde ya da ffmpeg'in video giriş dosyası numarası 0 olan 0'ı, bizim video.png dosyamızda 1 video girişinde olmasını istediği anlamına gelir . :vsadece video 0 ve video 1 [0:a]istediğimiz anlamına gelir. İlk alınan ses parçasını istediğimiz anlamına gelir. Bu ayrıca input.mp4'ten gelecektir ancak mp4 dosyasındaki video parçası yerine ses parçasını gösterecektir.

Belli bir görüntü kalitesi / ayarları istiyorsanız ve ffmpeg'in seçtiği ayarlar yerine, kullanmak istediğiniz görüntü ve ses kodlama seçeneklerini ekleyin. Varsayılan video kodlayıcı x264 olacaktır. Olası ayarlar için H.264 kodlama kılavuzunu kontrol edin .

-acodec copy/ -c:a copyEğer komut olduğunu fe basitçe kaynak dosyadan ses yeniden kullanmak. Elbette bu videoyla bunu yapamamanıza rağmen (bu durumda), bunun kod dönüştürülmesi gerekiyor, çünkü yeni bir video kaynağı oluşturuyoruz.

Sesi dönüştürmek istiyorsanız, -c:a copyparçayı çıkarın . Örneğin, bir kodlayıcıyı açıkça belirtmeniz gerekebilir -c:a aac -strict experimental. Daha fazla bilgi için AAC kodlama kılavuzuna bakın .


Yukarıdaki komutun yinelemesi, benim için Android'de işe yaradı, çünkü orijinal olanı aac gibi veriyor ve yanılıyor deneysel bir özellik: ffmpeg -i input.mp4 strict -2 -i image.png -filter_complex [0: v] [1: v] yer paylaşımı = 25: 25: enable = 'arasında (t, 0,20)' output.mp4
muneikh

Zaten yüksekliği bilmeden dipte pozisyon var mı? ya da genişliğini bilmeden sağa?
chovy

elbette videoyu ffprobe ile analiz edin ve videonun boyutlarını çıktıdan çıkarın. Belki de ffmpeg ile bütünleşik bir seçenek var ama bunun farkında değilim.
PTS

3
Komutunuz orijinal video dosyasının bir parçasını değiştirir , ancak kullanıcı videodan önce ve / veya sonra bir resim eklemek isteyebilir (böylece video uzunluğunu artırabilir). Lütfen bu konuda yardım
porton

1
Kaynak dosya ve / veya çıktınıza bağlı olarak @laurent. pix_fmt piksel biçimini ifade eder. Farklı kod çözücüler için birçok farklı piksel formatı vardır ve bunlardan biri sizin için işe yaramayacak bir şeyle sonuçlanmayacağınızı belirtir. yuv420p, h264'e gelince en çok desteklenen piksel biçimidir, ancak örneğin yuv422p ve yuv444p de vardır.
PTS
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.