Split/Merge Video and Audio stream without re-encoding ด้วย ffmpeg
ffmpeg เป็นเครื่องมือ multimedia framework ที่เป็น Open Source มีความสามารถ decode, encode, transcode, mux, demux, stream, filter ไฟล์ Video/Audio หลากหลาย สามารถหา Download มาใช้งานได้ ไม่ว่าจะเป็น Linux, Windows หรือ Mac
ในบทความนี้จะโฟกัสที่การรวมไฟล์ Video และ Audio เป็นไฟล์เดียว และการแยก stream audio ออกจากไฟล์ Video โดยที่ไม่มีการเข้ารหัสใหม่ (Re-encoding) ให้เสียรายละเอียดไปนั่นเอง
ffmpeg option เบี้องต้น
- -i input file
- -c copy stream (not re-encoding)
- -map map stream (0:v track0 video stream/ 1:a track1 audio stream)
— — — — — — — — — — — — — — — — — — — — -
Merge Video and Audio stream file to file
กรณีที่เราต้องการรวมไฟล์ เช่น ไฟล์ Hi-def 1080HD จาก Youtube นั้นจะดาวน์โหลดเป็นไฟล์ Video และ Audio แยกกันมา
เมื่อจะรวมไฟล์จะใช้คำสั่ง
ffmpeg -i <Video.mp4> -i <Audio.mp3> -c copy <mergefile.mp4>
ffmpeg -i <Video.mp4> -i <Audio.mp3> -c copy -map 0:v -map 1:a <mergefile.mp4>
Example
ffmpeg -i MV.mp4 -i Audio.mp3 -c copy -map 0:v -map 1:a izone_mv.mp4
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
กรณีจะ Split Stream เสียงออกมาจากไฟล์ Video
check file ว่ามี stream อะไรบ้าง
ffmpeg -i input.mkv # show stream numbers and formats
ดึง stream เสียง ออกมาเป็นไฟล์เสียง
ffmpeg -i input.mkv -c copy audio.m4a # AAC
ffmpeg -i input.mkv -c copy audio.mp3 # MP3
ffmpeg -i input.mkv -c copy audio.ac3 # AC3
ffmpeg -i input.mkv -an -c copy video.mkv
ffmpeg -i input.mkv -map 0:1 -c copy audio.m4a # stream 1