案例:
二:FFmpeg命令基本分类
官方网站:https://ffmpeg.org/documentation.html
官方文档:https://ffmpeg.org/ffmpeg.html
(一)基本信息查询命令
详细见:https://www.jianshu.com/p/a6e711cd3f8d
(二) 录制命令
1.mac下面的命令
ffmpeg -f avfoundation -i 1 -r 30 out.yuv #注释:使用avfoundation以30帧的频率进行录屏输出为out.yuv文件
-f : 指定使用avfoundation采集数据,设定输出设备 -i :指定从哪采集数据,它是一个文件索引号,在MAC上,1代表桌面 -r : 指定帧率
录制音频:https://www.jianshu.com/p/e63c063987b6
2.其他设备下:https://blog.csdn.net/shaosunrise/article/details/81068080
3.基于2中测试linux使用命令
(1)查看设备
ffmpeg -devices -hide_banner
注:-hide_banner 所有FFmpeg工具通常都会显示版权声明、构建选项和库版本(如下图所示)。此选项可用于禁止打印此信息。
(2)录制视频(使用设备中x11grab)
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 v-out.mp4
上面的参数,指的是从屏幕的左上角(x=100, y=200)的位置,录制分辨率为1024×768的视频。
-i :0.0+100,200 其中:0.0是X11服务的显示屏幕号,与DISPLAY环境变量相同:
DISPLAY=:0.0
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处.
直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0.0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:
DISPLAY 环境变量格式如下host:NumA.NumB,
host:指Xserver所在的主机主机名或者ip地址, 图形将显示在这一机器上, 可以是启动了图形界面的Linux/Unix机器, 也可以是安装了Exceed, X-Deep/32等Windows平台运行的Xserver的Windows机器.
如果Host为空, 则表示Xserver运行于本机, 并且图形程序(Xclient)使用unix socket方式连接到Xserver,而不是TCP方式.
使用TCP方式连接时, NumA为连接的端口减去6000的值, 如果NumA为0, 则表示连接到6000端口; 使用unix socket方式连接时则表示连接的unix socket的路径, 如果为0, 则表示连接到/tmp/.X11-unix/X0 .
NumB则几乎总是0.
100是抓取时的x偏移量,200是y偏移量。
ffplay v-out.mp4 #读取视频
(3)基于(2)使用ALSA同时录制声音:https://blog.csdn.net/rong11417/article/details/102880549
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 av-out.mkv
ALSA (Advanced Linux Sound Architecture)设备(这里作为输入设备)。
要在配置过程中启用这个输入设备,您需要在系统上安装libasound。该设备允许从ALSA设备(设备存在)捕获。要捕获的设备名称必须是ALSA(card identifier)卡标识符。ALSA标识符具有语法:
hw:CARD[,DEV[,SUBDEV]] #其中DEV和SUBDEV组件是可选的。这三个参数(顺序:CARD、DEV、SUBDEV)指定卡号或标识符、设备号和子设备号(-1表示任意)。
要查看系统当前识别的cards列表,请检查文件/proc/asound/cards和/proc/asound/devices.
或者使用以下命令显示详细信息:
aplay -l
arecord -l
例如,要使用ffmpeg从卡id为0的ALSA设备捕获,可以运行命令:
ffmpeg -f alsa -i hw:0 alsaout.wav
-ac[:stream_specifier] channels (input/output,per-stream)
设置音频通道数。对于输出流,默认设置为输入音频通道的数量。对于输入流,此选项仅对音频抓取设备和原始demuxers有意义,并映射到相应的demuxer选项。
(三)分解与复用
1.文件格式转换
ffmpeg -i gfxm.mp4 -vcodec copy -acodec copy out.flv #音视频编码处理方式都是copy,不改变
ffmpeg version N-101559-ga1cd419 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609 configuration: --enable-shared --prefix=/usr/local/ffmpeg --enable-gpl --enable-libx264 --enable-libx265 --enable-debug --disable-optimizations --enable-pthreads --enable-shared libavutil 56. 68.100 / 56. 68.100 libavcodec 58.132.100 / 58.132.100 libavformat 58. 74.100 / 58. 74.100 libavdevice 58. 12.100 / 58. 12.100 libavfilter 7.109.100 / 7.109.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc 55. 8.100 / 55. 8.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'gfxm.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Multimedia Cloud Transcode (cloud.baidu.com) Duration: 00:02:01.11, start: 0.000000, bitrate: 746 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 864x486 [SAR 1:1 DAR 16:9], 679 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 64 kb/s (default) Metadata: handler_name : SoundHandler vendor_id : [0][0][0][0] Output #0, flv, to 'out.flv': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.74.100 Stream #0:0(und): Video: h264 (High) ([7][0][0][0] / 0x0007), yuv420p, 864x486 [SAR 1:1 DAR 16:9], q=2-31, 679 kb/s, 25 fps, 25 tbr, 1k tbn, 12800 tbc (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] Stream #0:1(und): Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 64 kb/s (default) Metadata: handler_name : SoundHandler vendor_id : [0][0][0][0] Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 0 fps=0.0 q=-1.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= frame= 3024 fps=0.0 q=-1.0 Lsize= 11128kB time=00:02:01.06 bitrate= 753.0kbits/s speed=3.03e+03x video:10028kB audio:954kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.330767%