音视频剪辑|FFMPEG|windows10下的音视频格式转换,遮挡填充,GIF动图制作,背景音频抽取,替换

前言:

最近对于音视频和图像的处理问题比较感兴趣,但发现很多目前需要的功能要么需要付费但不会过于麻烦,要么比较麻烦,很可能某个功能实现需要安装很多软件

例如,视频转GIF动图,该功能的实现要么使用Photoshop全家桶,要么找在线网站,或者是wps充会员,或者找其它方法,但其实FFMPEG这个软件就可以搞定一切了。

那么,选择FFMPEG的理由有哪些呢?

第一,FFMPEG可以跨平台,也就是mac,Linux,windows都可以部署使用,甚至可以使用dockers这样的容器,当然了,在Linux下如果有批量剪辑音视频的需求,会非常方便,虽然可能需要编写脚本

第二,FFMPEG是一个开源的,自由的软件,没有那些使用上的限制,当然,我们在使用的时候还是需要尊重一下软件开源协议

第三,FFMPEG的功能是非常非常多的,可以剪辑音视频,视频转换为图片,图片剪辑,音频混响,音视频的抽取替换,字幕,还有一些不是太常规的功能,比如,录屏,摄像头视频抓取,麦克风音频抓取等等功能;同时,FFMPEG所支持的音视频格式非常多,基本95%的格式都可以支持,除了一些个别的收费格式,例如mflac音频文件这样的不支持。

也是由于FFMPEG的这些强大功能,可以在很多地方大显身手,比如,平常的娱乐方面,动图制作;摄像头的视频流抓取配合人工智能识别;短视频的剪辑制作;音视频的大规模清洗;音视频的翻拍;电子相册,相册转换成视频  等等落地场景,场景多样,就看你的想象力有多好了吧!!!!

那么,这么强大的开源的音视频和图片处理工具自然是不可能一篇文章就讲清楚了,本文将主要就FFMPEG遮挡水印,GIF类型的动图制作,视频内的音频抽取,替换这几个简单的功能做一个讲解。

一,

音视频格式转换

音视频和图片的格式是非常多的,这里我就不废话太多了,只说一下常用的,比如,视频的mov,avi,mp4,ts,mkv,rmvb等等格式;音频的flac,mp3,wma,ape,acc,ogg等等格式;图片的GIF,PNG,SWF,BPM,JPG等等格式

那么,废话这么半天是想说格式对应于文件的编码格式,比如,某个电影视频,它的格式是rmvb,这时候指的的是它的编码格式,那么,我要在Windows播放这个视频,是需要有解码这个编码格式的解码器的软件才可以播放,也就是具有rmvb解码器或者称之为解码引擎,解码库的软件,例如Windows media 播放器或者vlc播放器这样的具有相应解码器的播放器才可以播放

当然了,FFPLAY基本没有这种困扰,95%的文件格式都可以轻松播放,🆗,现在可以聊一聊文件格式转换的问题了

FFMPEG的音视频文件格式转换非常简单,ffmpeg -i 原始音视频文件 转换后的音视频文件  就这么简单粗暴,例如,flac文件转换成MP3文件:

其它的格式转换基本都是这样的,没有什么技巧可言

二,

音视频抽取

例如,原视频是电影武侠,时长1小时57分钟

截取自41分钟0秒开始之后的20秒视频,抽取的视频同时转换成mp4格式:

ffmpeg -i "C:\Users\Administrator\Desktop\武侠 (2011)导演陈可辛 编剧林爱华 主演甄子丹 金城武 汤唯 王羽 惠英红李小冉姜武类型剧情动作悬疑武侠.rmvb" -ss 41:00 -t 20  D:\test2.mp4

可以看到,抽取的视频确实是20秒 

rmvb视频转换成rmvb视频需要强制转换,指定转换格式,强制转换可能会有失败的风险

增加-f 格式即可,例如下面的命令也是可以的:

ffmpeg -i "C:\Users\Administrator\Desktop\武侠 (2011)导演陈可辛 编剧林爱华 主演甄子丹 金城武 汤唯 王羽 惠英红李小冉姜武类型剧情动作悬疑武侠.rmvb" -y  -ss 41:00 -t 20 -f mpeg  D:\test2.rmvbffmpeg -i "C:\Users\Administrator\Desktop\武侠 (2011)导演陈可辛 编剧林爱华 主演甄子丹 金城武 汤唯 王羽 惠英红李小冉姜武类型剧情动作悬疑武侠.rmvb" -y  -ss 41:00 -t 20 -f mpeg  D:\test2.mpeg

音频文件的转换相对简单:

