简介:
FFmpeg 是一个开源的跨平台音视频处理工具,它可以用来录制、转换以及流媒体传输音视频内容,它是一个功能强大、灵活且开源的音视频处理工具,适用于各种音视频处理需求,下面是关于 FFmpeg 的一些简要介绍:
-
功能广泛:FFmpeg 提供了丰富的音视频处理功能,包括但不限于格式转换、编解码、裁剪、合并、滤镜处理等。
-
跨平台性:FFmpeg 可以在多个操作系统上运行,包括 Windows、macOS、Linux 等,因此被广泛应用于各种平台的音视频处理需求中。
-
命令行工具:FFmpeg 主要以命令行工具的形式提供,用户可以通过输入命令来调用其功能进行音视频处理。
-
开源免费:FFmpeg 是基于 LGPL 或 GPL 许可证发布的自由软件,可以免费使用和分发。
-
强大的社区支持:FFmpeg 有一个活跃的开发社区,持续不断地更新和改进,同时也有大量的文档和示例可供参考。
-
应用广泛:由于其功能强大和灵活性,FFmpeg 在许多领域得到了广泛应用,包括视频编辑、流媒体服务、嵌入式设备等。
需求背景:
语音识别:将视频转为音频,在将音频做ASR语音识别,提取识别后的文字。
命令行代码:
-i <input_file>
:指定输入文件。-f <format>
:指定输出文件的格式。-b:v <bitrate>
:设置视频比特率。-b:a <bitrate>
:设置音频比特率。-r <framerate>
:设置帧率。-s <size>
:设置输出视频尺寸。-ar <sample_rate>
:设置音频采样率。-ac <channels>
:设置音频声道数。-ss <time>
:从指定时间开始处理。-t <duration>
:设置处理时长。-vf <filter>
:应用视频过滤器。-af <filter>
:应用音频过滤器。-codec:v <codec>
:设置视频编解码器。-codec:a <codec>
:设置音频编解码器。-preset <preset>
:设置编码速度/质量的预设。-crf <value>
:设置视频的恒定质量级别。-map <stream_spec>
:选择输入流进行处理。
ffmpeg -i "视频输入路径" -ar 16000 -ac 1 -f wav "音频输出路径"
java代码:
/**
* 视频转为音频
* @param inputUrl
* @param outputUrl
* @return
*/
private String videoChangeAudio(String inputUrl, String outputUrl) {
// 构建ffmpeg命令,注意对路径进行转义
List<String> command = new ArrayList<>();
command.add(ffmpeg);
command.add("-i");
command.add(inputUrl); // 如果inputUrl包含空格或特殊字符,需要适当转义
command.add("-ar");
command.add("16000");
command.add("-ac");
command.add("1");
command.add("-f");
command.add("wav");
command.add(outputUrl); // 如果outputUrl包含空格或特殊字符,需要适当转义
String infoStr = FfmpegUtils.getInfoStr(command);
return infoStr;
}