FFMPEG Découpage MP4 avec la même qualité

51

J'ai un gros fichier MP4. Je tente de le scinder en fichiers plus petits.

ffmpeg -i largefile.mp4 -sameq -ss 00:00:00 -t 00:50:00 smallfile.mp4

Je pensais que l'utilisation de -sameq conserverait les mêmes paramètres de qualité. Cependant, je ne dois pas comprendre ce que cela fait.

Je cherche à conserver la même qualité (audio / vidéo) et la compression avec les fichiers divisés. Toutefois, ce paramètre rend les fichiers divisés beaucoup plus volumineux.

Quel indicateur dois-je définir pour conserver la même qualité et les mêmes attributs dans les fichiers fractionnés tout en maintenant le même rapport qualité / taille?

Par exemple, si mon fichier original mesure environ 12 Go et une résolution de 1920x1080 avec un débit de 10617 kbps et un débit en trame de 23 images / seconde et un son à 6 canaux avec 317 kbps, je souhaite que les fichiers fractionnés ne soient identiques qu’un tiers de cette taille ( si je le divise en trois morceaux).

Chris Weber
la source
3
Pour votre information, si vous lisez ceci: n'utilisez pas -sameq, cela ne signifie pas "qualité égale" .
Zaz

Réponses:

81

Si vous souhaitez simplement scinder la vidéo sans la recoder, utilisez le copycodec pour l'audio et la vidéo. Essaye ça:

ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \
-vcodec copy smallfile.mp4

Notez que cela ne crée que la première division. La prochaine peut être faite avec une commande commençant par ffmpeg -ss 00:50:00.

Cela peut être fait avec une seule commande:

ffmpeg -i largefile.mp4 -t 00:50:00 -c copy smallfile1.mp4 -ss 00:50:00 -c copy smallfile2.mp4

Cela créera smallfile1.mp4, se terminant au bout de 50 minutes dans la vidéo de largefile.mp4, et smallfile2.mp4, commençant à 50 minutes et se terminant à la fin du fichier largefile.mp4.

fideli
la source
2
En utilisant cette méthode sur un fichier mp4, je reçois les deux premières secondes de chaque fichier créé sous forme d'image figée (l'audio est lu normalement). Une raison connue pour cela?
Ron Harlev
Cela ressemble à un bug. Mise à jour vers la dernière version de ffmpeg.
Robert
@ Robert J'ai mis à jour plusieurs fois depuis 2010. Merci.
Fideli
@RonHarlev C'est le comportement actuellement attendu. Sans ré-encodage, vous ne pouvez couper des vidéos que sur des "images clés". Les images entre les images clés ne contiennent pas suffisamment d'informations pour créer une image complète. Voir: trac.ffmpeg.org/wiki/Seeking#Seekingwhiledoingacodeccopy
Philip Thrasher
3

Une autre façon de le faire est:

// create a 2-min clip
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4

/**
* -i  input file
* -ss start time in seconds or in hh:mm:ss
* -to end time in seconds or in hh:mm:ss
* -c codec to use 
*/

La qualité du fichier reste la même car nous utilisons -c copyhabituellement pour copier les flux audio + vidéo originaux vers la sortie.

Référence, Liste des commandes FFmpeg couramment utilisées: DigitalFortress

Niket Pathak
la source