Linux_x86_64流媒體環境:nginx + EasyDarwin-master
客戶端播放器:VLC media player
下載windows下的ffmepg二進制版本,請進網站http://ffmpeg.zeranoe.com/builds/win32/shared|static 最新版本,無需自己編譯。
下載完解壓后,需要配置ffmepg的path環境變量。Path=%Path%;E:\ffmpeg-20151117-git-e9aea6d-win64-static\ffmpeg-20151117-git-e9aea6d-win64-static\bin
下面流轉換和切片的方式:
ffmpeg -ss 01:00:00 -i input_file_h264.mp4 -vcodec copy -acodec copy -t 00:06:00 output_file.mp4
------------------------------
利用ffmpeg將已有的視頻文件轉換成ts文件
ffmpeg -y -i <in file> -vcodec copy -acodec copy -vbsf h264_mp4toannexb <output file>
其中in file為待轉換的視頻文件,比如input.mov,output file為轉換后的文件,要命名為output.ts
利用segmenter將轉換好的ts文件切割成多個ts片,並生成.m3u8的索引文件
./segmenter -i out.ts -n 10 -p segmenter_test -m test.m3u8 -u #需要安裝segmenter包
i表示輸入文件,n表示切割10秒,p表示切割文件的前綴。m表示生成的m3u8文件名,u表示這些切割后的文件處於web server的哪個目錄下
PS:實踐過程中發現一個問題,就是切片之后,最后一段ts不管是不是10s,同樣會按10s去切,導致切好后的視頻最后一段會加上去幾秒的黑段來補足10s,原因是segmenter.c中的程序寫的還有缺陷,修正方法如下:
---------------------------
ffmepg把ts文件轉m3u8並切片:
ffmpeg -i xx.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts
大家都說HLS代表future,rtsp已經是過去式了。
怎么分割並轉換為h264編碼呢?
先把ts流中的格式轉換對,可以用以下命令試試:
ffmpeg -i your.ts -acodec copy -vcodec libx264 new.h264.ts
-----------------------------
ffmpeg -i xxxxx.ts -hls_time 10 -hls_list_size 10 -f hls xxxx.m3u8
-----------------------------
以下是筆者的方法:
ffmpeg -y -i bs.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb bs2.ts
ffmpeg -i bs2.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 3 output%03d.ts