ffmpeg录制视频和音频


ffmpeg.exe的使用

命令格式

  • 功能:ffmpeg.exe用于视频的转码。
  • 最简单的命令
    ffmpeg -i input.mp4 -b:v 720k output.mpeg
    该命令将当前文件下的input.mp4文件转换为output.mpeg文件,并将output.ts文件视频的码率设置为720kbps

命令格式

ffmpeg -i {输入文件路径} -b:v {输出视频码率} {输出文件路径}

所有的参数都是以键值对的形式指定的。 例如输入文件参数是“-i”,而参数值是文件路径;输出视频码率参数是“-b:v”,而参数值是视频的码率值。但是注意位于最后面的输出文件路径前面不包含参数名称。

常用命令参数说明:

-h: 帮助
-i filename: 输入文件
-t duration: 设置处理时间,格式为hh:mm:ss
-ss position:设置起始时间,格式为hh:mm:ss
-b:v bitrate: 设置视频码率
-b:a bitrate: 设置音频码率
-r fps: 设置帧率
-s wxh: 设置帧大小,格式为WxH
-c:v codec: 设置视频编码器
-c:a codec: 设置音频编码器
-ar freq: 设置音频采样率

更多命令行参数:ffmpeg文档

使用ffmpeg转码

使用ffmpeg将当前目录下的MP4视频转码为MPEG视频输出

ffmpeg -i 那些年,我们一起追的女孩.mp4 -b:v 393k output.mpeg

ffplay.exe的使用

  • 功能:ffplay.exe用于视频的播放
  • 最简单的命令

命令格式

ffplay input.mp4

该命令将播放当前文件下的 input.mp4

命令格式

ffplay {输入文件路径}

ffplay.exe的参数格式和ffmpeg.exe是类似的。所有的参数都是以键值对的形式指定的(由于不包含输出文件,所以只能指定输入参数)。注意位于最后面的输入文件路径前面不包含参数名称。

快捷键说明:

q, ESC:退出
f :全屏
p, 空格: 暂停
鼠标点击屏幕: 跳转到指定位置
更多命令行参数:ffmplay文档

采集音频的方式

  • Android
    • AudioRecorder
    • MediaRecoder
  • IOS
    • AudioUnit
    • AVFoundation
  • Windows
    • DirectShow
    • OpenAL
    • AudioCore

FFmpeg进行屏幕录像和录音

先安装dshow软件 Screen Capturer Recorder, 项目地址:https://sourceforge.net/projects/screencapturer/files/ 。而后查看可用设备名字:

ffmpeg -list_devices true -f dshow -i dummy

会显示如下:

DirectShow video devices (some may be both video and audio devices)
“screen-capture-recorder”    //视频设备
DirectShow audio devices
“virtual-audio-capturer”  //音频设备.net

就能看到咱刚安装的Screen Capturer Recorder,若是你有其余的设备,好比摄像头,麦克风等,也会显示。

录制视频(默认参数)

ffmpeg -f dshow -i video="screen-capture-recorder" v-out.mp4

录制声音(默认参数)视频

ffmpeg -f dshow -i audio="virtual-audio-capturer" a-out.aac

同时录制声音和视频(默认参数)

ffmpeg -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4

查看视频录制的可选参数教程

ffmpeg -f dshow -list_options true -i video="screen-capture-recorder"

个人设备有以下显示

DirectShow video device options (from video devices)
Pin “Capture” (alternative pin name “1”)
pixel_format=bgr0 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=bgr0 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=bgr24 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=rgb555le min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=rgb555le min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=rgb8 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=yuv420p min s=1×1 fps=0.02 max s=1680×1050 fps=30

示例视频录制(依次设置:分辨率 帧率 像素格式)

ffmpeg -f dshow -video_size 1680x1050 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder" v-out.mp4

查看音频设备可选参数

ffmpeg -f dshow -list_options true -i audio=virtual-audio-capturer

指定参数录制音视频

ffmpeg -f dshow -video_size 1680x1050 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4

Linux

使用x11grab,相信Linux用户都是高手,自行查看安装方法吧,点我查看

安装完以后,能够录制了

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 v-out.mp4

上面的参数,指的是从屏幕的左上角(x=100, y=200)的位置,录制分辨率为1024×768的视频。

能够使用(ALSA)[https://ffmpeg.org/ffmpeg-devices.html]同时录制声音

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 av-out.mkv

也能够使用Pulse声音输入设备

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f pulse -ac 2 -i default av-out.mkv

OS X
使用 avfoundation ,而后查看可用设备

ffmpeg -f avfoundation -list_devices true -i ""

选用可用的相应的音视频设备,进行屏幕录制

ffmpeg -f avfoundation -i "<screen device index>:<audio device index>" av-out.mov

提示:
若是电脑配置比较低,可能不能很好的录制屏幕的同时进行音视频编码。这种状况下,能够先录制未压缩的音视频,最后再进行音视频编码压缩。

Linux:

ffmpeg -framerate 25 -video_size 1024x768 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i pulse -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.mkv ffmpeg -i output.mkv -acodec ... -vcodec ... final.mkv

Windows:

ffmpeg -f dshow -i video="screen-capture-recorder":audio="Microphone" -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.mkv
ffmpeg -i output.mkv -acodec ... -vcodec ... final.mkv

无损格式录制

若是想要完美的屏幕录制效果,能够使用x264进行无损编码

ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -qp 0 -preset ultrafast capture.mkv

“-qp 0″是x264无损编码模式,“-preset ultrafast”表示最快的速度编码。

参考:http://trac.ffmpeg.org/wiki/Capture/Desktop


文章作者: 弈心
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 弈心 !
评论
  目录