使用ffmpeg對視頻封裝和分離分離
分離
比如你的文件是 video+audio.mp4
分離視頻出來:ffmpeg -i video+audio.mp4 -vcodec copy -an video.mp4
分離音頻出來:ffmpeg -i video+audio.mp4 -acodec copy -vn Audio.mp3
封裝
如果視頻流.avi里面的視頻編碼本身是mpeg4就:
ffmpeg -i 視頻流.avi -i 音頻流.mp3 -vcodec copy -acodec copy 合並.mp4
如果 視頻流.avi里面的視頻編碼不是mpeg4,而你又想得到mp4就:
ffmpeg -i 視頻流.avi -i 音頻流.mp3 -vcodec mpeg4 -acodec copy 合並.mp4
--其他命令見下文,僅供參考,里邊有一些是錯的,還沒時間整理
http://blog.csdn.net/weiyuefei/article/details/51678582
http://www.cnblogs.com/dwdxdy/p/3240167.html
在使用hls技術播放視頻流時,首先要把視頻轉換為ts片和一個m3u8播放列表,使用ffmpeg進行該轉換時(低版本ffmpeg不支持直接轉,只能現在轉換成ts,再用m3u8-segmenter切片,筆者使用的是ffmpeg version-2.1.2),通常使用如下命令:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8
但是在此狀態下,默認的每片長度為2秒,m3u8文件中默認只保存最新的5條片的信息,導致最后播放的時候只能播最后的一小部分。
實際上還有一些其他參數可以控制這些內容:
-
-hls_time n: 設置每片的長度,默認值為2。單位為秒
-
-hls_list_size n:設置播放列表保存的最多條目,設置為0會保存有所片信息,默認值為5
-
-hls_wrap n:設置多少片之后開始覆蓋,如果設置為0則不會覆蓋,默認值為0.這個選項能夠避免在磁盤上存儲過多的 片,而且能夠限制寫入磁盤的最多的片的數量
-
-hls_start_number n:設置播放列表中sequence number的值為number,默認值為0
-
注意:播放列表的sequence number 對每個segment來說都必須是唯一的,而且它不能和片的文件名(當使用wrap選項時,文件名有可能會重復使用)混淆