FFmpeg常用音频操作
一、介绍
ffmpeg是一个非常快速的视频和音频转换器,也可以从实时音频、视频源中获取。它还可以在任意采样率之间转换,并使用高质量的多相波滤器及时调整视频大小。
二、下载
https://ffmpeg.org/download.html
根据官网下载指定系统的安装文件后,配置相应的环境变量后即可执行
# 输入 ffmpeg -version 查看是否安装配置成功 ffmpeg version n4.3.1-20-g8a2acdc6da Copyright (c) 2000-2020 the FFmpeg developers
|
# 可以查看相应的参数,除了通用参数外,还提供了视频、音频、字幕各个特定的参数 ffmpeg -h
|
三、常用操作
3.1 获取音频基本信息
获取音频的基本信息,如时长、比特率、格式等。
# ffmpeg -i 音频文件 ffmpeg -i demo.mp3 ffmpeg version n4.3.1-20-g8a2acdc6da Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.3-win32 (GCC) 20200320 # .... 忽略中间信息 Input #0, mp3, from 'demo.mp3': Metadata: encoder : Lavf58.45.100 Duration: 00:03:10.04, start: 0.069063, bitrate: 24 kb/s Stream #0:0: Audio: mp3, 16000 Hz, mono, fltp, 24 kb/s
|
FFmpeg安装好后,会带有两外一个工具 ffprobe ,也可以用来获取更加全面的音频信息。
λ ffprobe -print_format json -loglevel error -show_streams Users\quanzhu\Desktop\audio\first.mp3 { "streams": [ { "index": 0, "codec_name": "mp3", "codec_long_name": "MP3 (MPEG audio layer 3)", "codec_type": "audio", "codec_time_base": "1/16000", "codec_tag_string": "[0][0][0][0]", "codec_tag": "0x0000", "sample_fmt": "fltp", "sample_rate": "16000", "channels": 1, "channel_layout": "mono", "bits_per_sample": 0, "r_frame_rate": "0/0", "avg_frame_rate": "0/0", "time_base": "1/14112000", "start_pts": 974610, "start_time": "0.069062", "duration_ts": 2681900928, "duration": "190.044000", "bit_rate": "24000", "disposition": { "default": 0, "dub": 0, "original": 0, "comment": 0, "lyrics": 0, "karaoke": 0, "forced": 0, "hearing_impaired": 0, "visual_impaired": 0, "clean_effects": 0, "attached_pic": 0, "timed_thumbnails": 0 } } ] }
|
3.2 获取音频波形图
ffmpeg -i c:\Users\quanzhu\Desktop\audio\demo.m4a -f lavfi -i color=c=black:s=640x320 -filter_complex "compand,aformat= channel_layouts=mono,showwavespic=s =640x120:colors=#ffffff" -frames:a 1 c:\Users\quanzhu\Desktop\audio\output.jpg
|
3.3 音频切割
指定开始、结束时间
ffmpeg -i c:\Users\quanzhu\Desktop\demo.m4a -ss 00:00:00 -t 00:01:00 c:\Users\quanzhu\Desktop\demo1.m4a
|
3.4 wav 转 mp3
ffmepg -i xxx.wav -f mp3 yyyy.mp3
|
3.5 音频合并
ffmpeg -i "concat:aaa.mp3|bbb.mp3" -acodec copy ccc.mp3
|
3.6 音频混音
混音可以设置,音频时长是按照哪个一个时长为准。
ffmpeg -i aaa.wav -i bbb.wav -filter_complex amix=inputs=2:duration=longest:dropout_transition=2 -f mp3 ccc.wav
|
四、Java操作FFmpeg
public class Test {
public static void main(String[] args) throws IOException { LinkedList<String> paramList = new LinkedList<>(); paramList.add("D:/software/install/ffmpeg-share/bin/ffmpeg.exe"); paramList.add("-version"); ProcessBuilder builder = new ProcessBuilder(paramList); Process process = builder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8));
String content; while (StringUtils.hasText(content = reader.readLine())) { System.out.println(content); } } }
|