Ffmpeg 采集设备

1.Ubuntu 16.04

arecord -l 音频输入设备

arecord -l

**** List of CAPTURE Hardware Devices ****

card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 0: PCH [HDA Intel PCH], device 2: ALC662 rev3 Alt Analog [ALC662 rev3 Alt Analog]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 2: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

表示设备可以用hw后面加参数表示,其含义如下:

 hw:<X>,<Y>, where <X>=card, <Y>=device.

ffmpeg -f alsa -ac 1 -ar 48000 -i hw:2,0 try.wav

 

ffplay try.wav

 

ffplay version N-98427-g235a573 Copyright (c) 2003-2020 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
  configuration: --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-shared --enable-libv4l2 --enable-libmp3lame
  libavutil      56. 55.100 / 56. 55.100
  libavcodec     58. 94.100 / 58. 94.100
  libavformat    58. 48.100 / 58. 48.100
  libavdevice    58. 11.101 / 58. 11.101
  libavfilter     7. 86.100 /  7. 86.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
Input #0, wav, from 'try.wav':=    0KB vq=    0KB sq=    0B f=0/0
  Metadata:
    encoder         : Lavf58.48.100
  Duration: 00:00:07.49, bitrate: 768 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, s16, 768 kb/s

2. windows

ffmpeg在Linux下用X11grab进行屏幕录像,在Windows下用DirectShow

首先需要安装一个软件,screen capture recorder

2.0 查看设备

ffmpeg -list_devices true -f dshow -i dummy

[dshow @ 00000000005202c0] DirectShow video devices (some may be both video and audio devices)
[dshow @ 00000000005202c0]  "Integrated Camera"
[dshow @ 00000000005202c0]     Alternative name "@device_pnp_\\?\usb#vid_5986&pid_0294&mi_00#7&929bf5f&0&0000#
{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 00000000005202c0]  "screen-capture-recorder"
[dshow @ 00000000005202c0]     Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{4EA69364-2
C8A-4AE6-A561-56E4B5044439}"
[dshow @ 00000000005202c0] DirectShow audio devices
[dshow @ 00000000005202c0]  "楹﹀厠椋?(Realtek High Definition Au"
[dshow @ 00000000005202c0]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\楹﹀厠椋?(R
ealtek High Definition Au"
[dshow @ 00000000005202c0]  "virtual-audio-capturer"
[dshow @ 00000000005202c0]     Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{8E146464-D
B61-4309-AFA1-3578E927E935}"
dummy: Immediate exit requested

4个设备,两个视频两个音频

Integrated Camera 视频输入设备--摄像头

"screen-capture-recorder" 桌面捕获设备

楹﹀厠椋?(Realtek High Definition Au (中文设备乱码问题)麦克风 (Realtek High Definition Au

"virtual-audio-capturer"  声卡捕获设备

 

FFmpeg的list_options查看设备的选项

 

ffmpeg -list_options true -f dshow -i video="TV Camera"

[dshow @ 0000000000590300] DirectShow video device options (from video devices)
[dshow @ 0000000000590300]  Pin "捕获" (alternative pin name "0")[dshow @ 0000000000590300]   vcodec=mjpeg  min s=1280x720 fps=15 max s=12
[dshow @ 0000000000590300]   vcodec=mjpeg  min s=1280x720 fps=15 max s=1280x720 fps=30
[dshow @ 0000000000590300]   vcodec=mjpeg  min s=640x480 fps=15 max s=640x480 fps=30
[dshow @ 0000000000590300]   vcodec=mjpeg  min s=640x480 fps=15 max s=640x480 fps=30
[dshow @ 0000000000590300]   vcodec=mjpeg  min s=320x240 fps=15 max s=320x240 fps=30
[dshow @ 0000000000590300]   vcodec=mjpeg  min s=320x240 fps=15 max s=320x240 fps=30
[dshow @ 0000000000590300]   vcodec=mjpeg  min s=352x288 fps=15 max s=352x288 fps=30
[dshow @ 0000000000590300]   vcodec=mjpeg  min s=352x288 fps=15 max s=352x288 fps=30
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=1280x720 fps=10 max s=1280x720 fps=10
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=1280x720 fps=10 max s=1280x720 fps=10
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=640x480 fps=15 max s=640x480 fps=30
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=640x480 fps=15 max s=640x480 fps=30
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=320x240 fps=15 max s=320x240 fps=30
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=320x240 fps=15 max s=320x240 fps=30
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=352x288 fps=15 max s=352x288 fps=30
[dshow @ 0000000000590300]   pixel_format=yuyv422  min s=352x288 fps=15 max s=352x288 fps=30

 

2.1捕获麦克风视频

ffmpeg -f dshow -i audio="麦克风 (Realtek High Definition Au" -acodec libmp3lame temp.mp3

2.2捕获摄像头视频:

ffmpeg -f dshow -i video="TV Camera" -vcodec rawvideo -pix_fmt yuyv422 -s 640x480 mycamera.yuv

ffplay -video_size 640x480 -pixel_format yuyv422  mycamera.yuv

ffmpeg -f dshow -i video="TV Camera" -vcodec rawvideo -pix_fmt yuv420p -s 640x480 mycamera.yuv

ffplay -video_size 640x480 -pixel_format yuv420p  mycamera.yuv
ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 mycamera.mkv 

ffplay mycamera.mkv 

2.3同时捕获桌面和声卡声音并录制成flv文件:

ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -pix_fmt yuv420p -ar 48000 -vcodec libx264 -crf 23 -preset veryslow -x264opts b-adapt=2:bframes=0:aq-strength=1:psy-rd=0.8,0 -vsync vfr -acodec aac -bsf:a aac_adtstoasc -f flv temp.flv


2.4抓取声卡输出的声音,

比如网络MP3无法下载时,
可以结合ffmpeg实现在音乐播放时将其录制为MP3保存。
使用的命令行为:
ffmpeg -f dshow -i audio="virtual-audio-capturer" 1.mp3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值