[Media] 影音傳輸-實作篇
以下內容完全為整理自 30 天之即時網路影音開發攻略(小白本) by 我是小馬克 @ iThome 的筆記,無原創內容。
建立串流點播工具
將影音檔轉成 HLS 用的串流檔
透過 ffmpeg 即可將影音檔(例如,mp4
)轉成 .m3u8
和 .ts
適用於 HLS 的串流檔。
在 Node.js 中可以使用 fluent-ffmpeg
這個工具進行轉換:
// ./ffmpeg-helper.js
// 把 mp4 檔轉換成 .m3u8 索引檔和多支 .ts 檔
const ffmpeg = require('fluent-ffmpeg');
module.exports = {
convertToHls: async (file) => {
return new Promise((resolve) => {
ffmpeg(file, { timeout: 432000 })
.addOptions([
'-profile:v baseline', // for H264 video codec
'-level 3.0',
'-s 640x360', // 640px width, 360px height
'-start_number 0', // start the first .ts segment at index 0
'-hls_time 10', // 10 second segment duration
'-hls_list_size 0', // Maximum number of playlist entries
'-f hls', // HLS format
])
.output('./source-m3u8/output.m3u8')
.on('end', () => {
console.log('finish');
resolve();
})
.run();
});
},
};
並且建立一支 convert.js
來執行:
// ./convert.js
const ffmpegHelper = require('./ffmpeg-helper');
(async () => {
await ffmpegHelper.convertToHls('./source.mp4');
})();
轉換好的檔案會被放置到 source-m3u8
的資料夾內: