ffmpeg实现视频文件合并/截取预览视频/抽取音频/crop(裁剪)(ffmpeg4.2.2)
一,ffmpeg的安装
请参见:
https://www.cnblogs.com/architectforest/p/12807683.html
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,ffmpeg的使用例子: 音频/视频的提取/合并
1,提取去除音频的视频流(静音视频)
#-an :disable audio:关闭音频流
#-vcodec:指定视频解码器:值为copy时,复制视频流
[root@blog 1]# ffmpeg -v quiet -i 8_9f6fa300bacded7b.mp4 -y -vcodec copy -an /data/dev/think_file/html/8_mute.mp4
2,提取音频
#-vn: disable video ,关闭视频流
#-acodec:指定音频解码器:值为copy时,复制音频流
[root@blog 1]# ffmpeg -i 8_9f6fa300bacded7b.mp4 -y -vn -acodec copy /data/dev/think_file/html/8.m4a
说明:注意格式:从mp4中直接提取mp3格式可能会报错,
提取成m4a格式没有问题
3,把音频文件和静音的视频文件合并成一个正常的视频文件
#-c codec :指定codec name
#如果值是copy,表示拷贝所有的流
[root@blog 1]# ffmpeg -i 8_9f6fa300bacded7b.mp4 -i /data/dev/think_file/html/8.m4a -c copy /data/dev/think_file/html/8_m.mp4
三,ffmpeg的使用例子:合并两个视频文件
1,合并多个视频文件
查看两个文件的宽/高/长度
6_1351031b24838211.mp4的时长
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration 6_1351031b24838211.mp4
120.086633
6_1351031b24838211.mp4的宽度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=width 6_1351031b24838211.mp4
640
6_1351031b24838211.mp4的高度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=height 6_1351031b24838211.mp4
360
5_d3958808f0a5da07.mp4的高度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=height 5_d3958808f0a5da07.mp4
360
5_d3958808f0a5da07.mp4的宽度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=width 5_d3958808f0a5da07.mp4
640
5_d3958808f0a5da07.mp4的时长
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration 5_d3958808f0a5da07.mp4
215.281733
合并:
生成视频列表文件
[root@blog 1]# more con653.txt
内容
file '6_1351031b24838211.mp4'
file '5_d3958808f0a5da07.mp4'
连接两段视频
[root@blog 1]# ffmpeg -f concat -i con653.txt -c copy /data/dev/think_file/html/653.mp4
查看新生成视频的时长:
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration /data/dev/think_file/html/653.mp4 335.409733
注意:合并之前,要保持两个视频文件的宽高相同,不同width height会报错
四,ffmpeg的使用例子:截取视频片断作为预览视频
查看原视频文件的大小:
[root@blog 1]# ll -h 8_9f6fa300bacded7b.mp4
-rw-r--r-- 1 nginx nginx 7.4M Mar 29 03:47 8_9f6fa300bacded7b.mp4
#-ss:开始时间
#-t:持续的秒数
#-c:a copy:copy视频
#-s:指定画面的宽高
[root@blog 1]# ffmpeg -ss 00:00:30 -t 20 -i 8_9f6fa300bacded7b.mp4 -c:a copy -s 320x180 /data/dev/think_file/html/8_pre2.mp4
查看预览视频文件的大小:
[root@blog 1]# ll -h /data/dev/think_file/html/8_pre2.mp4
-rw-r--r-- 1 root root 1.3M May 1 17:50 /data/dev/think_file/html/8_pre2.mp4
五,ffmpeg使用例子:crop裁剪视频:
看一个例子:我们裁剪掉视频两侧的黑边
原视频的截图:

#crop=w=100:h=100:x=12:y=34
w:指定宽度
h:指定高度
x:指定左侧的pos
y:指定顶部的pos
[root@blog html]# ffmpeg -i 8_rpi2.mp4 -vf crop=360:360:140:0 -c:a copy 360.mp4
查看生成的截图:

