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选项时,文件名有可能会重复使用)混淆

posted @ 2017-03-24 13:45  zhangyfr  阅读(4376)  评论(0编辑  收藏  举报