Dividir um vídeo em várias partes

3

Eu tenho vários vídeos grandes que quero dividir em partes. A única maneira de fazer isso é dividir uma parte de cada vez com o OpenShot. Eu tenho que dividir, esperar um longo tempo, excluir a parte, dividir a próxima parte, ...

Existe uma maneira melhor? Eu tentei google mas parece que todos os métodos também exigem dividir uma parte de cada vez. Isso é realmente inconveniente, já que preciso que cada vídeo seja dividido em 20 a 30 partes. Eu quero ser capaz de marcar apenas o ponto de divisão e voltar mais tarde e encontrar tudo pronto. Alguém sabe uma maneira?

ATUALIZAÇÃO: Agora estou trabalhando em uma solução de linha de comando. Eu tentei este comando, mas o único problema é que há alguns segundos de onde o vídeo congela no início (e no final) de cada divisão de saída.

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
    
por user137017 28.03.2014 / 09:57

2 respostas

3

Aqui está uma solução que funcionou para mim.

Por exemplo:

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"   

Eu tinha 50 entradas e as coloquei em um script juntas. Eu primeiro coloquei esqueletos como

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

Depois preenchi o -ss e coloquei os títulos. Depois disso, usei o libreoffice Calc com espaço como delimitador. Eu tenho os valores para -t e acompanhar com uma fórmula e arrastando.

    
por user137017 29.03.2014 / 21:20
1

Se você fizer isso com frequência, pode tentar criar um script bash. Comece com algo assim:

#!/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

Tenha em mente que é um código muito feio e provavelmente produzirá muitos erros e arquivos vazios, e não funcionará corretamente se o arquivo de entrada tiver mais de uma hora de duração, mas o ajudará a começar.

    
por v010dya 09.11.2014 / 13:42