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 |
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