web-dev-qa-db-fra.com

Fractionner une vidéo en plusieurs parties

J'ai plusieurs grandes vidéos que je veux scinder en plusieurs parties. La seule façon de faire que je connaisse est de scinder une partie à la fois avec OpenShot. Je dois diviser, attendre longtemps, supprimer la partie, diviser la partie suivante, ...

Y a-t-il un meilleur moyen? J'ai essayé de google mais il semble que toutes les méthodes nécessitent également de scinder une partie à la fois. C'est vraiment peu pratique car j'ai besoin que chaque vidéo soit scindée en 20-30 parties. Je veux pouvoir marquer simplement le point de partage et revenir plus tard et trouver tout ce qui est fait. Est-ce que quelqu'un connaît un moyen?

UPDATE: Je travaille maintenant sur une solution de ligne de commande. J'ai essayé cette commande mais le seul problème est qu'il y a quelques secondes où la vidéo se fige au début (et à la fin) de chaque division de sortie.

avconv -i x.mp4 -ss 00:00:00 -t 00:01:00 -c:v copy -c:a copy out.mp4  -ss 00:01:00 -t 00:01:00 -c:v copy -c:a copy out1.mp4  -ss 00:02:00 -t 00:01:00 -c:v copy -c:a copy out2.mp4  -ss 00:03:00 -t 00:04:00 -c:v copy -c:a copy out3.mp4
3
fadiak

Voici une solution qui a fonctionné pour moi.

Par exemple:

avconv -ss 0 -i x.mp4 -t 180  -vcodec copy -acodec copy -metadata track="1" "Part I.mp4"              
avconv -ss 180 -i x.mp4 -t 164  -vcodec copy -acodec copy -metadata track="2" "Part II.mp4"              
avconv -ss 344 -i x.mp4 -t 185  -vcodec copy -acodec copy -metadata track="3" "Part III.mp4"   

J'ai eu 50 entrées et je les ai mises dans un script ensemble. J'ai d'abord mis des squelettes comme

avconv -ss  -i x.mp4 -t   -vcodec copy -acodec copy -metadata track="  " ".mp4"  

Puis j'ai rempli le -ss et mis les titres. Après cela, j'ai utilisé libreoffice Calc avec espace comme délimiteur. J'ai eu les valeurs pour -t et suivre avec une formule et en faisant glisser.

3
fadiak

Si vous faites cela souvent, vous pouvez essayer de créer un script bash. Commencez avec quelque chose comme ceci:

#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

FILES=$(ls *.mp4|sort)

let START=0

for FILE in $FILES
do
    echo Processing $FILE
    mkdir "${FILE}-chop"
    for COUNT in {1..59}
    do
        exec avconv -i "${FILE}" -ss $START -t 60 -c:v copy -c:a copy "./${FILE}-chop/${COUNT} - ${FILE}"
        let START=$START+60
    done
done

IFS=$SAVEIFS

N'oubliez pas qu'il s'agit d'un code très laid, qui générera probablement de nombreuses erreurs et des fichiers vides. Il ne fonctionnera pas correctement si le fichier en entrée dure plus d'une heure, mais il vous permettra de commencer.

1
v010dya