国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解NODEJS基于FFMPEG視頻推流測試

2024-05-06 15:24:20
字體:
來源:轉載
供稿:網友

以ffmpeg為核心,包裝一款局域網內接收轉碼并推送互聯網的客戶端軟件。本文僅使用ffmpeg基礎功能,拉流、轉碼、推流及簡單播放設置。

工作流程

    拉取遠端視頻流,視頻流格式為 rtsp 轉換為常用播放格式 rtmp 推送至播放端口 rtmp://您的推送端地址,用戶使用播放軟件連接該地址后可以直接進行內容播放

所需工具及軟件

1、ffmpeg 命令行工具官網鏈接,選擇它的優勢在于:

    免費 無需安裝,很大的減少用戶操作復雜度 命令行啟動調用

2、nodejs 版本號為 v6.11.3。(實際項目中使用electron,但若沒有打包成客戶端的需求,nodejs即可正常運行)

3、tsc 版本號為 v2.6.1。項目使用TypeScript為主要編寫語言,您使用JavaScript也沒有問題。

若使用tsc,請使用2.0以上版本,自帶的@type工具會極大提升編碼效率

4、fluent-ffmpeg 版本號為 v2.1.2。該nodejs包封裝了ffmpeg的命令行調用部分,加強了代碼的可讀性,若熟悉ffmpeg 命令行使用手冊,亦可不使用該包。

  npm install --save fluent-ffmpeg  //使用js編碼的用戶,可以忽略下條命令  npm install --save @types/fluent-ffmpeg 

VLC播放軟件。用于監測推流、轉碼、播放是否正常。官網鏈接

實現代碼

  const ffmpegPath = "./dist/ffmpegProgram/bin/ffmpeg.exe";  const ffprobePath = "./dist/ffmpegProgram/bin/ffprobe.exe";  const flvtoolPath = "./dist/ffmpegProgram/bin/ffplay.exe";  export function startPushVideo():void{    getCommands().then((commands:ffmpegPaths[])=>{      for(let key in commands){        let command = commands[key];        //設置輸入流地址        let ffCommand = ffmpeg(command.inputPath)        //設置輸出流地址        .output(command.outputPath)        //因需要打包客戶端軟件,故而將ffmpeg打包進軟件中        //需設置各應用程序的對應路徑        //若僅在本機使用,可以跳過該步驟        //設置環境變量,添加 PATH 即可        .setFfmpegPath(ffmpegPath)        .setFfprobePath(ffprobePath)        .setFlvtoolPath(flvtoolPath)        //為保證靈活性,非必須參數采用配置文件讀取模式        .size(command.size);        for(let key in command.args){          ffCommand.outputOption(command.args[key]);        }        ffCommand.on("start",(commandLine)=>{          //commandLine 為實際上調用的命令行命令,拼接邏輯為          //您的ffmpeg所在路徑 -i inputOptions 您的拉流協議和路徑 outputOptions 推送流協議和地址          //ffmpeg -i "rtsp://yourPullUrl" -f flv -r 25 -s 640x480 -an "rtmp://yourPushUrl"          console.log('[' + showTime() + '] Vedio is Pushing !');          console.log('[' + showTime() + '] Spawned Ffmpeg with command !');          console.log('[' + showTime() + '] Command: ' + commandLine);        })        .on('error', function(err, stdout, stderr) {          console.log('error: ' + err.message);          console.log('stdout: ' + stdout);          console.log('stderr: ' + stderr);        })        .on('end', function() {          console.log('[' + showTime() + '] Vedio Pushing is Finished !');        })        .run();      }    },(error)=>{      console.log('error: ' + error);    })  }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 罗田县| 翁源县| 呼和浩特市| 甘肃省| 宾川县| 伊春市| 南乐县| 巴楚县| 化德县| 秭归县| 宁南县| 彩票| 体育| 彭山县| 砚山县| 景德镇市| 扎赉特旗| 九江市| 会泽县| 都昌县| 东兰县| 穆棱市| 盐池县| 凯里市| 报价| 萍乡市| 杨浦区| 聂荣县| 乌拉特中旗| 兴山县| 大洼县| 新乡市| 仁怀市| 兴和县| 拜城县| 辽宁省| 和顺县| 鸡西市| 扎鲁特旗| 宁都县| 金溪县|