H.265’in H.264’e toplu dönüştürme
Bu örnekler son zamanlarda yazılmıştır ffmpeg
. Kendine biraz sıkıntıdan sakın ve yeni bir sürümü indir . Sonra ffmpeg
ikili dosyayı girin ( ~/bin
veya /usr/local/bin
oturumu kapatmanız gerekebilir, daha sonra fark edilmesi için giriş yapın).
Matroska çıkışı
mkdir h264vids
for f in *.mp4; do ffmpeg -i "$f" -map 0 -c copy -c:v libx264 -crf 23 -preset medium h264vids/"${f%.*}.mkv"; done
Bu örnek adlı bir dizine çıkacaktır h264vids
.
Bu örnekte girdilerinizin olduğu varsayılmaktadır .mp4
. Değilse .mp4
, örnekteki örneği giriş dosyası türünüzle değiştirin veya açgözlülüğü yalnızca kullanın *
.
-crf
Kalite ve -preset
kodlama hızı / verimliliği için ayarlayın . Veya bu seçenekleri kaldırın ve oldukça iyi olan ve çoğu için yeterli olan varsayılanları kullanın (örnek, bu seçenekler için varsayılan değerleri kullanıyor). Bu seçeneklerle ilgili daha fazla bilgi için FFmpeg Wiki: H.264'e bakınız .
MP4 çıkışı
Bu biraz daha karmaşık. Bu, giriş sesinin AAC olup olmamasına bağlı olarak koşullu kodlamayı gerçekleştirir. Giriş sesi AAC ise, ses akışı olduğu gibi kopyalanır (yeniden muxed) ve tekrar kodlamaya gerek kalmaz. Giriş sesi AAC değilse, AAC'ye yeniden kodlanır.
İşte ffprobe
ve kullanarak bunun nasıl yapılacağını gösteren basit bir komut dosyası ffmpeg
. Dönüştürülecek videolarınızı içeren dizine kopyalayıp kaydedin, yürütme izni verin chmod +x yourscriptname
, sonra çalıştırın ./yourscriptname
.
#!/bin/bash
mkdir h264vids
for f in *.mkv
do
audioformat=$(ffprobe -loglevel error -select_streams a:0 -show_entries stream=codec_name -of default=nw=1:nk=1 "$f")
if [ "$audioformat" = "aac" ]; then
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart h264vids/"${f%.*}.mp4"
else
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a aac -movflags +faststart h264vids/"${f%.*}.mp4"
fi
done
Bu örnek adlı bir dizine çıkacaktır h264vids
.
Bu örnekte girdilerinizin olduğu varsayılmaktadır .mkv
. Değilse .mkv
, örnekteki örneği giriş dosyası türünüzle değiştirin veya açgözlülüğü yalnızca kullanın *
.
İlgili yukarıdaki nota bakın -crf
ve -preset
.
Kodlamayı ctrl+ ile duraklatabilir ve ile zdevam edebilirsiniz fg
.
sleep 3
Gereksiz olduğunu (ancak döngüyü sonlandırmak için faydalı olabilir) veINPUT=$1
bunu doğrudan etkileşimli bir kabukta çalıştırdığınız için anlamsız olduğunu söyleyebilirim .