ffmpeg图片合成视频
未知
2021-06-05 15:18:42
0

第一步:要计算出视频的总帧数:

总帧数 = duration * fps 。

duration是我们设定的视频的长度,fps是视频每秒的帧数。

第二步:将所有的图片文件放到一个临时目录,并且制定一个命名规则(可正则的): 
例如图片的素材是image0.jpg image1.jpg image2.jpg

然后可以执行命令合成视频了

带音频:

ffmpeg -threads 2  -i 1976.aac -absf aac_adtstoasc  -i 1.jpg -acodec aac -strict -2 -vcodec libx264 -ar 22050 -ab 128k -ac 2 -pix_fmt yuvj420p -y test1.mp4

-threads 2 以两个线程进行运行, 加快处理的速度
-absf aac_adtstoasc 将结果的音频格式转为faac格式时需要这个选项。将音频格式转为faac是因为在iphone上某些音频格式的视频无法播放,例如mp3. 但faac格式的音频的视频在iphone上可以播放。
-acodec  音频选项, 使用codec编解码,aac和mp3一样是一种音频格式,-acodec等同于-c:a
-strict strictness 跟标准的严格性
-vcodec 视频选项,强制使用codec编解码方式 -vcodec等同于-c:v
-ab 音频选项,bitrate 设置音频码率
-ar 音频选项,freq 设置音频采样率
-ac 音频选项,channels 设置通道 默认为1
-y 对输出文件进行覆盖
纯图片:
1.基本格式
#: ffmpeg -loop 1 -f image2 -i /images/image%d.jpg -vcodec libx264 -t 10 -r 10 tt.mp4
-loop 1循环读输入 0读完就不读了
-f 设定输出格式(format)
-i filename 输入文件 其中/images/images%d.jpg 为图片路径 图片的命名格式为image%d.jpg形式,即:image0.jpg image1.jpg image2.jpg ....... tt.mp4为输出视频文件名
-vcodec 强制使用codec编解码方式 -vcodec等同于-c:v
-t duration 输出视频总时长,单位秒,和-t一起使用。
       两种用法:1,用做输入选项(在-i之前),是限制读取输入文件的的时长;  2,用做输出选项(before an output url),超过这个时间停止写输出文件;  比如:循环读取一个输入文件时(-loop 1),当到时间就会停止输出,生成一个duration时长的视频。但是如果没有循环选项,而且输入文件短于这个时长时,就会随着输入文件结束就结束,生成视频,视频时长小于duration。所以我们可以看出 -t 并不仅仅是输出文件时长。
-r fps 表示定义帧率为10,这样输出的视频就是每秒播放十帧,默认是25。
       帧率,可以指定两个帧率,输入帧率,输出帧率; 输入帧率:-i之前,设定读入帧率,比如 -r 0.5 ,也就是说1秒要播0.5个图片,那么一个图也就是要播2s; 输出频率:-i之后,真正的输出视频播放帧率,不写的话,是默认和输入频率一样。比如设 -r 30 ,对应上面的设定,一个图播2s,那么输出文件播放时,这2s内,都是这张图,但是播放了60帧。

从不同目录下多张图合成视频

cat读取多张图片输入到一个“全局管道文件”中,然后后面ffmpeg命令从全局管道中(指定-f image2 pipe)读取输入文件,生成视频。
#:cat Desktop/aa/img1.jpg Desktop/aa/img2.jpg Desktop/aa/img3.jpg | ffmpeg -loop 0 -f image2 pipe -r 3 -b 200k -s 640*360 -t 12 -i log.pipe -y Desktop/oup.mkv


如果您的图像按顺序编号(img001, img002, img003..),实现的效果是每张图片保持5秒就换下一张图片,直到图片播放完。
#:ffmpeg -framerate 1/5 -i img%3d.jpg -r 5 video.mp4


如果您的文件名是不规则的,并且您是在Unix shell(如bash)中执行,则可以运行
#:ffmpeg -framerate 1/2 -pattern_type glob -i ./images/'*.jpg' -r 5 video.mp4

相关内容

php 时间函数时间格式日...
rfc3339标准时间转时间格式 function rfc3339...
2024-08-10 11:28:15
html下载阿里云oss文...
html或者react下载阿里云oss文件视频图片
2024-08-04 10:27:02
视频号小店跳到微信小程序的...
视频号小店跳到微信小程序的路径
2024-04-23 17:28:30
php视频号小店解密jso...
php视频号小店解密xml的示例有,但是小店的回包是json那么就...
2024-04-23 15:54:06
tp5和layui表单提交...
form class=layui-form layui-form-...
2024-04-09 14:45:31
chrome输入框记住账号...
chrome输入框记住账号密码后背景色改变问题
2024-01-17 17:59:03

热门资讯

tp5 jquery判断手机端... application--common.php中添加如下代码 //函数作用是判断用户打开的是手机端还...
Laravel 5.5 .No... 创建了新的laravel项目后, 运行提示:No application encryption ke...
php 打印date函数出现错... 问题描述: 我使用的是phpstudy,在练习时间函数的时候,打印出现在的时间,date(Y-m-d...
生成随机字符唯一标识符guid... /** * @param $length * @return string * 生成随机字符串 */...
layui缩略图 div class=layui-form-item label class=layui-form-l...
php函数substr_rep... php函数substr_replace从某个位置替换或删除或插入字符串
Laravel 引入自定义类库... 强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况。!!当然,没有命名空间也可以...
object json转化为数... //调用api 程序,通知商户订单异常 20200314 public function callt...
Laravel 查看SQL操作... 方法一:临时打印操作记录 DB::connection()-enableQueryLog(); # ...
php银行开放平台接口:pfx... 问题描述: 对接易通银行,他们的服务开放平台是java开发,而我的是php,现在需要php版本的SD...