O código JAVA de cinco minutos ensina: FFmpeg realiza teste de vídeo
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.)
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/
e descompacte-o após o download ser bem sucedido, conforme mostrado na figura abaixo:
renomeie a pasta descompactada para ffmpeg, conforme mostrado na figura abaixo:
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
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
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:
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
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:
4.2.2 Interceptação bem-sucedida
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:
4.3.3 Exibição de efeitos
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:
o usuário na imagem abaixo olha o conteúdo completo do vídeo:
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.