2011-12-17 19 views
10

Podczas korzystania z ffmpeg do wyprowadzania szeregu klatek jako obrazów, the only format I can find documentation for jest frame_%d.jpg. Identyfikator %d jest zastępowany przez kolejną liczbę ramek.ffmpeg nazwa pliku format wyjściowy

Czy są inne parametry, których mogę użyć w formacie pliku wyjściowego? W szczególności potrzebuję możliwości dodania znacznika czasu określonej klatki.

+0

Podejmowanie tego z ffmpeg-dev - http://ffmpeg.org/pipermail/ffmpeg-devel/2011-December/117790.html –

Odpowiedz

5

Okazuje się, że to zachowanie nie zostało jeszcze wdrożone w tym czasie.

Zaimplementowałem początkową wersję wsparcia %t na moim widelcu FFmpeg (https://github.com/yuvadm/FFmpeg), a obecnie pracuję nad czyszczeniem poprawki, aby mogła zostać scalona w górę strumienia.

+2

Czy kiedykolwiek zgłosiłeś to do głównego projektu? Istnieje [otwarte 3-letnie żądanie] (https://trac.ffmpeg.org/ticket/1452) (które znalazłem podczas próby zrobienia tego samemu). –

+0

@YuvalAdam proszę sprawdzić [repozytorium ffmpeg na github] (https://github.com/yuvadm/FFmpeg/commit/e1524dda42c9056f393a0ec0eb494d5dc31e2b1e#commitcomment-19635439) proszę. :) – Florida

3

The strftime option pozwala rozwinąć nazwę pliku wraz z datą i godziną. Sprawdź the documentation of the strftime() function pod kątem składni.

Na przykład do generowania plików graficznych z strftime() %Y-%m-%d_%H-%M-%S wzór, następujące polecenie ffmpeg można stosować:

ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg" 
+2

O ile rozumiem, to wyświetli rzeczywisty czas i datę, podczas gdy moje wymaganie dotyczy czasu działania wideo. –

+0

Niestety tylko "druga" ziarnistość (daje czas zegara ściennego), ale działa ... – rogerdpack

+0

Dla tych z nas na Ubuntu 14, którzy zmuszeni do korzystania z avconv opcja strftime nie jest dostępna do segmentacji. Nie mogłem znaleźć obejścia, ale udało mi się zainstalować FFMPEG na Ubuntu 14, wykonując 'sudo add-apt-repository ppa: mc3man/trusty-media' ' sudo apt-get update' 'sudo apt-get dist -upgrade ' ' sudo apt-get install ffmpeg' – Tycon

1

I włamał się skrypt bash, który tworzy nazwy plików na podstawie czasu w filmie. Używa formatu: "hh_mm_ss" w nazwie pliku. Można go zobaczyć na stronie:

https://github.com/pozar/makemoviethumbs

+0

Pojawia się wymagać "stałej" liczby klatek na sekundę, których niestety nie mam: | – rogerdpack

0

Inną opcją musiałbyś byłoby uruchomić ffprobe -show_packets na nim i używać tych danych „wnioskować” znacznik czasu każdego wygenerowanego pliku jpg (zakładając, że generowanie jeden na przychodzącą klatkę wideo). Yikes!

0

Dla liczby ramek można wykorzystać raport ze szczególnym trybie debugowania:

FFREPORT=file=\'file.log\':level=48 && ffmpeg ... -vf select=eq(pict_type\,PICT_TYPE_I) -vsync vfr -f image2 OUTPUT 

następnie można dopasować nazwę z preg_match_all:

preg_match_all("/] n:(\\d+)\\.[^>]+pict_type:I/Us",$log,$m,PREG_PATTERN_ORDER,5000); 
$frames=$m[1]; 

Proszę cieszyć!

+1

Powinieneś sformatować swój kod jako kod. –