在使用 FFmpeg 作为编码器时,可以使用FFmpeg采集本地的音视频采集设备的数据,然后进行编码、封装、传输等操作。
例如,我们可以采集摄像头的图像作为视频,采集麦克风的数据作为音频,然后对采集的音视频数据进行编码,最后将编码后的数据封装成多媒体文件或者作为音视频流发送到服务器上(流媒体)。
打印 DirectShow 支持的设备列表(true 可用1替换)
ffmpeg -list_devices true -f dshow -i dummy
ffmpeg version N-107056 -g93505a9095-20220607 Copyright (c) 2000 -2022 the FFmpeg developers
built with gcc 11 .2 .0 (crosstool-NG 1 .24 .0 .533_681aaef )
configuration: --prefix=/ffbuild/prefix --pkg-config -flags=--static --pkg-config =pkg-config --cross -prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable -debug --disable -w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable -libpulse --enable-libvmaf --disable -libxcb --disable -xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable -libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable -libdrm --disable -vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220607
libavutil 57 . 26 .100 / 57 . 26 .100
libavcodec 59 . 33 .100 / 59 . 33 .100
libavformat 59 . 24 .100 / 59 . 24 .100
libavdevice 59 . 6 .100 / 59 . 6 .100
libavfilter 8 . 40 .100 / 8 . 40 .100
libswscale 6 . 6 .100 / 6 . 6 .100
libswresample 4 . 6 .100 / 4 . 6 .100
libpostproc 56 . 5 .100 / 56 . 5 .100
[dshow @ 0000025128032940 ] "C1E Camera" (video)
[dshow @ 0000025128032940 ] Alternative name "@device_pnp_\\?\usb#vid_0416&pid_5030&mi_00#7&1e8a46f3&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 0000025128032940 ] "麦克风 (C1E Camera)" (audio)
[dshow @ 0000025128032940 ] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{1685BEE9-E6A8-490A-8B85-480E607C0327}"
视频录制
ffmpeg -f dshow -i video="C1E Camera" -s 1280 x720 -vcodec libx264 001. mp4
ffmpeg -f dshow -i video="C1E Camera" -r 5 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency 002. mp4
上面组合命令设置了x264参数和aac添加adst filter,
如果想提高x264编码速度可使用 -preset:v ultrafast -tune:v zerolatency 两个参数,
举个例子:
ffmpeg -f dshow -i video="C1E Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency 003.mp4
录一段视频,按 q 键停止.
音频录制
//test1
ffmpeg -f dshow -i audio="麦克风 (C1E Camera)" -acodec aac temp.aac
//test2
ffmpeg -f dshow -i audio="麦克风 (C1E Camera)" -ar 16000 -ac 1 lib.wav
视频生成图片
//1 秒输出一张图片,从26 秒开始,持续7 秒
ffmpeg -i test . mp4 -r 1 -ss 00 :00 :26 -t 00 :00 :07 %03 d. png
图片生成录制
//1 .截取视频某一秒图片
ffmpeg -ss 00 :02 :06 -i test.mp4 -f image2 -y test1.jpg
//2 .实时抓取图片
ffmpeg -f dshow -rtbufsize 200 M -i video="C1E Camera" -r 1 -f image2 image%03 d.jpeg
音视频联合录制
//test1
ffmpeg -f dshow -i video="C1E Camera" :audio="麦克风 (C1E Camera)" -s 640 x360 -b :v 1000 k -b :a 128 k output.mp4
//test2
ffmpeg -f dshow -i video="C1E Camera" :audio="麦克风 (C1E Camera)" -r 5 -vcodec libx264 -preset :v ultrafast -tune :v zerolatency -acodec libmp3lame 002 .mkv
//test3
ffmpeg -f dshow -i video="C1E Camera" :audio="麦克风 (C1E Camera)" -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 002 .flv
参考
FFMPEG学习(一)---【命令行】采集视频和音频
FFmpeg命令行工具学习(四):FFmpeg 采集设备
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!