2017-03-10 3 views
-8

Ich habe Videofile. Wie bekomme ich fps für dieses Video mit ffmpeg in C++? Geben Sie bitte den vollständigen Code ein.Wie bekomme ich fps für Video mit ffmpeg in C++?

+7

Kein Code-Schreibdienst; Versuche die Aufgabe zuerst, poste deine Probleme (mit Beispielen von dem, was du bereits versucht hast) – ocelot

+2

Du solltest es selbst versuchen und dann deine Frage mit dem Code, den du getan hast, stellen. Wir werden nicht die ganze Arbeit für dich erledigen. –

Antwort

-2

Sie könnten ffmpeg.exe wie dieses ffmpeg -i filename ausführen und es würde die Framerate ausgeben, wenn es nicht variabel ist.

Beispiel: Input #0, matroska,webm, from 'somerandom.mkv': Duration: 01:16:10.90, start: 0.000000, bitrate: N/A Stream #0.0: Video: h264 (High), yuv420p, 720x344 [PAR 1:1 DAR 90:43], 25 fps, 25 tbr, 1k tbn, 50 tbc (default) Stream #0.1: Audio: aac, 48000 Hz, stereo, s16 (default)

Dieses Video ein fps von 25 hat

Um ein Programm ausführen Sie die Antwort in https://stackoverflow.com/a/17703834/58553

Quelle verwenden können: https://askubuntu.com/questions/110264/how-to-find-frames-per-second-of-any-video-file

+1

Haben Sie die Frage gelesen? Die Frage ist, es in C++ zu tun. Nicht mit der Befehlszeile. –

+0

@GabrieldeGrimouard, damit Sie kein Programm aus C++ ausführen können, wir beide wissen, dass Sie können und warum um alles in der Welt wäre das keine gültige Lösung? (sicher ist es nicht das beste, aber es ist eine Lösung) – Peter

+0

Das ist eine Antwort, die nicht auf die Frage bezogen sind. Wenn er eine übergreifende kompilierte Anwendung unter Windows, Linux, Mac machen will, wird es wirklich schwierig sein. Darüber hinaus senden Sie einen Befehl wie diesen in Ihrem Code ein großes Sicherheitsproblem. Also ist deine Antwort nicht gut, weil ich/1 die Frage nicht beantworte, 2/wenn es große Probleme im Code bringt. –

0

Dies ist eine einfache Programm, das ich geschrieben habe, um Videoinformationen an die Konsole zu senden:

#include <libavformat/avformat.h> 

int main(int argc, const char *argv[]) 
{ 
    if (argc < 2) 
    { 
     printf("No video file.\n"); 
     return -1; 
    } 

    av_register_all(); 

    AVFormatContext *pFormatCtx = NULL; 

    //open video file 
    if (avformat_open_input(&pFormatCtx, argv[1], NULL, NULL) != 0) 
    return -1; 

    //get stream info 
    if (avformat_find_stream_info(pFormatCtx, NULL) < 0) 
     return -1; 

    av_dump_format(pFormatCtx, 0, argv[1], 0); 
} 

Compile und führen Sie es, Ausgabe wie folgt aussieht:

[email protected]:~/Desktop/video-info-dump$ ./vdump a.mp4 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'a.mp4': 
    Metadata: 
    major_brand  : isom 
    minor_version : 1 
    compatible_brands: isom 
    creation_time : 2014-04-23 06:18:02 
    encoder   : FormatFactory : www.pcfreetime.com 
    Duration: 00:07:20.60, start: 0.000000, bitrate: 1354 kb/s 
    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v/0x7634706D), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 1228 kb/s, 24 fps, 24 tbr, 24k tbn, 24 tbc (default) 
    Metadata: 
     creation_time : 2014-04-23 06:18:02 
     handler_name : video 
    Stream #0:1(und): Audio: aac (mp4a/0x6134706D), 44100 Hz, stereo, fltp, 123 kb/s (default) 
    Metadata: 
     creation_time : 2014-04-23 06:18:25 
     handler_name : sound 

a very good tutorial for ffmpeg and SDL empfehlen.

+0

Danke, aber ich dachte, es gibt die Funktion (f (string filename) -> double) erlaubt diese Information zu bekommen. –

Verwandte Themen