
🛠 짧은 영상이어도 동영상을 업로드하고 보려면 모든 파일을 받아와서 실행해야한다.
하지만 실제 유튜브나 타 스트리밍사이트는 영상을 바로 불러오는데 이 점이 궁금해서 시작하게 되었다.

🎁 알아보니 동영상파일을 잘게 자른 파일이 .ts파일이고 FFmpeg를 사용해서 .ts파일로 쪼개는게 가능하다.
⌛ 명령어를 알아내는 것이 쉽지 않았는데... 결국 하나의 mp4를 여러 .ts파일로 바꾸는 방법을 알아냈다.
ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts output.ts
ffmpeg -i output.ts -c copy -map 0 -segment_time 3 -f segment -reset_timestamps 1 output_%03d.ts

@Configuration
class FFmpegConfig(
@Value("\${ffmpegPath}")
val ffmepgPath : String,
@Value("\${ffprobePath}")
val ffprobePath : String
) {
@Bean
fun getFFmpeg() : FFmpeg{
return FFmpeg(ffmepgPath)
}
@Bean
fun getFFprobe() : FFprobe{
return FFprobe(ffprobePath)
}
}
//mp4 to ts
val builder = FFmpegBuilder()
.setInput(inputFilePath.toString())
.addOutput(tsFilePath).addExtraArgs("-c","copy")
.addExtraArgs("-bsf:v","h264_mp4toannexb")
.addExtraArgs("-f", "mpegts")
.setStrict(FFmpegBuilder.Strict.EXPERIMENTAL).done()
FFmpegExecutor(ffmpeg, ffprobe).createJob(builder).run()
//ts 분할
val segmentBuilder =
FFmpegBuilder().setInput(tsFilePath)
.addOutput("${tsFilePath}_%03d.ts")
.addExtraArgs("-c", "copy")
.addExtraArgs("-map", "0")
.addExtraArgs("-segment_time", "5")
.addExtraArgs("-f", "segment")
.addExtraArgs("-reset_timestamps", "1")
.setStrict(FFmpegBuilder.Strict.EXPERIMENTAL)
.done()
FFmpegExecutor(ffmpeg, ffprobe).createJob(segmentBuilder).run()
