public class MediaUtil extends Object
| 限定符和类型 | 方法和说明 |
|---|---|
void |
compressVideo(String i,
String s,
String bv,
String r,
String fs,
String targetPath)
压缩视频
ffmpeg.exe -i .\1.mp4 -s 1080x1920 -b:v 1M -r 20 -fs 10MB .
|
File |
concatAudio(List<File> files,
String target)
concat音频
|
void |
concatVideo(List<String> urls,
String targetPath)
拼接视频(会出现速度不一致问题)
|
File |
concatVideo2(List<String> files,
String target)
concat音频 (必须视频通道一致,否则会报错)
|
void |
cutAudio(String source,
long ss,
long to,
String targetPath)
剪切音频
|
void |
exec(List<String> commands)
执行FFMPEG命令
|
void |
exec(String... command)
执行FFMPEG命令
|
void |
extractCover(File source,
File target) |
void |
extractCover(String source,
File target,
String offset) |
void |
extractFrame(String i,
String ss,
String targetPath)
提取帧
ffmpeg.exe -i .\991hsxtp3ctse4yg.mp4 -ss 1 -f image2 .
|
String[] |
extractFrameBySpeedRatio(String url,
int[] speedRatio,
String targetDir)
提取帧
|
static String |
formatDuration(long mss)
格式化毫秒数
System.out.println(formatDuration(30000));//00:00:30.000
System.out.println(formatDuration(33000));//00:00:33.000
System.out.println(formatDuration(33300));//00:00:33.300
System.out.println(formatDuration(33330));//00:00:33.330
System.out.println(formatDuration(33333));//00:00:33.333
|
Long |
getFrameCount(String source)
获取视频帧数
|
long |
getMediaDuration(String i)
获取媒体时长信息
|
ws.schild.jave.info.MultimediaInfo |
getMediaInfo(String i)
得到媒体信息
|
ws.schild.jave.MultimediaObject |
getMediaObject(String i)
得到媒体信息
|
static ws.schild.jave.info.VideoSize |
getRealVideoSize(ws.schild.jave.info.MultimediaInfo multimediaInfo)
获得真正的视频大小
|
static MediaUtil |
instance()
实例
|
static MediaUtil |
instance(ExecProcess execProcess)
实例(进度)
|
void |
mergeAudioAndVideo(String audioSource,
String videoSource,
String targetPath)
合并音频和视频
|
static long |
parseDuration(String str)
将媒体时间格式转换成毫秒数
MediaUtil.parseDuration("01:21:51.100"); //4911100
|
void |
separateAudioChannel(String url,
Map<String,String> channelOut)
分离音频通道
参考命令:ffmpeg -i 1.wav -map_channel 0.0.0 output/1/1.wav -map_channel 0.0.1 output/2/1.wav
Map<String, String> param = new HashMap<>();
param.put("0.0.0", "D:\\temp\\channel\\1.wav");
param.put("0.0.1", "D:\\temp\\channel\\2.wav");
MediaUtil.separateAudioChannel("http://qiniu.acyou.cn/media/354-2-20220407180008326.aac", param);
|
public static MediaUtil instance(ExecProcess execProcess)
execProcess - 执行过程MediaUtilpublic void exec(String... command)
command - 命令public void cutAudio(String source, long ss, long to, String targetPath)
source - 源 (可以是URL、可以是File的AbsolutePath)ss - 开始 (开始毫秒数)to - 结束 (结束毫秒数)targetPath - 目标路径 (File的AbsolutePath)public void mergeAudioAndVideo(String audioSource, String videoSource, String targetPath)
audioSource - 音频源videoSource - 视频源targetPath - 目标路径(File的AbsolutePath)public static String formatDuration(long mss)
System.out.println(formatDuration(30000));//00:00:30.000 System.out.println(formatDuration(33000));//00:00:33.000 System.out.println(formatDuration(33300));//00:00:33.300 System.out.println(formatDuration(33330));//00:00:33.330 System.out.println(formatDuration(33333));//00:00:33.333
mss - 毫秒Stringpublic static long parseDuration(String str)
MediaUtil.parseDuration("01:21:51.100"); //4911100
str - strpublic void extractFrame(String i, String ss, String targetPath)
ffmpeg.exe -i .\991hsxtp3ctse4yg.mp4 -ss 1 -f image2 .\out1.jpg
i - 输入ss - 第ss帧targetPath - 输出目录public String[] extractFrameBySpeedRatio(String url, int[] speedRatio, String targetDir) throws Exception
url - urlspeedRatio - 进度比例targetDir - 目标目录 无"/"结尾 。可以直接使用 getAbsolutePath()Exception - 异常public void separateAudioChannel(String url, Map<String,String> channelOut)
参考命令:ffmpeg -i 1.wav -map_channel 0.0.0 output/1/1.wav -map_channel 0.0.1 output/2/1.wav
Map<String, String> param = new HashMap<>();
param.put("0.0.0", "D:\\temp\\channel\\1.wav");
param.put("0.0.1", "D:\\temp\\channel\\2.wav");
MediaUtil.separateAudioChannel("http://qiniu.acyou.cn/media/354-2-20220407180008326.aac", param);
url - urlchannelOut - 频道
0.0.0 -> D:\temp\channel\1.wav
0.0.1 -> D:\temp\channel\2.wavpublic File concatAudio(List<File> files, String target)
files - 文件target - 目标Filepublic File concatVideo2(List<String> files, String target)
files - 文件target - 目标Filepublic void concatVideo(List<String> urls, String targetPath) throws Exception
urls - urltargetPath - 目标路径Exceptionpublic void compressVideo(String i, String s, String bv, String r, String fs, String targetPath)
i - 输入s - 设置视频的分辨率 -s 1920x1080表示分辨率为1920x1080bv - 设置视频的码率 -b:v :指定视频的码率、-b:a : 指定音频的码率 1M:码率的值 1M 表示 1Mb/sr - 设置视频的帧率 -r 20:表示帧率设置为 20fpsfs - 将视频压缩指定大小 -fs 10 : 表示文件大小最大值为10MBpublic long getMediaDuration(String i)
i - 文件绝对路径 或者 URLMultimediaInfopublic ws.schild.jave.info.MultimediaInfo getMediaInfo(String i)
i - 文件绝对路径 或者 URLMultimediaInfopublic ws.schild.jave.MultimediaObject getMediaObject(String i)
i - 文件绝对路径 或者 URLMultimediaInfopublic static ws.schild.jave.info.VideoSize getRealVideoSize(ws.schild.jave.info.MultimediaInfo multimediaInfo)
multimediaInfo - 多媒体信息VideoSizeCopyright © 2022. All Rights Reserved.