2017-07-18 2 views
0

J'ai une vidéo qui provient du streaming rtmp.comment faire pour supprimer l'écart PTS dans un fichier lors du transcodage avec ffmpeg?

Depuis la diffusion est sur et en dehors fréquemment,

le fichier archivé a PTS comme ci-dessous

(en supposant que ce soit sec)

0--10--20--30- -40 120--130--140

il y a une discontinuité entre 40 et 120 sec.

la durée de ce fichier doit être 60sec puisqu'il y a un écart de 80sec entre 40 ~ 120. Mais quand j'ai transcodé ce fichier, la durée finale est devenue 140sec avec 80sec de pièces en pause. Comment puis-je transcoder ce fichier sans "non existant" 80 sec de sorte que le fichier de sortie est devenu 60sec sans pause redondant 80 sec. J'ai essayé les options "+ getpts" ou "+ igndts" mais elles ne fonctionnent pas du tout.

Répondre

1

Utilisez le filtre setpts.

ffmpeg -i in.flv -vf setpts=N/FRAME_RATE/TB out.mp4 

S'il y a du son également, ajoutez -af asetpts=N/SR/TB.

+0

S'il y a de l'audio aussi, je pense qu'il doit y avoir un problème de synchronisation entre l'audio et la vidéo. existe-t-il d'autres options pour enregistrer la synchronisation entre audio et vidéo? – jsBaek

+0

Si le PTS audio n'a pas de discontinuités correspondantes, l'audio devra être rogné manuellement. Si le silence persiste pendant la vidéo, le filtre [silenceremove] (https://ffmpeg.org/ffmpeg-filters.html#silenceremove) peut fonctionner. – Mulvya

+0

Merci pour vos conseils. Je vais comprendre s'il y a une meilleure façon de couper les pièces – jsBaek