2017-03-10 4 views
0

J'ai un flux que je sais sortir à une fréquence d'images donnée (30 FPS). Je veux utiliser ffmpeg pour faire une copie de ce flux et l'enregistrer sur le disque.Flux de copie ffmpeg FPS

J'ai la commande suivante:

ffmpeg -i http://input/ -c copy -map 0 \ 
    -f segment -strftime 1 -segment_time 900 \ 
    -segment_atclocktime 1 -segment_format mp4 %Y-%m-%d_%H-%M-%S.mp4 

Mais quand je lance la commande, je vois ce qui suit:

frame= 32 fps=3.9 q=-1.0 Lsize=N/A time=00:00:01.27 bitrate=N/A 

où il semble que le FPS est tourne autour de ~ 4,0 FPS et time se déplace plus lent que le temps réel.

J'ai essayé ajouté -re (copier le débit du flux d'entrée) et -r 30 (manuellement définir le taux à 30 FPS) indicateur spécifié avant le fichier d'entrée, mais cela ne semble pas fonctionner. J'ai également lu a similar question here en utilisant -framerate 30, mais cette option n'existe pas dans les pages man et est Invalid option.

Toute aide serait grandement appréciée!


Je laisse donc la commande modifiée (la suppression des drapeaux -c copy -map 0) fonctionner pendant exactement 5 minutes. Exécution ffprobe rendements:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2017-03-10_01-09-12.mp4': 
    Metadata: 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2avc1mp41 
    encoder   : Lavf57.2.100 
    Duration: 00:00:15.43, start: 0.066016, bitrate: 13416 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuvj420p(pc), 1024x768, 13414 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) 
    Metadata: 
     handler_name : VideoHandler 

Encore une fois, cela ne produit que 15 secondes de vidéo et je ne peux pas sembler obtenir une relation 1: 1 entre le flux d'entrée de 30 FPS et un flux de sortie également en 30 FPS en temps réel temps. Jouer la vidéo donne quelque chose qui est accéléré.

Répondre

1

C'est la vitesse de traitement, c'est-à-dire 4 trames traitées par seconde. Ce n'est pas le flux de sortie FPS. Dans tous les cas, en mode de copie de flux, FFmpeg ne peut pas modifier le FPS de sortie, sauf si votre entrée est un brut bitstream.

+0

Merci pour la réponse! J'ai enlevé '-c copy -map 0'. Je vois à partir de la sortie que le compteur 'frame' est incrémenté de plus de 30 par seconde, FPS est autour de 2.0, et' time' avance encore lentement. Lorsque je joue ce retour, la sortie semble accélérée, même si le flux d'origine est en 30 FPS. –

+0

Affiche la sortie ffprobe pour l'un des segments. – Mulvya

+0

La sortie semble normale, c'est-à-dire '30 fps'. Comment jouez-vous le résultat? – Mulvya