ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4

-ss 指定从什么时间开始

-t 指定需要截取多长时间

-i 指定输入文件

这个命令就是从00秒开始裁剪到00+30=30秒结束,总共30秒的视频。这个命令执行很快,因为只是原始数据的拷贝,中间没有什么编码和解码的过程。执行这个命令后你能得到output.mp4这个输出文件。你可以用视频播放软件播放这个视频看看。

可能有些视频裁剪后的效果,如期望一致,00秒开始,30秒结束,总共30秒的视频,但是有些视频裁剪后你会发现可能开始和结束都不是很准确,有可能是从00秒开始,33秒结束。这是为什么呢?

因为这些视频里30秒处地方刚好不是关键帧,而ffmpeg会在你输入的时间点附近圆整到最接近的关键帧处,然后做接下来的事情。如果你不懂什么是关键帧,没关系,这也不影响你使用这个命令。

如果你的项目要求能够接受几秒的误差,那么这个命令完全就可以满足你的需要,接下来的内容你也没有必要往下看了。

如果你的项目里要求很严格,一定要到确定的时间。那么就要用另外一种方式。

上面的造成那样的原因是所选的时间不是关键帧,那如果我们将输入的视频先转换成所有的帧都为关键帧的视频,其实就是将所有的帧的编码方式转为帧内编码(不理解帧内编码也没关系,你就当没看见它,接着往下看),这个问题就有解了。ffmpeg也可以帮我们完成这个事情。

ffmpeg -i INPUT -sameq -intra OUTPUT

-i 输入,后面是空格,紧跟着就是输入视频文件;

INPUT 输入文件;

-sameq 表示保持同样的视频质量;

-intra, 帧内编码;

OUTPUT 输出文件名。

如:

ffmpeg -i ./MyVideo.mpg -sameq -intra ./temp.mpg

这个命令的结果文件就是./temp.mpg.这个文件的视频和./MyVideo.mpg是一样的,但是你会发现这个文件会比./MyVideo.mpg大很多倍,原因就是转换前一般采用的帧间编码,转换后变成了帧内编码。这里我们说是一般,原因是有些视频文件本身就采用了帧内编码。

经过这样的处理后,我们就可以精确的剪切视频了。

注意

上面的命令在新版本中已经废弃,可以参考下面的命令

ffmpeg -i output.mp4 -strict -2 -qscale 0 -intra keyoutput.mp4

合并视频

//截取从头开始的30s

ffmpeg -ss 00:00:00 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split.mp4

//截取从30s开始的30s

ffmpeg -ss 00:00:30 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split1.mp4

//进行视频的合并

ffmpeg -f concat -i list.txt -c copy concat.mp4

在list.txt文件中,对要合并的视频片段进行了描述。

内容如下

file ./split.mp4

file ./split1.mp4

常用命令如下

// 去掉视频中的音频

ffmpeg -i input.mp4 -vcodec copy -an output.mp4

// -an: 去掉音频;-vcodec:视频选项,一般后面加copy表示拷贝

// 提取视频中的音频

ffmpeg -i input.mp4 -acodec copy -vn output.mp3

// -vn: 去掉视频;-acodec: 音频选项, 一般后面加copy表示拷贝

// 音视频合成

ffmpeg -y –i input.mp4 –i input.mp3 –vcodec copy –acodec copy output.mp4

// -y 覆盖输出文件

//剪切视频

ffmpeg -ss 0:1:30 -t 0:0:20 -i input.mp4 -vcodec copy -acodec copy output.mp4

// -ss 开始时间; -t 持续时间

// 视频截图

ffmpeg –i test.mp4 –f image2 -t 0.001 -s 320x240 image-%3d.jpg

// -s 设置分辨率; -f 强迫采用格式fmt;

// 视频分解为图片

ffmpeg –i test.mp4 –r 1 –f image2 image-%3d.jpg

// -r 指定截屏频率

// 将图片合成视频

ffmpeg -f image2 -i image%d.jpg output.mp4

