知识准备

FFmpeg将多张图片合成视频,视频的总帧数:总帧数 = duration * fps ,duration是我们设定的视频的长度,fps是视频每秒的帧数。

对于图片文件是没有帧率的概念,FFmpeg默认情况下一秒25张图片成像合成视频。因此FFmpeg提供-framerate还有-r设置输入的视频帧率,-r 8说明每秒钟将8张图片合成视频。设置了输入帧率之后,如果输出帧率没有指定,输出帧率将跟输入帧率保持一致

场景

将bmp图片合成视频

ffmpeg -r 8 -i ./RecordTemp/%d.bmp  -vcodec mpeg4 test.mp4

ffmpeg -r 8 -i  %d.bmp -vcodec libx264 test.mp4

其中-r 和-framerate 都是代表帧率(这个属性属于图片的属性,需要放在图片之前)

1)控制视频帧率

-r fps 帧率,可以指定两个帧率,输入帧率,输出帧率;

输入帧率:-i之前,设定读入帧率,比如 -r 0.5 ,也就是说1秒要播0.5个图片,那么一个图也就是要播2s;

输出频率:-i之后,真正的输出视频播放帧率,不写话,是默认和输入频率一样。比如设 -r 30 ,对应上面的设定,一个图播2s,那么输出文件播放时,这2s内,都是这张图,但是播放了60帧

2)图片合成视频,然后视频拆分成图片数量对应不上

指令如下:

ffmpeg  -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4 -r 20 D:/ffmpeg/video5.avi

ffmpeg -i video5.avi  -f image2 image-%07d.png

解答:-r 20 放在-i之后指定的是输出视频帧率,输入帧率默认情况下是25,所以拆分之后跟原始图片数量对应不上

解决方案:ffmpeg -r 20 -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4  D:/ffmpeg/video5.avi

3)输出的视频画面质量下降,原因:影响视频质量的最重要因素是视频码率,输出视频的码率是默认的,只有200kbits/s

解决方案:修改默认的视频码率属性-b:v

ffmpeg -r 20  -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4 -b:v 6000k D:/ffmpeg/video5.avi

注意:当不清楚输出码率应该设置为多少,可以指定一个比较大的数字

4)指定从拿一张图片开始合成视频

ffmpeg -start_number 500 -i pano%d.jpg video.avi

备注下

-t duration

用做输入选项(在-i之前),是限制读取输入文件的的时长;

用做输出选项(before an output url),超过这个时间停止写输出文件;

比如:循环读取一个输入文件时(-loop 1),当到时间就会停止输出,生成一个duration时长的视频。但是如果没有循环选项,而且输入文件短于这个时长时,就会随着输入文件结束就结束,生成视频,视频时长小于duration。所以我们可以看出 -t 并不仅仅是输出文件时长。

当用“管道”时,也不太一样,管道读了之后,里面内容就没了,所以没持续的输入,这个-loop,-t 都是“不起作用的”,除非管道一直有内容。

ffmpeg -threads2 -y -r 10 -i /tmpdir/image%04d.jpg -i audio.mp3 -absf aac_adtstoasc output.mp4

参数的解释含义:

-threads 2 以两个线程进行运行, 加快处理的速度。

-y 对输出文件进行覆盖

-r 10 fps设置为10帧/秒(不同位置有不同含义,后面再解释)

-i /tmpdir/image%04d.jpg 输入图片文件,图片文件保存为 image0001.jpg image0002.jpg ….

-i audio.mp3 输入的音频文件

-absf aac_adtstoasc 将结果的音频格式转为faac格式时需要这个选项。将音频格式转为faac是因为在iphone上某些音频格式的视频无法播放,例如mp3. 但faac格式的音频的视频在iphone上可以播放。-absf 的意思是设置一个bitstream filter进行某些转换。可以用ffmpeg -bsfs 查看所有支持的bitstream filter。 bitstream filter和 aac_adtstoasc的具体含义我也说不上。但是如果不用这个选项又会导致转换失败。

记录

bmp转换失败:

原因:提供的bmp图片文件,实际上是png格式的图片文件,经过批处理修改后缀名称,解决问题

排查过程:

1)通过Windows画图工具,重新保存成bmp文件,合成视频成功

2)通过Windows画图工具,重新另存为jpg文件,合成视频成功

说明是文件格式的问题Microsoft Windows [版本 10.0.18363.1316]

(c) 2019 Microsoft Corporation。保留所有权利。

F:\test\test_old\store>ffmpeg -i test_%d.bmp -vcodec mpeg4 test.avi

ffmpeg version git-2020-08-16-5df9724 Copyright (c) 2000-2020 the FFmpeg developers

built with gcc 10.2.1 (GCC) 20200805

configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-librav1e --enable-libsvtav1 --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf

libavutil      56. 58.100 / 56. 58.100

libavcodec     58.100.100 / 58.100.100

libavformat    58. 51.100 / 58. 51.100

libavdevice    58. 11.101 / 58. 11.101

libavfilter     7. 87.100 /  7. 87.100

libswscale      5.  8.100 /  5.  8.100

libswresample   3.  8.100 /  3.  8.100

libpostproc    55.  8.100 / 55.  8.100

[bmp @ 0000024bbbb5fd00] bad magic number

Last message repeated 7 times

[image2 @ 0000024bbbb5ddc0] decoding for stream 0 failed

