Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader
- import java.io.InputStreamReader
- fun main() {
- val videoOriginal = "/home/narciso/Videos/moses.mp4" // Vídeo original
- val videoCortado = "/home/narciso/Videos/moses_cortado.mp4" // Vídeo cortado
- val videoBase = "/home/narciso/Videos/eu.mp4" // Vídeo base
- val videoFinal = "/home/narciso/Videos/video_certo.mp4" // Resultado final
- // Comando 1: Cortar o vídeo original
- val cutCommand = arrayOf(
- "ffmpeg",
- "-y", // Força a sobrescrição do arquivo de saída
- "-i", videoOriginal,
- "-ss", "36.43", // Começa no tempo 36.43s
- "-c", "copy", // Copia sem recompressão
- videoCortado
- )
- println("Cortando o vídeo...")
- executeCommand(cutCommand)
- // Comando 2: Empilhar os vídeos verticalmente (Instagram Layout)
- val stackCommand = arrayOf(
- "ffmpeg",
- "-y", // Força a sobrescrição do arquivo de saída
- "-i", videoCortado, // Vídeo cortado
- "-i", videoBase, // Vídeo base
- "-filter_complex",
- "[0:v]scale=1080:960:force_original_aspect_ratio=decrease,pad=1080:960:(ow-iw)/2:(oh-ih)/2[v0];" + // Scale and pad first video to 1080x960
- "[1:v]scale=1080:960:force_original_aspect_ratio=decrease,pad=1080:960:(ow-iw)/2:(oh-ih)/2[v1];" + // Scale and pad second video to 1080x960
- "[v0][v1]vstack=inputs=2[v];" + // Stack videos vertically (1080x1920)
- "[0:a][1:a]amerge=inputs=2[a]", // Combine audio streams
- "-map", "[v]", // Usa o vídeo empilhado
- "-map", "[a]", // Usa o áudio combinado
- "-ac", "2", // Define áudio estéreo
- "-b:v", "20M", // Define a bitrate do vídeo para 1 Mbps
- "-b:a", "256k", // Define a bitrate do áudio para 128 kbps
- "-r", "30", // Define a taxa de frames para 30 fps
- videoFinal
- )
- println("Empilhando os vídeos...")
- executeCommand(stackCommand)
- println("Processo concluído! Vídeo salvo em: $videoFinal")
- }
- /**
- * Executa um comando no terminal.
- */
- fun executeCommand(command: Array<String>) {
- try {
- val process = ProcessBuilder(*command).start()
- val reader = BufferedReader(InputStreamReader(process.errorStream))
- var line: String?
- while (reader.readLine().also { line = it } != null) {
- println(line) // Exibe a saída do FFmpeg
- }
- process.waitFor()
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
Add Comment
Please, Sign In to add comment