一,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)的更多相关文章

  1. 终极指南:如何为iOS8应用制作预览视频

    最近一两个月里,苹果的世界里出现了很多新东西,比如屏幕更大的iPhone 6,可穿戴设备Apple Watch,iOS8,以及旨在帮助用户更好的发现应用的App Store改版等等. 说到App St ...

  2. APP_Store - 怎样为iOS8应用制作预览视频

    关于iOS 8应用预览视频的话题,从设计.技术规范,到录屏.编辑工具,介绍的都比较详尽:建议收藏,在接下来用的到的时候作以参考.下面进入译文. 最近一两个月里,苹果的世界里出现了很多新东西,比如屏幕更 ...

  3. 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)

    首先需要导入一些js和css文件 ? 1 2 3 4 5 6 <link href="__PUBLIC__/CSS/bootstrap.css" rel="exte ...

  4. atitit.javascript js 上传文件的本地预览

    atitit.javascript js 上传文件的本地预览 1. .URL.createObjectURL  1 1.1. 吊销所有使用 URL.createObjectURL 而创建的 URL,以 ...

  5. 前端vue实现pdf文件的在线预览

    3.前端vue实现pdf文件的在线预览 我是通过 <iframe> 标签就可以满足我工作的 pdf预览需求 如果<iframe> 无法满足需求 , 可以使用pdf.js这个插件 ...

  6. React + js-xlsx构建Excel文件上传预览功能

    首先要准备react开发环境以及js-xlsx插件 1. 此处省略安装react安装步骤 2.下载js-xlsx插件 yarn add xlsx 或者 npm install xlsx 在项目中引入 ...

  7. FileReader与URL.createObjectURL实现图片、视频上传前预览

    之前做图片.视频上传预览常用的方案是先把文件上传到服务器,等服务器返回文件的地址后,再把该地址字符串赋给img或video的src属性,这才实现所谓的文件预览.实际上这只是文件“上传后再预览”,这既浪 ...

  8. html file控件选择文件后立即预览 js实现

    //上传图片后立即预览 file对象,图片容器id function showImg(fileObj,imgId) { var file=fileObj.files[0]; var r = new F ...

  9. [置顶] 如何在浏览器中打开PDF文件并实现预览的思路与代码

    编写项目遇到一个需要在浏览器中打开PDF文件的问题.最终实现效果如下: 其实也就是简单的在浏览器中实现一个打开pdf文件,并有类似预览功能的边框. 其实在网上经常见到类似的页面,在浏览器中打开pdf文 ...

随机推荐

  1. 关于Java代理那些事儿

    代理是啥?就是代替你执行你持有的主要功能,并且能在你的基础之上完成一些其他的功能.代理的目的就是生成一个和原对象具有同样功能的对象.在Java中,代理是一种设计模式.在Spring的面向切面编程(AO ...

  2. 一、loadrunner脚本录制及回放

    录制及回放的注意点: 1.测试系统教复杂时,正确的划分action,对监控的每一个业务模型和操作,起到重要作用 2.录制完成后,先进行编译(改动脚本之后检查下有没有语法错误):工具栏Vuser下有一个 ...

  3. apache-apollo启动报错

    启动Apollo后,进入网页版管理中心后报错:500: Server Error https://127.0.0.1:61681/console/index.html 网页抓包 报错:{"c ...

  4. java虚拟机小贴士之GC分析

    打印日志 通过加入 -XX:+PrintGCDetails 参数则可以打印详细GC信息至控制台.参数-verbose:gc也是可以,但不够详细.通过加入-XX:+PrintGCDateStamps则可 ...

  5. 微服务实战系列(六)-网关springcloud zuul

    1. 场景描述 今天接着介绍springcloud,今天介绍下springcloud的路由网关-Zuul,外围系统或者用户通过网关访问服务,网关通过注册中心找到对应提供服务的客户端,网关也需要到注册中 ...

  6. spark 笔记2

    一.Spark Shuffle 的发展 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidat ...

  7. Spring及tomcat初始化日志

    Tomcat StandardContext初始化过程 //org.apache.catalina.core.StandardContext#startInternal // 子容器启动 for (C ...

  8. module(JS模块系统)

    JS - module(模块系统) 重新学习ES6 倒数第一章 module 什么是module? 百度的解释 之前接触过AngularJS,现在看Dojo,都有对模块的使用.在dojo官网看到这段文 ...

  9. 协同过滤 Collaborative Filtering

    协同过滤 collaborative filtering 人以类聚,物以群分 相似度 1. Jaccard 相似度 定义为两个集合的交并比: Jaccard 距离,定义为 1 - J(A, B),衡量 ...

  10. MyEclpse 2015在线安装Gradle插件图解

    MyEclpse 2015 安装Gradle插件 安装方式:在线安装 一.如何获得Gradle插件在线安装地址 Gradle插件最新在线安装地址可在如下网址中查找: https://github.co ...