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

ffmpeg录屏原理_ubuntu自带录屏软件介绍,第1张

ffmpeg录屏原理_ubuntu自带录屏软件介绍 FFmpeg是领先的多媒体框架,是一个强大的处理音视频的开源库,能够解码、编码、转码、混流、流媒体分离、滤镜和播放几乎所有格式的音视频内容。

它既可以使用API对音视频进行处理,也可以使用FFmpeg命令编辑音视频文件。

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

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

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

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

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

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

libswscale:是一个执行高度优化的图像缩放和色彩空间/像素格式转换 *** 作的库。

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

FFmpeg工具及其作用ffmpeg:ffmpeg是一个命令行工具,用于在命令行实现FFmpeg具有的功能。

ffplay: ffplay是一个使用 FFmpeg 库和 SDL 库的非常简单和便携的媒体播放器。

它主要用作各种 FFmpeg API 的测试平台。

ffprobe: ffprobe 是一个多媒体流分析工具。

它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。

它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型。

它可以作为一个独立的应用来使用,也可以结合文本过滤器执行更复杂的处理。

经过了解了FFmpeg的目录及其工具,下面文章着重介绍下在日常生活中,我们怎么使用FFmpeg命令行处理音视频文件。

FFmpeg处理音视频功能说明FFmpeg命令根据功能的区分,大致可以分为:录制命令,音视频的合成和分离,音视频的切割与合并,图片、视频互相转换等几个大的模块。

下面我们介绍下如何使用FFmpeg命令行处理音视频实现以上的几个功能。

本文以Ubuntu *** 作系统为例,通过简单的命令sudo apt-get install ffmpeg来安装也可以在Windows,MacOS,其他Linux *** 作系统安装FFmpeg后执行一下命令1) 录制ffmpeg -f avfoundation -list_devices true -i “”2) 录屏ffmpeg -f avfoundation -i 1 -r 30 out.yuv· -f 指定使用 avfoundation 采集数据。

· -i 指定从哪儿采集数据,它是一个文件索引号。

在我的电脑上,1 代表桌面(可以通过上面的命令查询设备索引号)。

· -r 指定帧率。

按 ffmpeg 官方文档说-r 与-framerate 作用相同,但实际测试时发现不同。

-framerate 用于限制输入,而-r 用于限制输出。

3) 录屏+声音ffmpeg -f avfoundation -i 1:0 -r 29.97 -c:v libx264 -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 -framerate 30 -f avfoundation -i 0 out.mp4· -framerate 限制视频的采集帧率。

这个必须要根据提示要求进行设置,如果不设置就会报错。

· -f 指定使用 avfoundation 采集数据。

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

5) 视频+音频ffmpeg -framerate 30 -f avfoundation -i 0:0 out.mp46) 录音ffmpeg -f avfoundation -i :0 out.wav7) 录制音频裸数据ffmpeg -f avfoundation -i :0 -ar 44100 -f s16le out.pcm8) 抽取音频流ffmpeg -i input.mp4 -acodec copy -vn out.aac· acodec: 指定音频编码器,copy 指明只拷贝,不做编解码。

· vn: v 代表视频,n 代表 no 也就是无视频的意思。

9) 转换为MP3格式ffmpeg -i input.mp4 -acodec libmp3lame out.mp310) 抽取视频流ffmpeg -i input.mp4 -vcodec copy -an out.h264· vcodec: 指定视频编码器,copy 指明只拷贝,不做编解码。

· an: a 代表视频,n 代表 no 也就是无音频的意思。

11) 视频转格式ffmpeg -i video_test.mp4 -vcodec copy -acodec copy out_convert.flv上面的命令表式的音频、视频都直接 copy,只是将 mp4 的封装格式转成了 flv。

