HLS協議下多源同時切片

/************************************

允許轉載,請註明文章來源和作者

Zhang Jianwei

BIT

[email protected]

************************************/

(目前在測試環節中基本上均採用腳本文件)

首先先對視頻轉碼的命令進行修正:

之前的一些命令會使得轉好的ts源在切片時,使得切片程序報錯,經過測試,可以採用以下命令來解決報錯問題。

ffmpeg -i <input file> -f mpegts -b:v <rate> -bsf:v h264_mp4toannexb <output file>

經過前面的過程,現在基礎環境已經搭建完成,可以進行下一步的工作:多視頻源同時切片與直播。

由於項目要求直播要能夠自適應不同網速的網絡環境,所以提供了多個不同碼率的視頻源,並且:1、採用ts格式:意味着不需要轉碼;2、使用udp協議。

基於以上要求,給出下面腳本代碼:

#!/bin/bash
IP=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "地址:"`
./segmenter -i udp://localhost:12345 -d 5 -p livesrc/live_ -n 10  -m live.m3u8 -u http://$IP/ &
./segmenter -i udp://localhost:23456 -d 5 -p livesrc/live1_ -n 10  -m live1.m3u8 -u http://$IP/ &
其中第二行“IP=……”是用來獲取本機IP地址的。

第三第四行代碼就是多源同時切片的命令。

-i後面跟的是輸入的視頻源,在測試中我用VLC進行流的發佈,採用udp協議,-d後面是切片的時間,-p後面是<dir/prefix>,-n則是保留切片的個數(直播使用,只保留10個切片,同樣會自動更新m3u8文件),-u後面則是網絡路徑(*說明*切片後在m3u8文件裏完整的播放路徑是這樣的:[-u後面的內容]+[-p後面的內容]。在本例中是:http://$IP/livesrc/live_XXX.ts)。

在命令的最後的&則是用來將這一命令開啓的segmenter程序放到後臺運行,這個就是針對多源進行切片的方法。如果在前臺進行運行,那麼同時只能對一個源進行切片,而使用&則可以將程序挪到後臺運行,這樣可以同時針對多個源進行切片。

以上方法經過測試可行。(測試環境:server--ubuntu+apache2,client--Macbook Air)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章