前面我们介绍过几篇关于音视频开发的文章,这里不得不提下 ffmpeg。
最直观的案例:
转码
对指定高分辨率的进行低分辨率的转码:
ffmpeg 将 4k 的 a.mp4 转码生成不带音频流的 hd 文件
对应的命令:
ffmpeg -i a.mp4 -vf scale=-2:1080 -an hd.mp4
*、”-i a.mp4″
输入文件为 a.mp4。
*、”-vf scale=-2:1080″
表示将视频缩放至高度为 1080 像素,宽度自适应。
*、”-an”
表示不包含音频流。
*、”hd.mp4″
表示输出文件名为 hd.mp4。
关于 -i 可以多个吗?
是的,比如多个视频一起处理:
在使用FFmpeg进行视频处理时,有时候需要同时处理多个输入文件。这时可以使用多个-i参数来指定多个输入文件。
下面是一个示例命令:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex [0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1 output.mp4
这条命令将输入文件input1.mp4和input2.mp4拼接成一个新的视频文件。
其中,-filter_complex参数用于指定复杂的滤镜操作:
[0:v]表示第一个输入文件的视频流
[0:a]表示第一个输入文件的音频流
[1:v]表示第二个输入文件的视频流
[1:a]表示第二个输入文件的音频流。
concat=n=2:v=1:a=1表示对两个输入文件进行拼接,输出一个视频流和一个音频流。
如果需要处理更多的输入文件,只需要在命令中添加更多的-i参数即可。例如:
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -filter_complex [0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1 output.mp4
这条命令将输入文件input1.mp4、input2.mp4和input3.mp4拼接成一个新的视频文件。
同样地,我们使用了-filter_complex参数来指定复杂的滤镜操作,[0:v]、[0:a]、[1:v]、[1:a]、[2:v]和[2:a]分别表示三个输入文件的视频流和音频流,concat=n=3:v=1:a=1表示对三个输入文件进行拼接,输出一个视频流和一个音频流。
能加水印吗?
其实就是一个指定的视频,一个指定的图片,所以也是 2 个 -i
ffmpeg -i input.mp4
-i watermark.png
-filter_complex "overlay=10:10" output.mp4
这里的 overlay 是叠加必会的。后面跟着的是前景视频相对于背景视频左上角的偏移量(也就是 x 和 y 坐标)
通过修改 overlay
过滤器的参数,我们可以调整前景视频在背景视频中的位置和大小
如何放正中央:
ffmpeg -i video2.mp4
-i video1.mp4
-filter_complex "overlay=(W-w)/2:(H-h)/2" output.mp4
其中 W
和 H
分别是背景视频的宽度和高度,w
和 h
分别是前景视频的宽度和高度。这样计算出来的 (W-w)/2
和 (H-h)/2
就是前景视频相对于背景视频左上角的偏移量,使得前景视频居中显示。
这里提一个知识点:HD 和 1080p 的区别?
HD和1080p都是指高清视频,但它们有些微妙的区别。
HD(High Definition)是一个广义的术语,用于描述任何高于标准分辨率的视频。
这意味着,只要视频的分辨率超过了标准分辨率,例如720×480或720×576,它就可以被称为高清视频,无论它的具体分辨率是多少。
而1080p则是一种具体的高清视频格式,它的分辨率为1920×1080像素,也被称为全高清(Full HD)。1080p的画质非常出色,可以显示更多的细节和清晰度,相比标准分辨率的视频画面更加逼真。
因此,可以说1080p是一种特定的高清视频格式,而HD则是一个更加通用的术语,可以用来描述各种不同分辨率的高清视频。
后面我们还有续篇,欢迎对 ffmpeg 的关注转发。喜欢音视频开发的同学也一起学习哈.
作者: 大前端视野
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。