FFmpeg学习(二)FFmpeg命令学习

案例:

FFmpeg学习(二)FFmpeg命令学习

二:FFmpeg命令基本分类

官方网站:https://ffmpeg.org/documentation.html

官方文档:https://ffmpeg.org/ffmpeg.html

FFmpeg学习(二)FFmpeg命令学习

(一)基本信息查询命令

FFmpeg学习(二)FFmpeg命令学习

详细见: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  

FFmpeg学习(二)FFmpeg命令学习

注:-hide_banner 所有FFmpeg工具通常都会显示版权声明、构建选项和库版本(如下图所示)。此选项可用于禁止打印此信息。

FFmpeg学习(二)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偏移量。

 FFmpeg学习(二)FFmpeg命令学习

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.

FFmpeg学习(二)FFmpeg命令学习

FFmpeg学习(二)FFmpeg命令学习

或者使用以下命令显示详细信息:

aplay -l
arecord -l

FFmpeg学习(二)FFmpeg命令学习

例如,要使用ffmpeg从卡id为0的ALSA设备捕获,可以运行命令:

ffmpeg -f alsa -i hw:0 alsaout.wav

-ac[:stream_specifier] channels (input/output,per-stream)

设置音频通道数。对于输出流,默认设置为输入音频通道的数量。对于输入流,此选项仅对音频抓取设备和原始demuxers有意义,并映射到相应的demuxer选项。

(三)分解与复用 

FFmpeg学习(二)FFmpeg命令学习

1.文件格式转换

ffmpeg -i gfxm.mp4 -vcodec copy -acodec copy out.flv   #音视频编码处理方式都是copy,不改变

FFmpeg学习(二)FFmpeg命令学习

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%
转换时产生的参数

相关文章: