Aktarım Akışı ile kodlanmış dosyaların dosya simge görüntüsünü düzgün şekilde görüntülemesini nasıl sağlayabilirim?


0

Bunu doğru soruyor muyum bilmiyorum ama işte geliyor. Doğum günüm için ayarlanmış bir DVD kutusu aldım ve görüntülemek üzere bilgisayarımda depolanacak dosyaları kodladım. Ham dosyaları bilgisayarıma attıktan sonra aşağıdaki toplu iş komutuyla sıkıştırdım;

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
mv "$i.ts" "$i.mp4"
sleep 3
done

Bu da büyük bir sıkıştırma ve kaliteyle sonuçlandı, ancak klasöre baktığımda, aynı klasördeki orijinal dosyalar görüntülenen videonun bir görüntüsüne sahipken, dosyalar simgelerde sadece gri kutulardı. (Lol, onun sadece kozmetik olduğunu biliyorum ama beni rahatsız ediyor :)

Komutu kullanırsam;

ffmpeg -i input.mp4 -vcodec h264 -acodec libfaac output.mp4

Görüntü simgesini iyi görüntüler ancak istediğim gibi olmayan (h264) yerine (AVC1) olarak kodlar.

Dosya simgesini istediğiniz gibi göstermesini sağlamak için toplu iş dosya komutumda bunu ele almamın bir yolu var mı? Teşekkür ederim!


2
H.264 == AVC. İlki, ITU kod adıdır ve ikincisi MPEG komitesininkidir. Ayrıca, TS ve MP4 ayrı kaplardır - uzantıyı yeniden adlandıramazsınız. remux: ffmpeg -i in.ts -c copy out.mp4
Gyan

Bilgi ve yorum için teşekkür ederiz. Sağladığınız komut bir hata üretti, hatanın düzeltilmesi komuttur; ffmpeg -i in.ts -bsf: bir aac_adtstoasc -c kopyalamak.mp4
TheMegolith

Çok eski bir ffmpeg sürümünü kullanıyorsunuz. Son sürümler gerektiğinde otomatik olarak bsfs ekler. Ekim 2016’da desteği kaldırılan libfaac’ı kullandığınızdan beri daha önce fark etmeliydim.
Gyan

Başıma gelmeyen muhalifler bilgi için teşekkür ederim.
TheMegolith

Yanıtlar:


1

Gyan tarafından sağlanan bilgiler sayesinde, aşağıdaki gibi toplu dosya komutumun değiştirilmesi için sorduğum soruya etkili bir çözüm bulabildim.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
ffmpeg -i "$i.ts" -bsf:a aac_adtstoasc -c copy "$i.mp4"
rm *.ts
sleep 3
done

Bununla birlikte, sağlanan Gyan bilgisi verildiğinde, bir aktarım akış dosyasına kodlama adımını atlayabilir ve ardından mp4'e remux yapabilir ve mp4 dosyasını aşağıdaki toplu komutta basitçe sıkıştırabiliriz.

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.mp4"
sleep 3
done

Bunun eski bir ffmpeg sürümü kullanılarak yapıldığını unutmayın. Yeni ffmpeg sürümleri için, videonuzu, sıkıştırmakta olduğunuz videonun uygun bir görüntü simgesini koruyarak sıkıştırmak için aşağıdakileri kullanın;

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec aac "$i.mp4"
sleep 3
done

Toplu iş komutunu kullanan tek sorun, tek bir tıklamayla birden fazla klasör altındaki tüm dosyalarda fazladan dosya uzantısını kaldırmak için pyrenamer kullanarak adreslediğim dosya adına (dosyaadı.mp4.mp4) ek bir dosya uzantısı eklemesidir.

Birisi toplu iş komutunda bunun nasıl ele alınacağını bilirse lütfen yorum yapın ve bu cevabı değiştireceğim. 'Mv' komutunun çeşitlemelerini denedim ama şanssız.


Örneğin, daha sonra kaldırmanız gereken ikinci bir uzantı ekleyerek geçici dosyalarla çalışmanız gerekecektir. Ayrıca dosyaları başka bir dizine yazabilirsiniz ve mv orijinallerin üzerine yazmak için bunları geri getirin.
slhck
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.