六,查看ffmpeg的版本
[root@blog html]# ffmpeg -version
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (GCC)
七,查看centos的版本
[root@blog html]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
ffmpeg实现视频文件合并/截取预览视频/抽取音频/crop(裁剪)(ffmpeg4.2.2)的更多相关文章
- 终极指南:如何为iOS8应用制作预览视频
最近一两个月里,苹果的世界里出现了很多新东西,比如屏幕更大的iPhone 6,可穿戴设备Apple Watch,iOS8,以及旨在帮助用户更好的发现应用的App Store改版等等. 说到App St ...
- APP_Store - 怎样为iOS8应用制作预览视频
关于iOS 8应用预览视频的话题,从设计.技术规范,到录屏.编辑工具,介绍的都比较详尽:建议收藏,在接下来用的到的时候作以参考.下面进入译文. 最近一两个月里,苹果的世界里出现了很多新东西,比如屏幕更 ...
- 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)
首先需要导入一些js和css文件 ? 1 2 3 4 5 6 <link href="__PUBLIC__/CSS/bootstrap.css" rel="exte ...
- atitit.javascript js 上传文件的本地预览
atitit.javascript js 上传文件的本地预览 1. .URL.createObjectURL 1 1.1. 吊销所有使用 URL.createObjectURL 而创建的 URL,以 ...
- 前端vue实现pdf文件的在线预览
3.前端vue实现pdf文件的在线预览 我是通过 <iframe> 标签就可以满足我工作的 pdf预览需求 如果<iframe> 无法满足需求 , 可以使用pdf.js这个插件 ...
- React + js-xlsx构建Excel文件上传预览功能
首先要准备react开发环境以及js-xlsx插件 1. 此处省略安装react安装步骤 2.下载js-xlsx插件 yarn add xlsx 或者 npm install xlsx 在项目中引入 ...
- FileReader与URL.createObjectURL实现图片、视频上传前预览
之前做图片.视频上传预览常用的方案是先把文件上传到服务器,等服务器返回文件的地址后,再把该地址字符串赋给img或video的src属性,这才实现所谓的文件预览.实际上这只是文件“上传后再预览”,这既浪 ...
- html file控件选择文件后立即预览 js实现
//上传图片后立即预览 file对象,图片容器id function showImg(fileObj,imgId) { var file=fileObj.files[0]; var r = new F ...
- [置顶] 如何在浏览器中打开PDF文件并实现预览的思路与代码
编写项目遇到一个需要在浏览器中打开PDF文件的问题.最终实现效果如下: 其实也就是简单的在浏览器中实现一个打开pdf文件,并有类似预览功能的边框. 其实在网上经常见到类似的页面,在浏览器中打开pdf文 ...
随机推荐
- Table内部实现2
这一节介绍Lua唯一的数据结构table,相对于大部分语言提供数组和字典两种类型,Lua将其合二为一,颇为精巧的实现了table. table充分体现了Lua语言的特点,用最简练的语法表达丰富的信息, ...
- python之map
python之Map函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # map()函数使用举例 # 功能: ...
- 内存管理初始化源码4:add_active_range
我们在阅读源码时,函数功能可以分为两类:1. bootmem.c 2. page_alloc.c. 1. bootmem.c是关于bootmem allocator的,上篇文章已经简述过. 2. pa ...
- 解决spark streaming集成kafka时只能读topic的其中一个分区数据的问题
1. 问题描述 我创建了一个名称为myTest的topic,该topic有三个分区,在我的应用中spark streaming以direct方式连接kakfa,但是发现只能消费一个分区的数据,多次更换 ...
- Vue iview Tree组件实现文件目录-高级实现
Tree组件实现文件目录-基础实现 封装文件目录组件 src\views\folder-tree\folder-tree.vue <template> <div class=&quo ...
- redis命令和RedisTemplate操作对应表
redis命令和RedisTemplate操作对应表 redisTemplate.opsForValue();//操作字符串 redisTemplate.opsForHash();//操作hash r ...
- Vue结合Django-Rest-Frameword结合实现登录认证(一)
作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/2436173500265335 微信公众 ...
- 2018尚硅谷最新SpringCloud免费视频教程
[课程内容] 01.前提概述 02.大纲概览 03.从面试题开始 04.微服务是什么 05.微服务是什么2 06.微服务与微服务架构 07.微服务优缺点 08.微服务技术栈有哪些 09.为什么选择Sp ...
- 动态生成简约MVC请求接口|抛弃一切注解减少重复劳动吧
背景 目前创建一个后端请求接口给别人提供服务,无论是使用SpringMVC方式注解,还是使用SpringCloud的Feign注解,都是需要填写好@RequestMap.@Controller.@Pa ...
- idea模拟前端向后台请求数据输出响应结果
tools-httpClient-Test restful web service 通过上述步骤之后出现如下图 1 表示通过哪种方式请求:2 请求数据的地址头部:3 请求数据的除了头部之后的地址:4, ...