//视频拼接

ffmpeg -f concat -i filelist.txt -c copy output.mp4

// 将视频转为gif

ffmpeg -i input.mp4 -ss 0:0:30 -t 10 -s 320x240 -pix_fmt rgb24 output.gif

// -pix_fmt 指定编码

// 将视频前30帧转为gif

ffmpeg -i input.mp4 -vframes 30 -f gif output.gif

// 旋转视频

ffmpeg -i input.mp4 -vf rotate=PI/2 output.mp4

// 缩放视频

ffmpeg -i input.mp4 -vf scale=iw/2:-1 output.mp4

// iw 是输入的宽度, iw/2就是一半;-1 为保持宽高比

//视频变速

ffmpeg -i input.mp4 -filter:v setpts=0.5*PTS output.mp4

//音频变速

ffmpeg -i input.mp3 -filter:a atempo=2.0 output.mp3

//音视频同时变速,但是音视频为互倒关系

ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4

// 视频添加水印

ffmpeg -i input.mp4 -i logo.jpg -filter_complex [0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] -map [out] -map 0:a -codec:a copy output.mp4

// main_w-overlay_w-10 视频的宽度-水印的宽度-水印边距;

// 截取视频局部

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

// 截取部分视频,从[80,60]的位置开始,截取宽200,高100的视频

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4

// 截取右下角的四分之一

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

// 截去底部40像素高度

ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4

参数说明:

-vcodec xvid 使用xvid压缩

-s 320x240 指定分辨率

-r fps 设置帧频 缺省25

-b 指定压缩比特

-acodec aac 设定声音编码

-ac 设定声道数,1就是单声道,2就是立体声

-ar 设定声音采样率,PSP只认24000

-ab 设定声音比特率

-vol 设定音量

-y(覆盖输出文件

-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持

-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持

-title string 设置标题

-author string 设置作者

-copyright string 设置版权

-hq 激活高质量设置

-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777

-croptop size 设置顶部切除带大小 像素单位

-cropbottom size -cropleft size -cropright size

-padtop size 设置顶部补齐的大小 像素单位

-padbottom size -padleft size -padright size -padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:兰排列,比如 000000代表黑色)

-bt tolerance 设置视频码率容忍度kbit/s

-maxrate bitrate设置最大视频码率容忍度

-minrate bitreate 设置最小视频码率容忍度

-bufsize size 设置码率控制缓冲区大小

-vcodec codec 强制使用codec编解码方式。 如果用copy表示原始编解码数据必须被拷贝。

-sameq 使用同样视频质量作为源(VBR)

-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率

-passlogfile file 选择两遍的纪录文件名为file

-map file:stream 设置输入流映射

-debug 打印特定调试信息

