2013-05-20 20 views
5

Şimdiye kadar, ffmpeg kullanarak sabit çerçeveyi (program aracılığıyla) kullanarak tüm kodlamalarımı yapıyordum. Şimdi değişken kare hızını desteklemem gerekiyor. Çerçeve hızını ayarlayan kodumun bölümünü yorumlamaya başladım. Ancak çalışmıyor. Benim işlevim avcodec_open2'de başarısız oluyor. Lütfen birisi bana değişken kare hızını desteklemeye nasıl gideceğimi önerdi. Ayrıca tüm codec desteği değişken kare hızını bilmedim. Değişken kare hızı ile kodlama yaparken normalde hangi kodekler kullanılır. Lütfen öneriniz.Ffmpeg'de değişken kare hızı ile kodlama

Teşekkür Pradeep

+0

Bunu nasıl yapacağınızı anladınız mı? Ben de bununla ilgileniyorum. @ praks411 – GangstaGraham

cevap

4

Ben

fps filter veya framerate filter kullanın ... ancak aynı sorunu (I just did) sahip bazı millet yardım edememek umut sonrası oldukça eski olduğunu fark . Bir ffpmeg n00b olmanın yanı sıra,% 100 doğruluk için bir garanti yok, ama en azından bu benim için çalıştı:

filtering_video.c örneğinde olduğu gibi bir süzgeç grafiği oluşturdum. avfilter_graph_parse_ptr'un filters argümanı için, örneğin fps=fps=30:round=near belirtmiştim. Bazı var her Sonra timestamp saniyede çerçevenin zaman ve timestamp0 kaydedilen ilk karenin zaman

float fps = (float)(codecContext->time_base.num)/codecContext->time_base.den; 
this->frame->pts = (__int64)((timestamp - timestamp0)/fps); 

olarak puanlar hesaplanması filtergraph içine çerçeveleri beslenir. Her ikisi de kayan nokta değerleridir ve özel yerleşik zamanlayıcımdan kaynaklanır. Yakalanan karelerinizin (DirectShow gibi) zaman damgalarını sağlayan bir kütüphane kullandığınızda, elbette bunları kullanmalısınız.