FFMPEG常用的一些命令介绍:音频录制、视频录制

1.视频和音频单独抓取
如果指定输入格式和设备,则ffmpeg可以直接捕获视频和音频。

Linux下捕获摄像头的数据保存成视频文件:

# ffmpeg -f video4linux2 -s 1280x720 -i /dev/video0 test.mp4

参数介绍:

-s 指定摄像头输出的图像尺寸

-i 摄像头的设备节点

test.mp4 是保存的视频文件名称

-f video4linux2是指定框架

2. Linux下捕获声卡的数据保存成音频文件:

(1)# ffmpeg -f alsa -ac 2 -ar 44100 -i default out.wav
参数介绍:
-i 指定声卡设备名称。这里default表示选择默认声卡。
out.wav 捕获的音频数据保存的文件名称
-f 是指定音频驱动类型。alsa是linux下音频驱动框架。oss是另外一种音频框架。
-ar <freq> 设置音频采样率,以HZ为单位
-ac <channels> 设置音频通道数(单声道、双声道)
(2)# ffmpeg -f alsa -ac 1 -ar 44100 -i default -t 30 out.wav
参数介绍:
-t 30 表示录制30秒就自动停止

(3)# ffmpeg -f alsa -ac 1 -ar 16000 -i hw:0 -t 10 out.wav
参数介绍:
    这里的hw:0 也表示选择默认的声卡设备录音。

列出当前主机上的声卡设备:

[root@wbyq linux-share-dir]# arecord -l  (列出声卡设备数量)
**** List of CAPTURE Hardware Devices ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

[root@wbyq linux-share-dir]# arecord -L  (列出声卡设备详细信息)
default
    Default
front:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    Front speakers
surround40:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    4.0 Surround output to Front and Rear speakers
iec958:CARD=AudioPCI,DEV=0
    Ensoniq AudioPCI, ES1371 DAC2/ADC
    IEC958 (S/PDIF) Digital Audio Output
front:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Front speakers
surround40:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    IEC958 (S/PDIF) Digital Audio Output

使用arecord -L命令列出了声卡名字之后,就可以选择指定声卡录制声音,其中front:xxx 就是声卡的名字。

选择指定的声卡录制声音示例:

(1). 选择USB摄像头的音频设备录音
# ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=U0x46d0x825,DEV=0 -t 10 out.wav

(2). 选择电脑自带的声卡录音
# ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=AudioPCI,DEV=0 -t 10 out.wav

FFMPEG录制音频的其他参数:

# ffmpeg --help
音频选项:
-aframes number 设置要输出的音频帧数
-aq quality 设置音频质量(特定于编解码器)
-ar rate 设置音频采样率(以Hz为单位)
-ac channel 设置音频通道数
-an 禁用音频
-acodec codec 强制音频编解码器复制到流
-vol volume   更改音频音量(256=正常)
-af filter_graph 设置音频过滤器

 录制带声音的视频
命令示例:

#ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=U0x46d0x825,DEV=0 -f video4linux2 -i /dev/video0 out.mpg

#ffmpeg -f alsa -ac 1 -ar 16000 -i front:CARD=U0x46d0x825,DEV=0 -f video4linux2 -i /dev/video0 out.mp4

录制MP4格式的视频时,音频采样率设置16000效果比较好一些。

采用MP4格式录制视频的详细信息(视频H264、音频AAC):

Output #0, mp4, to 'out.mp4':
  Metadata:
    encoder         : Lavf57.25.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc57.24.102 libx264
    Side data:
      unknown side data type 10 (24 bytes)
    Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 16000 Hz, mono, fltp, 69 kb/s
    Metadata:
      encoder         : Lavc57.24.102 aac
Stream mapping:
  Stream #1:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))

采用MPG格式录制视频的详细信息(视频mpeg1video、音频mp2):

Output #0, mpeg, to 'out.mpg':
  Metadata:
    encoder         : Lavf57.25.100
    Stream #0:0: Video: mpeg1video, yuv420p, 640x480, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc
    Metadata:
      encoder         : Lavc57.24.102 mpeg1video
    Side data:
      unknown side data type 10 (24 bytes)
    Stream #0:1: Audio: mp2, 48000 Hz, mono, s16, 384 kb/s
    Metadata:
      encoder         : Lavc57.24.102 mp2
Stream mapping:
  Stream #1:0 -> #0:0 (rawvideo (native) -> mpeg1video (native))
  Stream #0:0 -> #0:1 (pcm_s16le (native) -> mp2 (native)

猜你喜欢

转载自blog.csdn.net/chanlp129/article/details/125512190