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文 ...
随机推荐
- 关于Java代理那些事儿
代理是啥?就是代替你执行你持有的主要功能,并且能在你的基础之上完成一些其他的功能.代理的目的就是生成一个和原对象具有同样功能的对象.在Java中,代理是一种设计模式.在Spring的面向切面编程(AO ...
- 一、loadrunner脚本录制及回放
录制及回放的注意点: 1.测试系统教复杂时,正确的划分action,对监控的每一个业务模型和操作,起到重要作用 2.录制完成后,先进行编译(改动脚本之后检查下有没有语法错误):工具栏Vuser下有一个 ...
- apache-apollo启动报错
启动Apollo后,进入网页版管理中心后报错:500: Server Error https://127.0.0.1:61681/console/index.html 网页抓包 报错:{"c ...
- java虚拟机小贴士之GC分析
打印日志 通过加入 -XX:+PrintGCDetails 参数则可以打印详细GC信息至控制台.参数-verbose:gc也是可以,但不够详细.通过加入-XX:+PrintGCDateStamps则可 ...
- 微服务实战系列(六)-网关springcloud zuul
1. 场景描述 今天接着介绍springcloud,今天介绍下springcloud的路由网关-Zuul,外围系统或者用户通过网关访问服务,网关通过注册中心找到对应提供服务的客户端,网关也需要到注册中 ...
- spark 笔记2
一.Spark Shuffle 的发展 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidat ...
- Spring及tomcat初始化日志
Tomcat StandardContext初始化过程 //org.apache.catalina.core.StandardContext#startInternal // 子容器启动 for (C ...
- module(JS模块系统)
JS - module(模块系统) 重新学习ES6 倒数第一章 module 什么是module? 百度的解释 之前接触过AngularJS,现在看Dojo,都有对模块的使用.在dojo官网看到这段文 ...
- 协同过滤 Collaborative Filtering
协同过滤 collaborative filtering 人以类聚,物以群分 相似度 1. Jaccard 相似度 定义为两个集合的交并比: Jaccard 距离,定义为 1 - J(A, B),衡量 ...
- MyEclpse 2015在线安装Gradle插件图解
MyEclpse 2015 安装Gradle插件 安装方式:在线安装 一.如何获得Gradle插件在线安装地址 Gradle插件最新在线安装地址可在如下网址中查找: https://github.co ...