標籤:
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
ffmpeg把ts檔案轉m3u8並切片