Short-notes on Add subtitle to any video with ffmpeg
บางทีเวลาทำ VDO ประกอบ presentation หรือ document นี่ก็จะมีความอยากใส่ subtitle เพื่อที่จะได้ให้คำอธิบายแบบละเอียดๆ เคลียร์ๆ และไม่ต้องมาซ้ำอธิบายหลายๆครั้ง วันนี้พอทำ VDO อันที่ 2/3 นี่แหละก็ลืมไปแล้วว่าครั้งที่แล้วทำยังไงเลยเขียน blog เผื่อไว้กลับมาอ่านวันหลัง
ขั้นตอนที่ 1 คือเตรียม file subtitle (.srt) ซึ่งก็มี format ง่ายๆแบบนี้คือ
[sequence]
[hh:mm:ss,ms] --> [hh:mm:ss,ms] อันนี้คือ marker ว่าจากเวลาไหนถึงเวลาไหน
[Text]
[newline]
[newline]
ซึ่งถ้าทำตัวอย่าง ให้ดูก็จะประมาณนี้
1
00:00:01,000 --> 00:00:11,000
Subtitle 1
2
00:00:11,18,367 --> 00:00:18,000
Subtitle 2
3
00:00:18,18,367 --> 00:00:27,000
Subtitle 3
4
00:00:27,000 --> 00:00:38,000
Subtitle 4
5
00:00:38,000 --> 00:01:04,000
Subtitle 5
ขั้นตอนที่ 2 คือแปลงไฟล์ .srt ไปเป็น .ass เพราะปกติผมทำวิดีโอด้วย mp4 และผมใช้ libass สำหรับเป็น container ของ codec นะครับ
ffmpeg -i original.srt subtitle.ass
หลังจากนั้นก็ทำการ modify VDO ด้วย ffmpeg โดยให้ใส่ subtitle ด้วย libass ดังนี้
ffmpeg -i input.mp4 -vf ass=subtitle.ass output_w_sub.mp4
สำหรับใครที่ทำไม่ได้เพราะ ffmpeg ไม่ได้ enable options บางอัน อันนี้เป็น command ที่ผมลง ffmpeg แบบ all avialable options เลยทีเดียว
brew install ffmpeg $(brew options ffmpeg | grep -vE '\s' | grep -- '--with-' | tr '\n' ' ')
ทีนี้ก็จะได้ VDO + subtitle สวยงามกันแล้วนะครับ #HappyXMas ครับ