[image2 @ 0000024bbbb5ddc0] Could not find codec parameters for stream 0 (Video: bmp, none): unspecified size

Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options

Input #0, image2, from 'test_%d.bmp':

Duration: 00:00:00.32, start: 0.000000, bitrate: N/A

Stream #0:0: Video: bmp, none, 25 fps, 25 tbr, 25 tbn, 25 tbc

Stream mapping:

Stream #0:0 -> #0:0 (bmp (native) -> mpeg4 (native))

Press [q] to stop, [?] for help

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

[bmp @ 0000024bbbb60500] bad magic number

Error while decoding stream #0:0: Invalid data found when processing input

Cannot determine format of input stream 0:0 after EOF

Error marking filters as finished

Conversion failed!

android bmp合成mpeg4,FFmpeg 图片合成视频相关推荐

  1. FFmpeg 将图片合成视频 将视频导出图片 转换视频格式avi to mp4

    FFmpeg FFmpeg将视频导出每一帧图片 #ffmpeg -r framerate -i input.mp4 -f image2 output001.jpg~output447.jpg ffmp ...

  2. ffmpeg将图片合成视频

    本来想做个android录制屏幕的功能,但是目前只能是截图 然后把图片合成视频,这里就需要用到 ffmpeg 在做之前也是参考了其它一些比较不错的文章 比如:http://www.open-open. ...

  3. 视频帧数(图片)和音频提取及保存方法图片合成视频方法---ffmpeg

    视频帧数(图片)和音频提取及保存方法&图片合成视频方法-ffmpeg 环境:Ubuntu16.04.Python3.5.anaconda3 任务需要,要从视频里提取一定帧数的图片和音频,查了不 ...

  4. C# 调用FFmpeg 根据图片合成视频

    C# 调用FFmpeg 根据图片合成视频 1.项目结构: 2.代码: using System; using System.Collections.Generic; using System.Diag ...

  5. ffmpeg(ubuntu16.04):视频抽成帧(图片)/图片合成视频

    · 视频抽成帧(图片): cd 到视频所在目录下: 输入: ffmpeg -i output-processed.avi -q:v 2 -f image2 frame_%06d.jpg (注:上述代码 ...

  6. 《ffmpeg入门学习》 六 java把多个图片合成视频,并添加图片水印

    1.准备 使用ffmepg工具,这里就不过多阐述,详细的可查看,我以前的博客. 准备20张图片,我这里的二十张图片都是加了时间水印的图片(你也可以找不一样的图片,能看出切换的效果就行). 功能:需要把 ...

  7. Android bitmap合成图片

    //根据项目需要,在一张图片上合成另一张图片(压缩后的),显示到预览图的imageview上,然后分享出去 大致思路:1,获取网络图片,计算宽高 2,预定于压缩后图片的宽高(也可是相对屏幕宽高的百分比 ...

  8. android git gif,GitHub - lchad/Gifflen-Android: Android上合成gif图片.

    Gifflen-Android 在Android平台通过静态图片合成Gif动态图片. 示例Apk程序 一脸懵逼.gif 是如何产生的? 由于Android平台对Gif的支持不是很好,没有现成的Java ...

  9. fluent-ffmpeg图片合成视频(一)

    使用fluent-ffmpeg将图片合成视频并简单添加过渡效果(一) 思路 一张图片做背景图,生成视频总长度的视频 分别将需要添加的视频逐一添加到视频内 code 生成视频 ffmpeg(image1 ...

最新文章

  1. app.vue中引用图片src=“../assets/logo.png“报错未找到图片
  2. Android中的Broadcast Action大全
  3. 图解丨在嵌入式设备上实现HTTP服务器
  4. oracle数据库字段的值加一_天天面试--数据库乐观锁和悲观锁
  5. 安装报错_MySQL8.0安装后,报错ERROR 1045 (28000)
  6. 计算机制图的简称市什么,计算机地的图制图复习题.doc
  7. 关于出现Not an editor command: Bundle ‘**/*.vim‘的解决方案【转】
  8. 深度拷贝 java_java 深度拷贝 复制 深度复制
  9. 蒙特卡洛树搜索_蒙特卡洛树搜索与Model-free DRL
  10. ubuntu下,rubyonrails环境搭建
  11. lpop 原子_这个知识孩子掌握了吗?初中化学原子的结构知识梳理
  12. 2020年度美国最受市场欢迎的十大编程语言
  13. 入侵服务器的一种方法
  14. 2017年总结和计划
  15. 你若安好便是晴天——林徽因传
  16. asp.net网站修改aspx.cs文件后如何不替换网站就生效
  17. promise的前世来生
  18. 京东X未来餐厅正式开业,无界零售布局再进一步
  19. 登录注册的测试点分析
  20. 硬盘物理结构详细说明

热门文章

  1. 最近遇到的异常与错误总结
  2. 弘辽科技:拼多多商品限制推广多久解封?怎么申诉?
  3. day09——输入输出及对象练习
  4. proteus 蜂鸣器系列
  5. python访问陌生人qq空间_python程序记录QQ空间条说说的访问详情
  6. 快速理解Linux系统中用户和组的概念及如何查看存储用户与组信息的文件/etc/passwd,/etc/shadow,/etc/group及其子段意思
  7. 什么情况下我可以认为我就是我最大的骄傲
  8. 使用antd-pro组件 实现图片上传和图片编辑
  9. 营救(广度优先搜索)题解
  10. LeetCode刷题7--Nim游戏