FFMPEG常用的一些命令介绍:音频录制、视频录制、视频推流等 |
您所在的位置:网站首页 › ffmpeg录制音频 › FFMPEG常用的一些命令介绍:音频录制、视频录制、视频推流等 |
3.1 ffmpeg命令介绍 Ffmpeg源码编译完成之后,会生成一个ffmpeg可执行文件。 ffmpeg是一个非常快速的视频和音频转换器,也可以从实时音频/视频源中获取。它还可以在任意采样率之间转换,并使用高质量的多相滤波器即时调整视频大小。 在实际开发中,ffmpeg除了使用它的API接口进行编程,有些简单功能可以直接使用ffmpeg命令实现,可以节省很多写代码的时间。
3.2 使用ffmpeg命令推流视频文件到B站 先到B站注册账号,开通直播间,在右上角头像--个人中心进入直播间。 网站: https://www.bilibili.com/ 命令行执行命令: [root@wbyq ffmpeg-3.0.2]# ./ffmpeg -re -i "/mnt/hgfs/linux-share-dir/123.mp4" -c copy -vcodec libx264 -acodec aac-f flv ""
参数解析: -vcodec libx264 指定视频编码格式 -acodec aac 指定音频编码格式 推流给B站的视频,一定要指定视频编码为x264,音频aac否则可能导致传递过去的视频无法播放,或者无法推流。 这里的rtmp地址和直播码,需要替换成自己B站的地址。 -i 参数是指定视频源文件。 推流成功之后,在自己的直播间可以看到推流的视频。 自己的直播间地址,在B站个人中心—我的直播间选项里可以看到。 3.3 视频和音频单独抓取如果指定输入格式和设备,则ffmpeg可以直接捕获视频和音频。 Linux下捕获摄像头的数据保存成视频文件: # ffmpeg -f video4linux2 -s 1280x720 -i /dev/video0 test.mp4参数介绍:
-s 指定摄像头输出的图像尺寸 -i 摄像头的设备节点 test.mp4 是保存的视频文件名称 -f video4linux2是指定框架 Linux下捕获声卡的数据保存成音频文件: (1)# ffmpeg -f alsa -ac 2 -ar 44100 -i default out.wav参数介绍:-i 指定声卡设备名称。这里default表示选择默认声卡。out.wav 捕获的音频数据保存的文件名称-f 是指定音频驱动类型。alsa是linux下音频驱动框架。oss是另外一种音频框架。-ar 设置音频采样率,以HZ为单位-ac 设置音频通道数(单声道、双声道)(2)# ffmpeg -f alsa -ac 1 -ar 44100 -i default -t 30 out.wav参数介绍:-t 30 表示录制30秒就自动停止(3)# ffmpeg -f alsa -ac 1 -ar 16000 -i hw:0 -t 10 out.wav参数介绍: 这里的hw:0 也表示选择默认的声卡设备录音。 列出当前主机上的声卡设备: [root@wbyq linux-share-dir]# arecord -l (列出声卡设备数量)**** List of CAPTURE Hardware Devices ****card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC] Subdevices: 1/1 Subdevice #0: subdevice #0card 1: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0[root@wbyq linux-share-dir]# arecord -L (列出声卡设备详细信息)default Defaultfront:CARD=AudioPCI,DEV=0 Ensoniq AudioPCI, ES1371 DAC2/ADC Front speakerssurround40:CARD=AudioPCI,DEV=0 Ensoniq AudioPCI, ES1371 DAC2/ADC 4.0 Surround output to Front and Rear speakersiec958:CARD=AudioPCI,DEV=0 Ensoniq AudioPCI, ES1371 DAC2/ADC IEC958 (S/PDIF) Digital Audio Outputfront:CARD=U0x46d0x825,DEV=0 USB Device 0x46d:0x825, USB Audio Front speakerssurround40:CARD=U0x46d0x825,DEV=0 USB Device 0x46d:0x825, USB Audio 4.0 Surround output to Front and Rear speakerssurround41:CARD=U0x46d0x825,DEV=0 USB Device 0x46d:0x825, USB Audio 4.1 Surround output to Front, Rear and Subwoofer speakerssurround50:CARD=U0x46d0x825,DEV=0 USB Device 0x46d:0x825, USB Audio 5.0 Surround output to Front, Center and Rear speakerssurround51:CARD=U0x46d0x825,DEV=0 USB Device 0x46d:0x825, USB Audio 5.1 Surround output to Front, Center, Rear and Subwoofer speakerssurround71:CARD=U0x46d0x825,DEV=0 USB Device 0x46d:0x825, USB Audio 7.1 Surround output to Front, Center, Side, Rear and Woofer speakersiec958:CARD=U0x46d0x825,DEV=0 USB Device 0x46d:0x825, USB Audio IEC958 (S/PDIF) Digital Audio Output 使用arecord -L命令列出了声卡名字之后,就可以选择指定声卡录制声音,其中front:xxx 就是声卡的名字。 选择指定的声卡录制声音示例: (1). 选择USB摄像头的音频设备录音# ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=U0x46d0x825,DEV=0 -t 10 out.wav(2). 选择电脑自带的声卡录音# ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=AudioPCI,DEV=0 -t 10 out.wav FFMPEG录制音频的其他参数: # ffmpeg --help音频选项:-aframes number 设置要输出的音频帧数-aq quality 设置音频质量(特定于编解码器)-ar rate 设置音频采样率(以Hz为单位)-ac channel 设置音频通道数-an 禁用音频-acodec codec 强制音频编解码器复制到流-vol volume 更改音频音量(256=正常)-af filter_graph 设置音频过滤器 3.4 录制带声音的视频 命令示例: #ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=U0x46d0x825,DEV=0 -f video4linux2 -i /dev/video0 out.mpg#ffmpeg -f alsa -ac 1 -ar 16000 -i front:CARD=U0x46d0x825,DEV=0 -f video4linux2 -i /dev/video0 out.mp4 录制MP4格式的视频时,音频采样率设置16000效果比较好一些。 采用MP4格式录制视频的详细信息(视频H264、音频AAC): Output #0, mp4, to 'out.mp4': Metadata: encoder : Lavf57.25.100 Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc Metadata: encoder : Lavc57.24.102 libx264 Side data: unknown side data type 10 (24 bytes) Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 16000 Hz, mono, fltp, 69 kb/s Metadata: encoder : Lavc57.24.102 aacStream mapping: Stream #1:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native)) 采用MPG格式录制视频的详细信息(视频mpeg1video、音频mp2): Output #0, mpeg, to 'out.mpg': Metadata: encoder : Lavf57.25.100 Stream #0:0: Video: mpeg1video, yuv420p, 640x480, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc Metadata: encoder : Lavc57.24.102 mpeg1video Side data: unknown side data type 10 (24 bytes) Stream #0:1: Audio: mp2, 48000 Hz, mono, s16, 384 kb/s Metadata: encoder : Lavc57.24.102 mp2Stream mapping: Stream #1:0 -> #0:0 (rawvideo (native) -> mpeg1video (native)) Stream #0:0 -> #0:1 (pcm_s16le (native) -> mp2 (native) 3.5 推流本地摄像头视频音频到流媒体服务器(4.2.2) 推流本地实时音频视频到流媒体服务器 示例: [wbyq@wbyq linux_c]$ ffmpeg -f video4linux2 -r 12 -s 640x480 -i /dev/video0 -f alsa -i default -ar 44100 -ac 1 -f mp3 -qscale 10 -f flv "rtmp://47.92.114.13:8086/live/123"
参数解析: -f video4linux2 指定linux下的视频驱动框架 -s 640x480 指定视频尺寸 -i /dev/video0摄像头节点 f alsa 声卡驱动框架 -i default 选择声卡,这里选择默认声卡 -ar 44100 声音采样频率 -ac 1 单声道 -f mp3 MP3音频 -qscale 10 设置画面质量,值越小画面质量越高 f flv 指定封装格式 "rtmp://47.92.114.13:8086/live/123" 流媒体服务器地址
Mplayer命令拉流显示流媒体视频示例: mplayer -framedrop rtmp://47.92.114.13:8086/live/1233.6 推流实时音频视频数据到B站 示例代码: [wbyq@wbyq linux-share-dir]$ ffmpeg -thread_queue_size 128 -f video4linux2 -r 12 -s 1280x720 -i /dev/video0 -f alsa -i default -ar 44100 -ac 1 -f mp3 -qscale 5 -vcodec libx264 -acodec aac -f flv "rtmp://js.live-send.acg.tv/live-js/?streamname=live_68130189_71037877&key=b95d4cfda0c196518f104839fe5e7573"
参数解析: vcodec libx264 指定视频编码为x264格式 -acodec aac 指定音频编码为aac 注意:推流到B站的实时视频,一定要指定视频编码为X264,音频为aac,否则推流过去可能会显示不出来。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |