ffmpeg录屏原理 ubuntu自带录屏软件介绍

FFmpeg是领先的开放核心,它是一个强大的用于音频和视频处理的开源库。它可以解码,编码,转码,混合流,分离流媒体,过滤和播放几乎所有格式的音频和视频内容。它不仅可以使用API处理

本文最后更新时间:  2023-05-01 00:38:02

FFmpeg是领先的开放核心,它是一个强大的用于音频和视频处理的开源库。它可以解码,编码,转码,混合流,分离流媒体,过滤和播放几乎所有格式的音频和视频内容。它不仅可以使用API处理音频和视频,还可以使用FFmpeg命令编辑音频和视频文件。

包括用于音频、视频和字幕流的多个解码器和编码器,以及多个比特流过滤器。

FFmpeg目录及其功能

libavutil:是一个工具库,包含用于简化编程的函数,包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等等。

libavcodec:是一个包含音频/视频编解码器的库。

libavformat:是一个包含多媒体容器格式的合成器和拆分器的库。

libavdevice:是一个包含输入输出设备的库,用来抓取和渲染很多常见的多媒体I/O软件框架,包括Video4Linux、Video4Linux2、VfW和ALSA。

libavfilter:是一个包含媒体过滤器的库。

libwscale:是一个执行高度优化的图像缩放和颜色空帧间/像素格式转换的库。

libswresample:是一个库,执行高度优化的音频重采样,重混音和样本格式转换操作。

FFmpeg工具及其功能

FFmpeg:FFMPEG是一个命令行工具,用来实现FFmpeg在命令行上拥有的功能。

FFPlay:FFPlay是一个非常简单和便携的媒体播放器,使用FFmpeg库和SDL库。主要用作各种FFmpeg API的测试平台。

ffprobe:ffprobe是一个多媒体流分析工具。它从多媒体流中收集信息,并以人类和机器可读的形式打印出来。它可以用来检测多媒体流的容器类型,以及每个多媒体流的格式和类型。它可以用作独立的应用程序,也可以与文本过滤器结合使用,以执行更复杂的处理。

在了解了FFmpeg的目录及其工具之后,下面这篇文章重点介绍在日常生活中如何使用FFmpeg命令行处理音视频文件。

MPEG音视频处理的功能描述

按照功能区分,FFmpeg命令大致可以分为几大模块:录音命令、音视频合成与分离、音视频剪切与合并、图片与视频转换。下面介绍一下如何使用FFmpeg命令行处理音视频来实现上述功能。

本文以Ubuntu操作系统为例,通过简单的命令sudo apt-get install ffmpeg进行安装。

您也可以在Windows、MacOS和其他Linux操作系统中安装FFmpeg后执行该命令。

1)录制

ffmpeg-f av foundation-list _ devices true-I “”

2)录制屏幕

ffmpeg-f av foundation-I 1-r 30 out . YUV

-f指定使用avfoundation收集数据。

-I指定收集数据的位置,这是一个文件索引号。在我的电脑上,1代表桌面(可以通过上面的命令查询设备索引号)。

-r指定帧速率。根据ffmpeg官方文档,-r与-framerate功能相同,但在实际测试中发现不同。-framerate用于限制输入,而-r用于限制输出。

3)录制屏幕+声音

ffmpeg-f av foundation-I 1:0-r 29.97-c:v libx 264-CRF 0-c:a libfdk _ AAC-profile:a AAC _ he _ v2-b:a 48k out . flv

-I 1:0 “冒号前1 ”表示的屏幕索引号。”冒号0 ″表示的语音相位数。

-c: v与参数-vcodec一样,表示视频编码器。c是codec的缩写,V是video的缩写。

-CRF是x264的参数。0表无损压缩。

-C: A和参数-acodec一样,表示音频编码器。

-profile是fdk_aac的参数。aac_he_v2表使用AAC_HE v2压缩数据。

-b: a指定音频码率。b是bitrate的缩写,A是audio的缩写。

4)录制视频

ffmpeg-帧率30-f av foundation-i0 out.mp4

-framerate限制视频采集的帧速率。这必须根据提示要求进行设置。如果没有设置,将会报告一个错误。

-f指定使用avfoundation收集数据。

-我指定视频设备的索引号。

5)视频+音频

ffmpeg-帧率30-f av foundation-I 0:0 out.mp4

6)录制

ffmpeg-f av foundation-I:0 out . wav

7)记录音频原始数据

ffmpeg-f av foundation-I:0-ar 44100-f s16le out . PCM

8)提取音频流

ffmpeg-I input.mp4-acodec copy-VN out . AAC

Acodec:指定音频编码器,copy表示只复制,不编解码。

VN: V代表视频,N代表无,表示无视频。

9)转换为MP3格式

ffmpeg-I input.mp4-acodec libmp 3 lame out . MP3

10)提取视频流

ffmpeg-I input.mp4-vcodec copy-an out . h264

Vcodec:指定视频编码器,copy表示只复制,不编解码。

安:A代表视频,N代表没有,也就是没有音频。

11)要格式化的视频

ffmpeg-I video _ test . MP4-vcodec copy-acodec copy out _ convert . flv

直接复制上面命令表的音视频,但是把mp4的封装格式改成flv。

12)移除视频声音

ffmpeg-I video _ au ido . MP4-vcodec copy-an video.mp4

13)视频压缩

1)ffmpeg -i test_ffmpeg.mp4(压缩文件更大更清晰,一般不使用)

2) FFMPEG-I输出。MP4-B:v500k 512k _ out.mp4(降低视频比特率,压缩更模糊)

14)音频和视频合并

ffmpeg-I out . h264-I out . AAC-vcodec copy-acodec copy out.mp4

15)提取YUV数据

ffmpeg-I input.mp4-an-c:v raw video-pixel _ format YUV 420 p out . YUV

#播放

ffplay -s wxh out.yuv

-c: v raw video指定将视频转换为原始数据。

-pixel _ format yuv420p指定转换格式为yuv420p。

16)视频YUV转H264

ffmpeg-f raw video-pix _ fmt YUV 420 p-s 640 ×480-r 30-I out . YUV-c:v libx 264-f raw video out . h264

17)提取音频PCM数据

ffmpeg-I out.mp4-VN-ar 44100-AC 2-f s16le out . PCM

#播放

ffplay-ar 44100-AC 2-f s16le-I out . PCM

18) PCM到WAV

ffmpeg-f s16be-ar 8000-AC 2-acodec PCM _ s16be-I input . raw output . wav

19)添加水印

图像水印:

ffmpeg -i out.mp4 -vf “movie=logo.png,scale=128:72[watermask];[in][watermask] overlay=96:54 [out]” water_img.mp4out.mp4-VF “movie=logo.png,scale = 128:72[water mask];[in][water mask]overlay = 96:54[out]”water_img.mp4

-VF中的电影指定徽标位置。指定ScaleLogo刻度。覆盖指定放置徽标的位置。

水印:

out.mp4-VF “Xi。TTF:text = ’anyRTC & # 8217:x = 128:y = 72:font size = 24:font color = red:shadow = 2 ”水_text.mp4

20)视频缩放

FM peg-I out.mp4-VF标度= iw/2:-1 scale.mp4

-VFScale指定使用简单滤镜比例,iw/2中的iw:-1指定视频的宽度为整数。-1表示高度随宽度变化。

降低视频的分辨率并转换视频格式。

ffmpeg -i输入. avi -vf比例= 640:360 out.mp4

21)视频裁剪

ffmpeg-I VR . mov-VF crop = in _ w-300:in _ h-200-c:v libx 264-c:a copy-video _ size 1280 ×720 vr_new.mp4

裁剪格式:crop=out_w:out_h:x:y

Out _ w:输出宽度。您可以使用in_w表来输入视频的宽度。

Out _ h:输出高度。可以使用in_h表输入视频的高度。

X: x坐标

Y: y坐标

如果x和y设定为0,裁剪从左上角开始。不写就从中心点剪。

22)视频左右翻转(上下)

ffmpeg-I out.mp4滤波器_复合体“[0:v]pad = w = 2 * iw[a];[0:v]HF lip[b];overlay = x = w & # 8221duicheng.mp4

水平翻转

如果想改成垂直翻转,可以用vflip。

23)剪辑

ffmpeg-I out.mp4-ss 00:00:00-t 10 out _ cut . MP4

-ss指定剪辑的开始时间,精确到秒。

-t裁剪后的时间长度。

24)音频和视频合并

首先,用以下内容创建一个videolist.txt文件:

文件‘test1.mp4 & # 8217

文件‘test 2 . MP4 ’

然后执行以下命令:

output.mp4拷贝

25) HLS切片

ffmpeg-I out.mp4-c:v libx 264-c:a libfdk _ AAC-strict-2-f HLS out . m3u 8

-strict-2表示为音频启用了AAC。

-f HLS转换成m3u8格式。

26)视频转换为JPEG格式

ffmpeg-I video _ test . MP4-r 1-f image2 image-% 3d . JPEG

27)图像格式转换

ffmpeg -i输入. BMP out.jpg

ffmpeg -i输入. BMP out.png

28)视频截图逐帧

主要用于用户手动截图或者上传视频生成缩略图。

这里:-ss位置搜索指定的时间[-]hh:mm:ss[。xxx]格式也支持,-vframes设置转换多少帧视频,示例命令是第一秒获取第一帧的截图。

注意:生成的截图最好使用jpg格式,占用空间小空。如果需要使用其他格式,可以根据业务需求进行设置。

ffmpeg-ss 00:00:01-y-I video _ test . MP4-v frames 1 snap.jpg

29)视频转GIF

ffmpeg-I video _ test . MP4-r 1-f image2 image-% 3d . JPEG

30)图片转视频

ffmpeg -f image2 -i image-%3d.jpeg out_img_video.mp4ffmpeg-f image2-I image-% 3d . JPEG out _ img _ video . MP4

31)给视频添加字幕srt

ffmpeg-I video _ test . MP4-VF subtitle = subtitle . SRT out _ subtitle . MP4

32)为视频+字幕添加音乐

ffmpeg-I video _ test . MP4-I audio _ BG . MP3-VF subtitle = all _ MP3 _ SRT . SRT out _ MP3 _ subtitle . MP4

FFmpeg是一个强大的音频和视频处理库,许多播放器都是基于FFmpeg开发的。本文提到的功能只是边肖上市的FFmpeg的部分可用功能。更多的FFmpeg命令行可以实现处理音视频的功能。可以去FFmpeg官网查阅相关文档。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。