2013-08-07 7 views
5

Pracuję nad ekstraktorem miniatur z serii ff (oznacza ffmpeg, ffplay, ffprobe).jaka jest jednostka wielkości pakietu ffprobe (podobna do ffmpeg)?

Potrzebuję znać położenie klatek, więc używam polecenia podobnego do poniższego, które znalazłem na innym miejscu w stackoverflow.

ffprobe -show_frames -select_streams v -print_format json=c=1 0001.wmv 

Właściwie działa dobrze i tworzy plik z dużą ilością informacji o pakiecie.

Plik wyjściowy, jak poniżej.

"frames": [ 
     { "media_type": "video", "key_frame": 1, "pkt_pts": 900000, "pkt_pts_time": "10.000000", "pkt_dts": 900000, "pkt_dts_time": "10.000000", "pkt_duration": 3003, "pkt_duration_time": "0.033367", "pkt_pos": "453", "pkt_size": "9744", "width": 720, "height": 480, "pix_fmt": "yuv420p", "sample_aspect_ratio": "8:9", "pict_type": "I", "coded_picture_number": 0, "display_picture_number": 0, "interlaced_frame": 0, "top_field_first": 0, "repeat_pict": 0 },... 

Istnieje kolumna o nazwie "pkt_size", którą zakładam, że rozmiar pakietu.

Wyświetla niektóre liczby, ale brak informacji o jednostkach.

Zastanawiam się, że jednostka to "bajt" lub "bit".

Jeśli ktoś ma jakieś informacje na ten temat, powiedz mi.

Dzięki.

Odpowiedz

6

Urządzenie to bajt.

Najlepsza wskazówka do tego jest z narzędzi/plot plotek, narzędzie dostarczane przez ffmpeg do generowania wykresu rozmiarów ramek. Sprawdź te fragmenty kodu, które będą wyświetlać rozmiar klatek w Kbits (pkt_size * 8/1000).

foreach my $frame (@{$frames}) { 
    my $type = $frame->{pict_type}; 
    $frame->{count} = $frame_count++; 
    if (not $stats{$type}) { 
     $stats{$type}->{tmpfile} = File::Temp->new(SUFFIX => '.dat'); 
     my $fn = $stats{$type}->{tmpfile}->filename; 
     open($stats{$type}->{fh}, ">", $fn) or die "Can't open $fn"; 
    } 

    print { $stats{$type}->{fh} } 
     "$frame->{count} ", $frame->{pkt_size} * 8/1000, "\n"; 
} 
+0

Dzięki za odpowiedź. Zakładam, że masz właściwą odpowiedź. Ale ten kod wydaje mi się nieznany, więc mógłbyś mi powiedzieć, jaki to jest język? –

+0

ffmpeg/tools/plotframes to skrypt perla. – Drake

+0

Ok. Mam to! Wielkie dzięki. Miłego dnia: D –

0

Można również zobaczyć jednostki przekazując do ffprobe opcja '' szerokości jednostek, niskoprofilowy

Jak

ffprobe -show_frames -select_streams v -print_format -unit json=c=1 0001.wmv