ffmpeg对视频封装和分离
使用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选项时,文件名有可能会重复使用)混淆