• FFMPEG常用的一些命令介绍:音频录制、视频录制


    1.视频和音频单独抓取
    如果指定输入格式和设备,则ffmpeg可以直接捕获视频和音频。

    Linux下捕获摄像头的数据保存成视频文件:

    # ffmpeg -f video4linux2 -s 1280x720 -i /dev/video0 test.mp4

    参数介绍:

    -s 指定摄像头输出的图像尺寸

    -i 摄像头的设备节点

    test.mp4 是保存的视频文件名称

    -f video4linux2是指定框架

    2. Linux下捕获声卡的数据保存成音频文件:

    1. (1)# ffmpeg -f alsa -ac 2 -ar 44100 -i default out.wav
    2. 参数介绍:
    3. -i 指定声卡设备名称。这里default表示选择默认声卡。
    4. out.wav 捕获的音频数据保存的文件名称
    5. -f 是指定音频驱动类型。alsa是linux下音频驱动框架。oss是另外一种音频框架。
    6. -ar <freq> 设置音频采样率,以HZ为单位
    7. -ac <channels> 设置音频通道数(单声道、双声道)
    8. (2)# ffmpeg -f alsa -ac 1 -ar 44100 -i default -t 30 out.wav
    9. 参数介绍:
    10. -t 30 表示录制30秒就自动停止
    11. (3)# ffmpeg -f alsa -ac 1 -ar 16000 -i hw:0 -t 10 out.wav
    12. 参数介绍:
    13. 这里的hw:0 也表示选择默认的声卡设备录音。

    列出当前主机上的声卡设备:

    1. [root@wbyq linux-share-dir]# arecord -l (列出声卡设备数量)
    2. **** List of CAPTURE Hardware Devices ****
    3. card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
    4. Subdevices: 1/1
    5. Subdevice #0: subdevice #0
    6. card 1: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio]
    7. Subdevices: 0/1
    8. Subdevice #0: subdevice #0
    9. [root@wbyq linux-share-dir]# arecord -L (列出声卡设备详细信息)
    10. default
    11. Default
    12. front:CARD=AudioPCI,DEV=0
    13. Ensoniq AudioPCI, ES1371 DAC2/ADC
    14. Front speakers
    15. surround40:CARD=AudioPCI,DEV=0
    16. Ensoniq AudioPCI, ES1371 DAC2/ADC
    17. 4.0 Surround output to Front and Rear speakers
    18. iec958:CARD=AudioPCI,DEV=0
    19. Ensoniq AudioPCI, ES1371 DAC2/ADC
    20. IEC958 (S/PDIF) Digital Audio Output
    21. front:CARD=U0x46d0x825,DEV=0
    22. USB Device 0x46d:0x825, USB Audio
    23. Front speakers
    24. surround40:CARD=U0x46d0x825,DEV=0
    25. USB Device 0x46d:0x825, USB Audio
    26. 4.0 Surround output to Front and Rear speakers
    27. surround41:CARD=U0x46d0x825,DEV=0
    28. USB Device 0x46d:0x825, USB Audio
    29. 4.1 Surround output to Front, Rear and Subwoofer speakers
    30. surround50:CARD=U0x46d0x825,DEV=0
    31. USB Device 0x46d:0x825, USB Audio
    32. 5.0 Surround output to Front, Center and Rear speakers
    33. surround51:CARD=U0x46d0x825,DEV=0
    34. USB Device 0x46d:0x825, USB Audio
    35. 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
    36. surround71:CARD=U0x46d0x825,DEV=0
    37. USB Device 0x46d:0x825, USB Audio
    38. 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
    39. iec958:CARD=U0x46d0x825,DEV=0
    40. USB Device 0x46d:0x825, USB Audio
    41. IEC958 (S/PDIF) Digital Audio Output

    使用arecord -L命令列出了声卡名字之后,就可以选择指定声卡录制声音,其中front:xxx 就是声卡的名字。

    选择指定的声卡录制声音示例:

    1. (1). 选择USB摄像头的音频设备录音
    2. # ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=U0x46d0x825,DEV=0 -t 10 out.wav
    3. (2). 选择电脑自带的声卡录音
    4. # ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=AudioPCI,DEV=0 -t 10 out.wav

    FFMPEG录制音频的其他参数:

    1. # ffmpeg --help
    2. 音频选项:
    3. -aframes number 设置要输出的音频帧数
    4. -aq quality 设置音频质量(特定于编解码器)
    5. -ar rate 设置音频采样率(以Hz为单位)
    6. -ac channel 设置音频通道数
    7. -an 禁用音频
    8. -acodec codec 强制音频编解码器复制到流
    9. -vol volume 更改音频音量(256=正常)
    10. -af filter_graph 设置音频过滤器

     录制带声音的视频
    命令示例:

    1. #ffmpeg -f alsa -ac 1 -ar 44100 -i front:CARD=U0x46d0x825,DEV=0 -f video4linux2 -i /dev/video0 out.mpg
    2. #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):

    1. Output #0, mp4, to 'out.mp4':
    2. Metadata:
    3. encoder : Lavf57.25.100
    4. Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc
    5. Metadata:
    6. encoder : Lavc57.24.102 libx264
    7. Side data:
    8. unknown side data type 10 (24 bytes)
    9. Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 16000 Hz, mono, fltp, 69 kb/s
    10. Metadata:
    11. encoder : Lavc57.24.102 aac
    12. Stream mapping:
    13. Stream #1:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
    14. Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))

    采用MPG格式录制视频的详细信息(视频mpeg1video、音频mp2):

    1. Output #0, mpeg, to 'out.mpg':
    2. Metadata:
    3. encoder : Lavf57.25.100
    4. Stream #0:0: Video: mpeg1video, yuv420p, 640x480, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc
    5. Metadata:
    6. encoder : Lavc57.24.102 mpeg1video
    7. Side data:
    8. unknown side data type 10 (24 bytes)
    9. Stream #0:1: Audio: mp2, 48000 Hz, mono, s16, 384 kb/s
    10. Metadata:
    11. encoder : Lavc57.24.102 mp2
    12. Stream mapping:
    13. Stream #1:0 -> #0:0 (rawvideo (native) -> mpeg1video (native))
    14. Stream #0:0 -> #0:1 (pcm_s16le (native) -> mp2 (native)

  • 相关阅读:
    互联网摸鱼日报(2023-09-08)
    百胜中国,全面进击
    Java面向对象(高级)-- static关键字的使用
    解决下载中文文件名乱码问题
    若依+lodop+jasperreports+ireport 设计打印票据格式(二)
    python folium 添加地图采样点及距离测量等属性
    pybind11使用总结(依赖python3.7版本)
    iNFTnews|为什么说NFT门票是音乐行业的未来?
    【计算机网络】网络层(四)—— 网络层协议总结(ARP、ICMP、IGMP)
    【深入理解Kotlin协程】协程的分类、与线程的区别
  • 原文地址:https://blog.csdn.net/chanlp129/article/details/125512190