Cortar pedaço de video utilizando java

3 respostas
videojava
M

Boas, estou a tentar fazer um método que corte um certo pedaço do video.
Tentei fazer desta forma:

public void cortar(File file, int segundos) throws FileNotFoundException, IOException, InterruptedException {
    InputStream is = null;
    OutputStream os = null;
    try {
        is = new FileInputStream(file);
        os = new FileOutputStream(new File("..."));
        byte[] buffer = new byte[1024];
        int length;
        int total = 0;

        while ((length = is.read(buffer)) > 0 && total < is.available() / 2) {
            os.write(buffer, 0, length);
            total += length;
        }
    } finally {
        is.close();
        os.close();
    }
}

Porém o ficheiro gerado continua a mostrar o tamanho total do video, mas termina na metade, como se o video tivesse corrompido. Se tentar cortar o video pelo inicio (exemplo começar no segundo 2), o video fica inteiramente corrompido.
Existe alguma forma melhor de fazer isso?

3 Respostas

R

FFmpeg

M

Sem api

S

Sim, pois de fato você gerou um arquivo corrompido.
Se você quer fazer isso sem usar uma API específica, vai ter que aprender qual a estrutura do tipo de arquivo que você quer dividir.
Não é simplesmente pegar a metade dos bytes dele e achar que foi devidamente cortado.

Criado 10 de agosto de 2020
Ultima resposta 10 de ago. de 2020
Respostas 3
Participantes 3