Muhtemelen 3 saniye işaretinde bir anahtar kareniz yok. Anahtar kareler dışındaki çerçeveler diğer karelerden farklılıkları kodladığından, önceki anahtar kareden başlayarak tüm verileri gerektirirler.
Mp4 kapsayıcısı ile bir düzenleme listesi kullanarak yeniden kodlama yapmadan anahtar olmayan bir karede kesmek mümkündür. Başka bir deyişle, 3 saniyeden önceki en yakın ana kare 0 saniyeyse, video 0 saniyeden başlayarak kopyalanır ve müzikçalara 3 saniye içinde oynamaya başlamasını bildirmek için bir düzenleme listesi kullanır.
Git master'dan en son ffmpeg kullanıyorsanız, bunu sağladığınız komut kullanılarak çağrıldığında bir düzenleme listesi kullanarak yapar. Bu sizin için çalışmıyorsa, muhtemelen ffmpeg'in eski bir sürümünü kullanıyorsunuz veya oynatıcınız düzenleme listelerini desteklemiyor. Bazı oynatıcılar düzenleme listesini yok sayar ve dosyadaki tüm medyayı baştan sona oynatır.
Anahtar kareden olmayan bir yerden tam olarak kesmek ve düzenleme listelerini desteklemeyen bir oynatıcıda istenen noktada başlamasını istiyorsanız veya kesme bölümünün gerçekten çıktı dosyasında olmadığından emin olmak istiyorsanız (örneğin, gizli bilgiler içeriyorsa), bunu yeniden kodlayarak bunu yapabilirsiniz, böylece bir anahtar kare tam olarak istenen başlangıç zamanında olacaktır. Belirtmezseniz, yeniden kodlama varsayılan değerdir copy
. Örneğin:
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4
Yeniden kodlama yaparken ayrıca kalite ile ilgili ek seçenekler veya belirli bir AAC kodlayıcı eklemek isteyebilirsiniz. Ayrıntılar için, bkz. Ffmpeg'nin x264 Video için Kodlama Kılavuzu ve ses için AAC Kodlama Kılavuzu .
Ayrıca, -t
seçenek bitiş zamanını değil, bir süre belirtir. Yukarıdaki komut 3 saniyeden başlayarak 8 saniyelik video kodlayacaktır. 3s'de başlamak ve 8s'de bitirmek için kullanın -t 5
. Eğer siz de yerini alabilir ffmpeg güncel bir sürümünü kullanıyorsanız -t
ile -to
belirtilen saatte sona yukarıdaki komuta.