ffmpeg 将拆分的数据合成一帧_FFMPEG 视频分割和合并相关推荐

  1. ffmpeg 将拆分的数据合成一帧_FFmpeg 简单合成 MP4 :视频解封与重新封装

    教程代码:[Github传送门:https://github.com/ChenLittlePing/LearningVideo] 目录 一.Android音视频硬解码篇: 二.使用OpenGL渲染视频 ...

  2. ffmpeg 将拆分的数据合成一帧_FFmpeg + OpenGLES 实现视频解码播放和视频滤镜

    FFmpeg 开发系列连载: FFmpeg 开发(01):FFmpeg 编译和集成 FFmpeg 开发(02):FFmpeg + ANativeWindow 实现视频解码播放 FFmpeg 开发(03 ...

  3. FFMPEG 视频分割和合并

    ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4 -ss 指定从什么时间开始 -t 指定 ...

  4. python 视频抽帧_FFmpeg视频抽帧那些事

    视频文件是多媒体数据中比较常见的一种,也是入门门槛比较高的一个领域.视频数据相关的领域任务包括视频物体检测.视频物体追踪.视频分类.视频检索和视频摘要抽取等. 视频数据与图像数据非常类似,都是由像素点 ...

  5. FFMPEG MKV转换为MP4以及视频分割和合并

    mkv转换为mp4 ffmpeg -i "test.mkv" -vcodec copy -acodec aac 'test.mp4' 分割命令: ffmpeg -ss 00:00: ...

  6. python (语音)信号拆分为数据块,计算短期能量和过零率

    学习目标(ILO): 您应该 了解如何将(语音)信号拆分为数据块(帧)并在这些块上进行分析/转换 计算短期能量和过零率并将它们可视化以区分浊音和清音语音部分 了解相关性的基础知识并能够实现相关性估计器 ...

  7. ffmpeg进行混音,将两路音频pcm数据合成一路输出

    ffmpeg进行混音,将两路音频pcm数据合成一路输出 audiomixer.h #ifndef AUDIOMIXER_H #define AUDIOMIXER_H#include <map&g ...

  8. 基于深度学习方法的3D数据合成

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 3D 数据简介 人们普遍认为,从单一角度合成 3D 数据是人类视觉的基本功能.但这对计算机视觉算法来说 ...

  9. 工作记录--使用FFmpeg将一个视频文件中音频合成到另一个视频中

    由于工作需要,临时被老大吩咐去研究一个FFmpeg工具,通过linux命令行去将一个视频中的音频提取出来并合成到另一个视频中,最终的效果是要保证2个视频中的音频都在一个视频中播放. 但是本人对FFmp ...

  10. FFmpeg获取网络摄像头数据解码

    对USB摄像头实时编码,在前面已经探讨过了.这次改变下思路,尝试去截取网络摄像头的H264码流,将其解码播放. 这里的测试代码,是在海康摄像头的基础上进行的. 解码的大致流程和以前的保持一致,只不过增 ...

最新文章

  1. Spark Mllib里的Mllib基本数据类型(图文详解)
  2. zabbix对一台主机监控的操作
  3. 实验室装水的容器叫什么_@实验员丨实验室超纯水机正确取水,你做到了吗?...
  4. Redis缓存穿透 缓存击穿 缓存雪崩原因及其解决方案
  5. java ddd 领域事件_Cribbb基于DDD/Domain Event领域事件的开源PHP通知系统
  6. NGUI中的Table自定义排序
  7. erp oracle mrp,OracleERP用戶手册-MRP.doc
  8. cs python_python_13(前端—cs)
  9. SSD选购扫盲指南M.2接口硬盘选择:NVMe于sata3
  10. 快速傅里叶变换(FFT):蝶形算法(CT蝴蝶、GS蝴蝶)
  11. html创建站点文件夹,Dreamweaver站点中新建文件夹和修改/删除/移动文件的操作方法...
  12. 服务器硬盘坏道修复教程视频,坏道和坏块什么区别?硬盘高级修复教程来了
  13. 打印机经常遇到的一些问题
  14. 飞信WEB接口的一个返回网页C#处理源码
  15. 挂牌!迎来【济南网络空间安全山东省实验室】等三所实验室!
  16. CSS基础(二)--盒模型与浮动
  17. matlab 检测键盘,matlab检测键盘
  18. labview 控件变透明
  19. 多年心路历程见证从技术小白到收获BAT等大厂研发offer,分享一些经验和感悟
  20. html5画布画出折线图,canvas 画出动态折线图

热门文章

  1. 181101每日一句
  2. Eye Tracking Methodology Theory and Practice, Third Edition
  3. 扇贝有道180918每日一句
  4. Atitit postgresql data type 数据类型与mysql对应表 数据库常用数据类型 Postgre Mysql 整数 intgreter Int 小数 numeric FL
  5. Atitit 信息化建设纲要 艾提拉著
  6. Atitit 身份证 证件编码规范
  7. atitit.attilax的软件 架构 理念.docx
  8. Python :h5py 如何对dataset进行重新赋值?
  9. 全球前十大证券交易所在区块链领域的探索和布局
  10. (转)知乎:有哪些好笑的关于程序员的笑话?