Código JAVA de cinco minutos ensina: FFmpeg realiza demonstração de vídeo (versão janela)

1. Cenário de negócios

   Com o advento da era do pagamento por conhecimento, as plataformas de aprendizagem online estão surgindo e empresas de todos os portes estão desenvolvendo plataformas de aprendizagem online.Por isso, surgirão as seguintes necessidades: função de demonstração em vídeo do curso .

Para a versão Linux, clique aqui:
Cinco minutos de código ensina: JAVA para realizar a função de demonstração de vídeo (versão Centos7)
PS: (O código usado neste blog, o pacote de instalação ffmpeg e a ferramenta de linha de comando cmd serão empacotados e colocados no anexo abaixo ↓↓↓↓↓ Em, para sua referência de download.)

Clique para baixar FFmpegDemo

Insira a descrição da imagem aqui

2. Ideias de implementação

Depois que o usuário da plataforma carrega seu próprio curso, o servidor intercepta um pequeno segmento do vídeo do curso para armazenamento (por exemplo, intercepta os primeiros 30 segundos do conteúdo de vídeo como o conteúdo de teste). Portanto, depois que o usuário carrega o vídeo, dois vídeos (1. vídeo original 2. vídeo de teste) são gerados após o processamento pelo servidor. Usuários comuns acessam o vídeo para reproduzir o vídeo de teste e usuários pagantes acessam o vídeo para reproduzir o vídeo original.

3. Introdução ao framework de código aberto FFmpeg

Aqui, o Java é usado para chamar o FFmpeg para processar vídeo e áudio, que é implementado instalando manualmente o FFmpeg no sistema e, em seguida, executando comandos para chamar.

Site oficial do FFmpeg: http://ffmpeg.org/
(Leiame do FFmpeg: Converter vídeo e áudio tornou-se tão fácil!)

4. Implementação do ambiente Windows

4.1 Windows install FFmpeg

4.1.1 Baixe e descompacte

Baixe o pacote de instalação do FFmpeg
https://ffmpeg.zeranoe.com/builds/
Insira a descrição da imagem aqui
e descompacte-o após o download ser bem sucedido, conforme mostrado na figura abaixo:
Insira a descrição da imagem aqui
renomeie a pasta descompactada para ffmpeg, conforme mostrado na figura abaixo:
Insira a descrição da imagem aqui

4.1.2 Configurar variáveis ​​de ambiente

Clique com o botão direito em "Computador" - "Propriedades", conforme mostrado na figura a seguir: Após
Insira a descrição da imagem aqui
clicar no botão "Variáveis ​​Ambientais", a janela "Variáveis ​​Ambientais" aparecerá, localize e selecione a variável "Caminho", clique em Editar, conforme mostrado
Insira a descrição da imagem aqui
na figura a seguir: Adicionar conteúdo à variável PATH "; : \ ffmpegDemo \ ffmpeg \ bin ", clique em OK.

4.1.3 Configuração de teste bem-sucedida

Abra o cmd e digite o comando "ffmpeg". Se houver saída, a configuração foi bem-sucedida:
Insira a descrição da imagem aqui

4.2 Java chama ffmpeg para obter interceptação de vídeo

4.2.1 Captura de vídeo de linha de comando

Armazene os arquivos de vídeo no diretório de destino sob o Windows: Para o
Insira a descrição da imagem aqui
vídeo mp4 na imagem acima, intercepte um arquivo de teste de 30 segundos e nomeie-o test-sk.mp4:

ffmpeg -ss 0:0:0 -t 0:0:30 -i F:\ffmpegDemo\test.mp4 -vcodec copy -acodec copy  F:\ffmpegDemo\test-sk.mp4

Basta executá-lo conforme mostrado abaixo:
Insira a descrição da imagem aqui

4.2.2 Interceptação bem-sucedida

Insira a descrição da imagem aqui

4.3 Implementação de FFmpeg de chamadas Java

4.3.1 Demonstração de código

Eu testei o acima, execute o comando ffmpeg diretamente no cmd, você pode interceptar o vídeo. Portanto, você só precisa chamar a linha de comando por meio do código java e executá-lo em cmd. código mostrado abaixo:

/**
 * @Author : zhangS
 * @Date :2020-08-19
 */
public class ExecWindowCMD {
    
    

    public static void main(String[] args) {
    
    

        File viedoFile = new File("F://ffmpegDemo//test.mp4");
        File outFile = new File("F://ffmpegDemo//test3.mp4");
        //根据目标视频viedoFile,生成截取30秒后的试看视频outFile
        ExecWindowCMD.cutVideo1(viedoFile,outFile,30);
    }

    /*
     *
     * @param videoFile  原视频
     * @param outputFile  截取后视频
     * @param timeLength  截取时间长度,单位秒
     */
    public static void cutVideo1(File videoFile, File outputFile,  int timeLength) {
    
    
        String cmdStr = "F:\\ffmpegDemo\\ffmpeg\\bin\\ffmpeg.exe -ss 0:0:0 -t" + " 0:0:" + timeLength + " -i " + videoFile + " -vcodec copy -acodec copy " + outputFile;
        Runtime run = Runtime.getRuntime();
        try {
    
    
            Process process = run.exec("c:/nircmd.exe elevate  " + cmdStr);
            InputStream in = process.getInputStream();
            in.close();
            process.waitFor();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        System.out.println("----截取视频成功----");
    }
}

4.3.2 Processamento de permissões de cmd

Execute diretamente a senha da linha de comando de cmd por meio de java, pode haver permissões insuficientes e causar falha de execução. Portanto, baixe uma ferramenta de linha de comando de janela nircmd.
Site oficial da ferramenta de linha de comando do Windows: http://www.nirsoft.net/utils/nircmd.html

Após o download, coloque nircmd.exe sob a unidade c, pegue o código acima como exemplo, conforme mostrado abaixo:
Insira a descrição da imagem aqui

4.3.3 Exibição de efeitos

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

4.3 O efeito da integração no projeto

Faça upload do vídeo em segundo plano, intercepte-o em 2 cópias pelo FFmpeg e, em seguida, julgue na página se o usuário está assistindo à parte do teste ou ao vídeo completo para exibição.

O usuário na imagem abaixo vê o conteúdo do teste:
Insira a descrição da imagem aqui
o usuário na imagem abaixo olha o conteúdo completo do vídeo:
Insira a descrição da imagem aqui

5. Análise de pontos técnicos

    Este blog se concentra principalmente na dem compilação da função de teste de vídeo. Também irei fornecer a operação de interceptação de vídeo no Centos7, que é conveniente para outros desenvolvedores usarem quando encontrarem o cenário de desenvolvimento de teste de vídeo.
    Existem muitas outras funções de processamento de streaming de mídia na estrutura FFmpeg. Aqui nos concentramos na implementação de métodos de interceptação de vídeo. Este blog é implementado instalando manualmente o FFmpeg no sistema e, em seguida, executando diretamente a linha de comando em Java.

Acho que você gosta

Origin blog.csdn.net/u010312671/article/details/108108713
Recomendado
Clasificación