Go語(yǔ)言流媒體開(kāi)源項(xiàng)目 LAL 今天發(fā)布了v0.34.3版本髓介。
LAL 項(xiàng)目地址:https://github.com/q191201771/lal
老規(guī)矩,簡(jiǎn)單介紹一下:
? 一. 音頻G711
新增了對(duì)音頻G711A/G711U(也被稱為PCMA/PCMU)的支持筋现。主要表現(xiàn)在:
? 1) rtmp G711作為輸入
1.1) 首先是rtmp進(jìn)唐础,rtmp出
測(cè)試方法如下:
# 推流命令:
ffmpeg -re -i testdata/test.flv -vcodec copy -acodec pcm_mulaw -ac 1 -ar 8000 -f flv "rtmp://127.0.0.1/live/test110"
# 播放命令:
ffplay rtmp://127.0.0.1/live/test110
提示,-acodec pcm_mulaw
是G711U矾飞,如果想使用G711A一膨,則修改為-acodec pcm_alaw
1.2) 然后是新增了rtmp轉(zhuǎn)rtsp的支持
# 推流命令:
ffmpeg -re -i testdata/test.flv -vcodec copy -acodec pcm_mulaw -ac 1 -ar 8000 -f flv "rtmp://127.0.0.1/live/test110"
# 播放命令:
ffplay rtsp://127.0.0.1:5544/live/test110
? 2) rtsp G711作為輸入
加強(qiáng)了對(duì)rtsp轉(zhuǎn)發(fā)rtsp的支持。
對(duì)于rtsp進(jìn)rtsp出的場(chǎng)景洒沦,lalserver只需要對(duì)rtp數(shù)據(jù)做轉(zhuǎn)發(fā)即可豹绪,理論上是支持所有編碼格式的。
但實(shí)際上由于對(duì)SDP格式的兼容性不夠好申眼,導(dǎo)致對(duì)于rtsp2rtsp G711的支持不夠好瞒津,新版本做了加強(qiáng)。
# 推流命令:
ffmpeg -re -stream_loop -1 -i testdata//test.flv -acodec pcm_mulaw -ac 1 -ar 8000 -vcodec copy -f rtsp rtsp://localhost:5544/live/test110
# 播放命令:
ffplay rtsp://127.0.0.1:5544/live/test110
? 3) 后續(xù)
3.1) 當(dāng)前版本G711 rtsp轉(zhuǎn)rtmp括尸,只有視頻沒(méi)有聲音巷蚪,我們會(huì)盡快支持,這個(gè)工作已經(jīng)在進(jìn)行中了姻氨。
3.2) 加強(qiáng)G711在各采樣率下的表現(xiàn)钓辆。
3.3) 增加ts等容器協(xié)議對(duì)G711的支持。
? 二. Web UI
在lalserver進(jìn)程內(nèi)部增加了一個(gè)簡(jiǎn)單的Web頁(yè)面肴焊,啟動(dòng)lalserver后前联,在瀏覽器中輸入 http://127.0.0.1:8083/lal.html 進(jìn)行訪問(wèn)。
想看截圖的點(diǎn)我娶眷, 基本分為三大部分:
- 服務(wù)的基礎(chǔ)信息
- 比如版本似嗤、啟動(dòng)時(shí)間等
- group列表信息
- 比如總共有多少輸入流
- 比如每條流的名稱,啟動(dòng)時(shí)間届宠,遠(yuǎn)端地址烁落,視頻編碼格式、寬高豌注,當(dāng)前碼率等
- 特定group信息
- 操作方式:點(diǎn)擊group列表中的流
- 比如有多少路拉流伤塌,拉流的信息等
頁(yè)面支持定時(shí)刷新,把Auto勾選上即可轧铁。
頁(yè)面是通過(guò)lalserver內(nèi)部的http server渲染的每聪,頁(yè)面調(diào)用lalserver HTTP-API接口動(dòng)態(tài)的獲取信息。
只使用原生的前端技術(shù),沒(méi)有引入第三方的js/css庫(kù)药薯。
我們把lal的Go版本最小依賴從1.14升級(jí)到1.16绑洛,從而使用embed功能將html頁(yè)面內(nèi)嵌到了lalserver可執(zhí)行程序里。
這意味著童本,你在部署lalserver時(shí)不需要部署html靜態(tài)文件真屯,只需要部署lalserver可執(zhí)行程序加配置文件即可。
后續(xù)穷娱,我們會(huì)在這個(gè)頁(yè)面上增加所有基于HTTP-API接口的功能绑蔫,比如發(fā)送命令從遠(yuǎn)端拉取rtsp流等。
? 三. 小程序卡頓
微信小程序用rtmp推流時(shí)泵额,支持一個(gè)模式(mode)叫RTC(實(shí)時(shí)通話)晾匠,用這個(gè)模式推流給lalserver后再?gòu)膌alserver拉流播放會(huì)非常卡梯刚。
這個(gè)版本修復(fù)了這個(gè)bug。
? 更多
還有一些修改不逐個(gè)介紹了薪寓,大致如下:
- [feat] rtmp: server session支持發(fā)送ack
- [opt] rtmp: client session 只使用PeerWinAckSize的值作為是否發(fā)送ack的觸發(fā)條件
- [refactor] remove deprecated io/ioutil packages
- [opt] rtmp: ClientSession支持定制化tls.Config
- [fix] 修復(fù)解析配置文件中sub_session_hash_key字段寫(xiě)錯(cuò)的bug
- [log] add log when not caching frame by SingleGopMaxFrameNum
- [chore] 增加檢查版本的腳本check_versions.sh
以上內(nèi)容摘取自 《lal CHANGELOG版本日志》 亡资,你可以通過(guò)源文檔獲取更詳細(xì)的內(nèi)容。
? 開(kāi)發(fā)者
感謝參與這個(gè)版本的開(kāi)源貢獻(xiàn)者: yoko(阿亮), ZSC714725(阿響), jaesung9507(阿韓), liquanqing(阿空), joestarzxh(阿海)
? 進(jìn)一步了解lal
本文完向叉,祝你今天開(kāi)心锥腻。
yoko, 202303