ffmpeg把ts文件转m3u8并切片
?
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
?
轉載于:https://www.cnblogs.com/shengs/p/4977662.html
總結
以上是生活随笔為你收集整理的ffmpeg把ts文件转m3u8并切片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS属性之assign,copy,re
- 下一篇: 计算进程出现次数