ffmpeg -i 222.mp3 333.wav输出如下:C:\Users\Administrator\Desktop\11111>ffmpeg -i 222.mp3 333.wav
ffmpeg version 6.1.1-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprintlibavutil      58. 29.100 / 58. 29.100libavcodec     60. 31.102 / 60. 31.102libavformat    60. 16.100 / 60. 16.100libavdevice    60.  3.100 / 60.  3.100libavfilter     9. 12.100 /  9. 12.100libswscale      7.  5.100 /  7.  5.100libswresample   4. 12.100 /  4. 12.100libpostproc    57.  3.100 / 57.  3.100
Input #0, mp3, from '222.mp3':Metadata:title           : 有没有人告诉你album           : 相爱十年 电视剧原声带artist          : 陈楚生ID              : 8597091334track           : 1disc            : 1encoder         : Lavf60.16.100Duration: 00:04:21.15, start: 0.025056, bitrate: 145 kb/sStream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/sMetadata:encoder         : Lavc60.31Stream #0:1: Video: png, rgb24(pc, gbr/unknown/unknown), 500x500 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn (attached pic)Metadata:comment         : Other
Stream mapping:Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to '333.wav':Metadata:INAM            : 有没有人告诉你IPRD            : 相爱十年 电视剧原声带IART            : 陈楚生ID              : 8597091334IPRT            : 1disc            : 1ISFT            : Lavf60.16.100Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/sMetadata:encoder         : Lavc60.31.102 pcm_s16le
[out#0/wav @ 0000017891270640] video:0kB audio:44982kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000382%
size=   44982kB time=00:04:21.09 bitrate=1411.3kbits/s speed= 748x

使用ffprobe命令查看是否转换成功:

C:\Users\Administrator\Desktop\11111>ffprobe -i 333.wav
ffprobe version 6.1.1-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprintlibavutil      58. 29.100 / 58. 29.100libavcodec     60. 31.102 / 60. 31.102libavformat    60. 16.100 / 60. 16.100libavdevice    60.  3.100 / 60.  3.100libavfilter     9. 12.100 /  9. 12.100libswscale      7.  5.100 /  7.  5.100libswresample   4. 12.100 /  4. 12.100libpostproc    57.  3.100 / 57.  3.100
Input #0, wav, from '333.wav':Metadata:artist          : 陈楚生title           : 有没有人告诉你album           : 相爱十年 电视剧原声带track           : 1encoder         : Lavf60.16.100Duration: 00:04:21.12, bitrate: 1411 kb/sStream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

音频转码:

ffmpeg -i "C:\Users\Administrator\Desktop\Music\陈楚生 - 有没有人告诉你.flac"  -c:a libmp3lame -q:a 6 D:\chen.mp3 #音频转码 ,最高等级的

 

视频内的音频抽取:

vn表示去掉视频,视频去掉了自然就剩下音频了

an表示去掉音频,音频去掉了自然就剩下视频了,an就不演示了

ffmpeg -i D:\555.mp4 -vn D:\333.mp4 #提取音频,可以提取为mp3,也可以mp4ffmpeg -i D:\555.mp4 -c:v copy -vn D:\333.mp3 -y ###仍然是提取音频,和上面的没什么太大区别ffmpeg -i D:\555.mp4 -map 0 -map 0:a:1 -copy D:\333.mp3###仍然是提取音频,和上面的没什么太大区别ffmpeg -i D:\555.mp4 -an D:\333.mp4 #提取视频ffmpeg -i "C:\Users\Administrator\Desktop\武侠 (2011)导演陈可辛 编剧林爱华 主演甄子丹 金城武 汤唯 王羽 惠英红李小冉姜武类型剧情动作悬疑武侠.rmvb" -vn D:\wuxia.mp3
###提取电影武侠里的所有音频

三,

动图的制作

ffmpeg -i D:\666.mp4 -ss 00:20 -t 12 -r 10 -s 320*250 D:\888.gif -y #截取视频并转换成动图

以上命令是截取666.mp4,从视频的20秒开始,往后接12秒,动图质量为10,动图大小为320*250 ,保存路径为D盘,如果有同名的888.gif文件直接覆盖

这里的-t  可以精确到毫秒,比如-t 12.7  表示12秒零70毫秒,这样也是🆗的

经过实践,可以发现,如果视频直接转动图,动图会很大,因为是保留视频的画面大小了,因此,必须-s参数指定GIF的画面大小

由于GIF动图一般是做表情图使用,一般大小不宜超过2M,制作的时候一般是截取视频的十来秒内容即可,太多也没有必要了。

四,

替换视频内的音频

ffmpeg -i D:\222.mp4  -i D:\chen.mp3  -c copy -map 0:v:0 -map 1:a:0 -shortest D:\test.mp4 -y #222.mp4这个视频有音频的,直接替换

 -map 0:v:0代表视频 -map 1:a:0 代表音频 -c copy 表示仅拷贝,不做任何转码

ffmpeg -i D:\222.mp4  -i D:\chen.mp3  -c copy -map 0:v:0 -map 1:a:0 -c:a libmp3lame -q:a 6 -shortest D:\test.mp4 -y ###音频重新编码,质量6  最高6,chen.mp3是一首完整的歌曲,222.mp4是十几秒的视频,音频的时间和视频的时间一致裁剪

-c:a libmp3lame -q:a 6表示音频做转码,转码为MP3,质量等级最高,也就是音质最好,6是最高等级,1是最低等级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/468029.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue源码系列讲解——模板编译篇【三】(HTML解析器)

目录 1. 前言 2. HTML解析器内部运行流程 3. 如何解析不同的内容 3.1 解析HTML注释 3.2 解析条件注释 3.3 解析DOCTYPE 3.4 解析开始标签 3.5 解析结束标签 3.6 解析文本 4. 如何保证AST节点层级关系 5. 回归源码 5.1 HTML解析器源码 5.2 parseEndTag函数源码 6. …

HTML世界之第二重天

目录 一、HTML 格式化 1.HTML 文本格式化标签 2.HTML "计算机输出" 标签 3.HTML 引文, 引用, 及标签定义 二、HTML 链接 1.HTML 链接 2.HTML 超链接 3.HTML 链接语法 4.文本链接 5.图像链接 6.锚点链接 7.下载链接 8.Target 属性 9.Id 属性 三、HTML …

二、docker compose安装

docker compose安装 docker compose的所有版本:https://github.com/docker/compose/releases # 安装步骤 # 1.下载docker compose:v2.5.0是docker-compose版本 curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-lin…

单片机基础入门:简单介绍51单片机的工作原理

在电子技术领域,单片机是实现智能化控制不可或缺的关键元件。它们集成了许多功能于一身,成为了各种电子系统的心脏。为了更好地理解单片机如何工作,本文将重点介绍51单片机的基本组成和工作原理。 51单片机是一种广泛使用的微控制器&#xf…

Flaurm实现中文搜索

目录 摘要需求本文涉及环境情况如下解决方案最终效果文章其他链接: 摘要 Flarum本身对中文支持并不理想,但随着版本更新,逐渐加强了对中文的优化。然而在1.8.5版本,却还是不支持中文搜索网站文章内容。作者在检索了全网教程&#…

uniapp API文档地址 以及 HBuilder安装

uniapp API文档地址 以及 HBuilder安装 一、进入 当前网站 uni-app 官网 [uni-app](https://zh.uniapp.dcloud.io/quickstart-hx.html)二、点击截图下载文件 三、 进入 当前网站 (https://www.dcloud.io/hbuilderx.html) 浏览器会识别 也可以自行选择…

【STM32 CubeMX】GPIO_HAL库源码分析

文章目录 前言一、GPIO_HAL库源码分析1.1 初始化GPIO1.2 HAL_GPIO_Init源码分析GPIO_InitTypeDef初始化结构体HAL_GPIO_Init函数 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技…

MockServer 服务框架设计

大部分现有的 mock 工具只能满足 HTTP 协议下简单业务场景的使用。但是面对一些复杂的业务场景就显得捉襟见肘,比如对 socket 协议的应用进行 mock,或者对于支付接口的失败重试的定制化 mock 场景。 为解决上述问题,霍格沃兹测试学院设计并研…

Day 44 | 动态规划 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ

完全背包 题目 文章讲解 视频讲解 完全背包和0-1背包的区别在于:物品是否可以重复使用 思路:对于完全背包问题,内层循环的遍历方式应该是从weight[i]开始一直遍历到V,而不是从V到weight[i]。这样可以确保每种物品可以被选择多次…

【机器学习】数据清洗之处理异常点

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步…

比特币突破5万美元,2年来首次

作者:秦晋 2月13日凌晨,时隔两年,比特币首次突破50000美元关口。最高触及50363美元、24小时涨幅3.53%。创下2021年12月以来的新高。 据《财富》报道,本次上涨得益于三方面,首先是比特币ETF资金流入,比特币E…

Vue3.0(六):VueX 4.x详解

Vuex4状态管理 什么是状态管理 在开发中,我们的应用程序需要处理各种各样的数据,这些数据需要保存在应用程序的某一个位置,对于这些数据的管理,就是 状态管理目前前端项目越来越复杂,多组件共享同一数据的状态很常见…