12) 去除视频声音ffmpeg -i video_auido.mp4 -vcodec copy -an video.mp413) 视频压缩1)ffmpeg -i test_ffmpeg.mp4 (压缩的文件更大更清晰,一般情况下不用)2)ffmpeg -i out.MP4 -b:v 500k 512k_out.mp4(减小视频码率,压缩的更模糊)14) 音视频合并ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp415) 提取YUV数据ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv# 播放ffplay -s wxh out.yuv· -c:v rawvideo 指定将视频转成原始数据· -pixel_format yuv420p 指定转换格式为 yuv420p16) 视频YUV转H264ffmpeg -f rawvideo -pix_fmt yuv420p -s 640×480 -r 30 -i out.yuv -c:v libx264 -f rawvideo out.h26417) 提取音频PCM数据ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm# 播放ffplay -ar 44100 -ac 2 -f s16le -i out.pcm18) PCM转WAVffmpeg -f s16be -ar 8000 -ac 2 -acodec pcm_s16be -i input.raw output.wav19) 添加水印图片水印:ffmpeg -i out.mp4 -vf “movie=logo.png,scale=128:72[watermask];[in][watermask] overlay=96:54 [out]” water_img.mp4· -vf 中的 movie 指定 logo 位置。

scale 指定 logo 大小。

overlay 指定 logo 摆放的位置。

文字水印:ffmpeg -i out.mp4 -vf “drawtext=fontfile=FZBaoHTJW_Xi.TTF: text=’anyRTC’:x=128:y=72:fontsize=24:fontcolor=red:shadowy=2” water_text.mp420) 视频缩放fmpeg -i out.mp4 -vf scale=iw/2:-1 scale.mp4· -vf scale 指定使用简单过滤器 scale,iw/2:-1 中的 iw 指定按整型取视频的宽度。

-1表示高度随宽度一起变化。

降低视频的分辨率且转换视频格式ffmpeg -i input.avi -vf scale=640:360 out.mp421) 视频裁剪ffmpeg -i VR.mov -vf crop=in_w-300:in_h-200 -c:v libx264 -c:a copy -video_size 1280×720 vr_new.mp4crop 格式: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 -filter_complex “[0:v]pad=w=2*iw[a];[0:v]hflip[b];[a][b]overlay=x=w” duicheng.mp4· hflip 水平翻转· 如果要修改为垂直翻转可以用 vflip。

23) 裁剪片段ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out_cut.mp4· -ss 指定裁剪的开始时间,精确到秒· -t 被裁剪后的时长。

24) 音视频合并首先创建一个 videolist.txt 文件,文件内容如下:file ‘test1.mp4’file ‘test2.mp4’然后执行下面的命令:ffmpeg -f concat -i videolist.txt -c copy output.mp425) HLS切片ffmpeg -i out.mp4 -c:v libx264 -c:a libfdk_aac -strict -2 -f hls out.m3u8· -strict -2 指明音频使有 AAC。

· -f hls 转成 m3u8 格式。

26) 视频转JPEGffmpeg -i video_test.mp4 -r 1 -f image2 image-%3d.jpeg27) 图片格式转换ffmpeg -i input.bmp out.jpgffmpeg -i input.bmp out.png28) 视频按帧截图主要用于用户手动截图或上传视频生成缩略图此处:-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持,-vframes 设置转换多少桢(frame)的视频,示例命令是获取第一秒第一帧的截图。

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

ffmpeg -ss 00:00:01 -y -i video_test.mp4 -vframes 1 snap.jpg29) 视频转GIFffmpeg -i video_test.mp4 -r 1 -f image2 image-%3d.jpeg30) 图片转视频ffmpeg -f image2 -i image-%3d.jpeg out_img_video.mp431) 视频添加字幕srtffmpeg -i video_test.mp4 -vf subtitles=subtitle.srt out_subtitle.mp432) 视频添加音乐+字幕ffmpeg -i video_test.mp4 -i audio_bg.mp3 -vf subtitles=all_mp3_srt.srt out_mp3_subtitle.mp4FFmpeg是一个强大的专门音视频处理的库,很多播放器都是基于FFmpeg进行的开发。

文章所提的功能只是小编罗列的FFmpeg可使用功能的一部分,更多FFmpeg命令行可实现处理音视频的功能,大家可以去FFmpeg官网查阅相关文档。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/666572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存