ffmpeg-linux录音录像
查看ffmpeg支持的設(shè)備格式
leadcom@leadcom:~$ ffmpeg -hide_banner -devices Devices:D. = Demuxing supported.E = Muxing supported--DE alsa ALSA audio outputE caca caca (color ASCII art) output deviceDE fbdev Linux framebufferD iec61883 libiec61883 (new DV1394) A/V input deviceD jack JACK Audio Connection KitD kmsgrab KMS screen captureD lavfi Libavfilter virtual input deviceD libcdio D libdc1394 dc1394 v.2 A/V grabD openal OpenAL audio capture deviceE opengl OpenGL outputDE oss OSS (Open Sound System) playbackDE pulse Pulse audio outputE sdl,sdl2 SDL2 output deviceDE sndio sndio audio playbackDE video4linux2,v4l2 Video4Linux2 output deviceD x11grab X11 screen capture, using XCBE xv XV (XVideo) output device音頻輸入設(shè)備
ffmpeg支持alsa格式的音頻輸入設(shè)備
查看ffmpeg支持的alsa格式的音頻輸入?yún)?shù)選項(xiàng)
leadcom@leadcom:~$ ffmpeg -hide_banner -h demuxer=alsa Demuxer alsa [ALSA audio input]: ALSA demuxer AVOptions:-sample_rate <int> .D....... (from 1 to INT_MAX) (default 48000)-channels <int> .D....... (from 1 to INT_MAX) (default 2)可以看到只有采樣率sample_rate、聲道數(shù)channels這兩個(gè)參數(shù)。
查看音頻輸入設(shè)備
leadcom@leadcom:~$ arecord -l **** List of CAPTURE Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC3227 Analog [ALC3227 Analog]Subdevices: 1/1Subdevice #0: subdevice #0 card 1: Camera [Full HD 1080P PC Camera], device 0: USB Audio [USB Audio]Subdevices: 1/1Subdevice #0: subdevice #0可以看到當(dāng)前電腦有兩個(gè)音頻輸入,其中Camera [Full HD 1080P PC Camera]是我自己的USB攝像頭中的麥克風(fēng)設(shè)備。
查看音頻輸入設(shè)備的具體參數(shù)
查看上面USB攝像頭中的麥克風(fēng)設(shè)備的具體參數(shù)
leadcom@leadcom:~$ arecord -D hw:1,0 --dump-hw-params Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono HW Params of device "hw:1,0": -------------------- ACCESS: MMAP_INTERLEAVED RW_INTERLEAVED FORMAT: S16_LE SUBFORMAT: STD SAMPLE_BITS: 16 FRAME_BITS: 32 CHANNELS: 2 RATE: [44100 48000] PERIOD_TIME: [1000 2972155) PERIOD_SIZE: [45 131072] PERIOD_BYTES: [180 524288] PERIODS: [2 1024] BUFFER_TIME: [1875 5944309) BUFFER_SIZE: [90 262144] BUFFER_BYTES: [360 1048576] TICK_TIME: ALL -------------------- arecord: set_params:1339: Sample format non available Available formats: - S16_LE這里通過指定聲卡名稱獲取其硬件參數(shù)信息,可以看到channels通道數(shù)和rate即sample_rate采樣率。
采樣率是一個(gè)區(qū)間,但并意味著區(qū)間內(nèi)所有值都有效,一般只有幾個(gè)特定值可以。
例如44100/48000/192000,其他的值將會(huì)變成最接近上面三個(gè)值中的一個(gè),這其中的驗(yàn)證方法可以通過ffmpeg命令行來試驗(yàn)一下,如下:
ffmpeg -f alsa -sample_rate 采樣率 -i hw:1,0 -t 10 test.wav -v trace
查看命令行的輸出結(jié)果,可以看到最終可用的采樣率。
視頻輸入設(shè)備
ffmpeg支持v4l2格式的視頻輸入設(shè)備
查看ffmpeg支持的v4l2格式的視頻輸入?yún)?shù)選項(xiàng)
leadcom@leadcom:~$ ffmpeg -hide_banner -h demuxer=v4l2 Demuxer video4linux2,v4l2 [Video4Linux2 device grab]: V4L2 indev AVOptions:-standard <string> .D....... set TV standard, used only by analog frame grabber-channel <int> .D....... set TV channel, used only by frame grabber (from -1 to INT_MAX) (default -1)-video_size <image_size> .D....... set frame size-pixel_format <string> .D....... set preferred pixel format-input_format <string> .D....... set preferred pixel format (for raw video) or codec name-framerate <string> .D....... set frame rate-list_formats <int> .D....... list available formats and exit (from 0 to INT_MAX) (default 0)all .D....... show all available formatsraw .D....... show only non-compressed formatscompressed .D....... show only compressed formats-list_standards <int> .D....... list supported standards and exit (from 0 to 1) (default 0)all .D....... show all supported standards-timestamps <int> .D....... set type of timestamps for grabbed frames (from 0 to 2) (default default)default .D....... use timestamps from the kernelabs .D....... use absolute timestamps (wall clock)mono2abs .D....... force conversion from monotonic to absolute timestamps-ts <int> .D....... set type of timestamps for grabbed frames (from 0 to 2) (default default)default .D....... use timestamps from the kernelabs .D....... use absolute timestamps (wall clock)mono2abs .D....... force conversion from monotonic to absolute timestamps-use_libv4l2 <boolean> .D....... use libv4l2 (v4l-utils) conversion functions (default false查看視頻輸入設(shè)備
leadcom@leadcom:~$ ffmpeg -hide_banner -sources v4l2 Auto-detected sources for video4linux2,v4l2:/dev/video3 [HP TrueVision HD Camera: HP Tru]/dev/video2 [HP TrueVision HD Camera: HP Tru]/dev/video1 [Full HD 1080P PC Camera: Full H]/dev/video0 [Full HD 1080P PC Camera: Full H]或者使用v4l2-ctl工具(apt install v4l-utils)
leadcom@leadcom:~$ v4l2-ctl --list-devices Full HD 1080P PC Camera: Full H (usb-0000:00:14.0-1):/dev/video0/dev/video1HP TrueVision HD Camera: HP Tru (usb-0000:00:14.0-3):/dev/video2/dev/video3可以看到攝像頭有兩個(gè)video目錄,其中一個(gè)是圖像/視頻采集,一個(gè)是metadata采集。
如何區(qū)別他們兩個(gè)呢?
查看視頻輸入設(shè)備的具體參數(shù)
leadcom@leadcom:~$ ffmpeg -hide_banner -f v4l2 -list_formats all -i /dev/video0 [video4linux2,v4l2 @ 0x55ccd5f848c0] Compressed: mjpeg : Motion-JPEG : 1920x1080 352x288 1712x960 1600x896 1280x960 800x600 432x240 1280x720 640x480 640x360 848x480 [video4linux2,v4l2 @ 0x55ccd5f848c0] Raw : yuyv422 : YUYV 4:2:2 : 1920x1080 352x288 1712x960 1600x896 1280x960 800x600 432x240 1280x720 640x480 640x360 848x480 /dev/video0: Immediate exit requested或者使用v4l2-ctl查看
# 查看當(dāng)前攝像頭支持的視頻壓縮格式 leadcom@leadcom:~$ v4l2-ctl -d /dev/video0 --list-formats ioctl: VIDIOC_ENUM_FMTType: Video Capture[0]: 'MJPG' (Motion-JPEG, compressed)[1]: 'YUYV' (YUYV 4:2:2) # 查看攝像頭所有參數(shù) leadcom@leadcom:~$ v4l2-ctl -d /dev/video0 --all Driver Info:Driver name : uvcvideoCard type : Full HD 1080P PC Camera: Full HBus info : usb-0000:00:14.0-1Driver version : 5.10.50Capabilities : 0x84a00001Video CaptureMetadata CaptureStreamingExtended Pix FormatDevice CapabilitiesDevice Caps : 0x04200001Video CaptureStreamingExtended Pix Format Priority: 2 Video input : 0 (Camera 1: ok) Format Video Capture:Width/Height : 1920/1080Pixel Format : 'YUYV' (YUYV 4:2:2)Field : NoneBytes per Line : 3840Size Image : 4147200Colorspace : DefaultTransfer Function : Default (maps to Rec. 709)YCbCr/HSV Encoding: Default (maps to ITU-R 601)Quantization : Default (maps to Limited Range)Flags : Crop Capability Video Capture:Bounds : Left 0, Top 0, Width 1920, Height 1080Default : Left 0, Top 0, Width 1920, Height 1080Pixel Aspect: 1/1 Selection: crop_default, Left 0, Top 0, Width 1920, Height 1080, Flags: Selection: crop_bounds, Left 0, Top 0, Width 1920, Height 1080, Flags: Streaming Parameters Video Capture:Capabilities : timeperframeFrames per second: 5.000 (5/1)Read buffers : 0brightness 0x00980900 (int) : min=-10 max=10 step=1 default=2 value=2contrast 0x00980901 (int) : min=1 max=32 step=1 default=17 value=17saturation 0x00980902 (int) : min=0 max=32 step=1 default=17 value=17hue 0x00980903 (int) : min=-5 max=5 step=1 default=0 value=0white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1gamma 0x00980910 (int) : min=100 max=200 step=1 default=150 value=150power_line_frequency 0x00980918 (menu) : min=0 max=2 default=1 value=0white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1850 default=6500 value=6500 flags=inactivesharpness 0x0098091b (int) : min=0 max=10 step=1 default=6 value=6exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=3exposure_absolute 0x009a0902 (int) : min=156 max=5000 step=1 default=512 value=200 flags=inactive # 查看攝像頭所支持的分辨率 leadcom@leadcom:~$ v4l2-ctl --list-framesizes=MJPG -d /dev/video0 ioctl: VIDIOC_ENUM_FRAMESIZESSize: Discrete 1920x1080Size: Discrete 352x288Size: Discrete 1712x960Size: Discrete 1600x896Size: Discrete 1280x960Size: Discrete 800x600Size: Discrete 432x240Size: Discrete 1280x720Size: Discrete 640x480Size: Discrete 640x360Size: Discrete 848x480總結(jié)
以上是生活随笔為你收集整理的ffmpeg-linux录音录像的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《长度单位换算》
- 下一篇: windows中用注册表删除guest账