亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

使用開源項(xiàng)目JAVAE2 進(jìn)行視頻格式轉(zhuǎn)換

瀏覽:99日期:2022-08-21 14:41:58

使用開源項(xiàng)目JAVAE 進(jìn)行視頻格式轉(zhuǎn)換

JAVAE簡介:

JAVE (Java音頻視頻編碼器)庫是ffmpeg項(xiàng)目的Java包裝器。開發(fā)人員可以利用JAVE2將音頻和視頻文件從一種格式轉(zhuǎn)換為另一種格式。在示例可以轉(zhuǎn)換成一個(gè)AVI文件MG,您可以更改一個(gè)DivX視頻(youtube) Flash FLV,您可以轉(zhuǎn)換WAV音頻文件到MP3和Ogg Vorbis,您可以分離和轉(zhuǎn)換音頻和視頻跟蹤代碼,您可以調(diào)整視頻,改變他們的大小和比例等。JAVE2還支持許多其他格式、容器和操作。

官網(wǎng)地址:https://www.mvnjar.com/ws.schild/jave-all-deps/2.4.2/detail.html

github地址:https://github.com/a-schild/jave2/tree/master/jave-example

maven地址:https://mvnrepository.com/artifact/ws.schild/jave-all-deps

快速上手

導(dǎo)包

<dependency> <groupId>ws.schild</groupId> <artifactId>jave-all-deps</artifactId> <version>2.4.2</version></dependency>

工具類

package com.example.javae2.util;import cn.hutool.core.util.ObjectUtil;import ws.schild.jave.*;import java.io.File;import java.nio.file.Paths;import java.util.HashMap;import java.util.Map;public class VideoUtils { private static Map<String, Integer> sizeBitRateMap; static { sizeBitRateMap = new HashMap<>(); sizeBitRateMap.put('1920*1080', 4992); sizeBitRateMap.put('1280*720', 2496); sizeBitRateMap.put('1024*576', 1856); sizeBitRateMap.put('840*480', 1216); sizeBitRateMap.put('768*432', 1088); sizeBitRateMap.put('640*360', 896); sizeBitRateMap.put('424*240', 576); } public static void main(String[] args) { VideoUtils videoUtils = new VideoUtils(); videoUtils.convertVideoToMP4(new File('C:tempjavae20001.嗶哩嗶哩-頸椎操[流暢版].flv'),'C:tempjavae20001.嗶哩嗶哩-頸椎操[流暢版].mp4'); //videoUtils.getVideoInfoAndGenerateThumbnail(new File('C:tempjavae20001.嗶哩嗶哩-頸椎操[流暢版].mp4'), 'C:tempjavae20001.嗶哩嗶哩-頸椎操[流暢版]..jpg'); } /** * 截取視頻的一針作為封面圖 * * @param file 視頻文件 * @param thumbnailPath 截取圖片保存路徑 * @return */ public void getVideoInfoAndGenerateThumbnail(File file, String thumbnailPath) { MultimediaObject multimediaObject = new MultimediaObject(file); try { MultimediaInfo info = multimediaObject.getInfo(); VideoInfo videoInfo = info.getVideo(); logger.info('獲取視頻時(shí)長:{}', info.getDuration() / 1000); if (ObjectUtil.isNotNull(videoInfo)) { VideoSize size = videoInfo.getSize(); int width = size.getWidth(); int height = size.getHeight(); logger.info('視頻寬:{} 視頻高{}', width, height); logger.info('比特率:{}', videoInfo.getBitRate() / 1000); ScreenExtractor screenExtractor = new ScreenExtractor(); File target = new File(thumbnailPath); //截取視頻作為圖片保存 /* *第一個(gè)參數(shù) 視頻源文件信息類 * 第二個(gè)參數(shù) 截取的寬度 * 第三個(gè)參數(shù) 截取的高度 * 第四個(gè)參數(shù) 截取的是那一幀 * 第五個(gè)參數(shù)是 截取的圖片質(zhì)量 1-31 數(shù)字越小質(zhì)量越高 * **/ screenExtractor.renderOneImage(multimediaObject, size.getWidth(), size.getHeight(), 3000, target, 31); } } catch (EncoderException e) { e.printStackTrace(); } } /** * @param source 源文件 * @param targetPath 轉(zhuǎn)碼后的路徑 */ public void convertVideoToMP4(File source, String targetPath) { MultimediaObject multimediaObject = new MultimediaObject(source); try { MultimediaInfo info = multimediaObject.getInfo(); VideoInfo videoInfo = info.getVideo(); VideoSize size = videoInfo.getSize(); System.out.println('原視頻寬:' + size.getWidth()); System.out.println('原視頻高:' + size.getHeight()); System.out.println('原視頻比特率:' + videoInfo.getBitRate() / 1000); System.out.println('原視頻編碼:' + videoInfo.getDecoder()); Integer bitRate = sizeBitRateMap.get(size.getWidth() + '*' + size.getHeight()); VideoAttributes video = new VideoAttributes(); //設(shè)置視頻編碼 video.setCodec('h264'); if (ObjectUtil.isNotNull(bitRate)) { //設(shè)置比特率 video.setBitRate(bitRate * 1000); } File target = new File(targetPath); AudioAttributes audio = new AudioAttributes(); //設(shè)置編碼器名稱 audio.setCodec('aac'); EncodingAttributes attrs = new EncodingAttributes(); //設(shè)置轉(zhuǎn)換后的格式 attrs.setFormat('mp4'); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); encoder.encode(multimediaObject, target, attrs); //花費(fèi)毫秒數(shù) MultimediaObject multimediaObjectOfter = new MultimediaObject(Paths.get(targetPath).toFile()); MultimediaInfo info1 = multimediaObjectOfter.getInfo(); VideoInfo video1 = info1.getVideo(); VideoSize size1 = video1.getSize(); System.out.println('轉(zhuǎn)換后視頻寬:' + size1.getWidth()); System.out.println('轉(zhuǎn)換后視頻高:' + size1.getHeight()); System.out.println('轉(zhuǎn)換后視頻比特率:' + video1.getBitRate() / 1000); System.out.println('轉(zhuǎn)換后視頻編碼:' + video1.getDecoder()); } catch (EncoderException e) { e.printStackTrace(); } }}

效果 (flv 轉(zhuǎn)MP4)

使用開源項(xiàng)目JAVAE2 進(jìn)行視頻格式轉(zhuǎn)換

以上就是使用開源項(xiàng)目JAVAE 進(jìn)行視頻格式轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Java 視頻格式轉(zhuǎn)換的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 色综合天天综合 | 91正在播放极品白嫩在线观看 | 中日黄色大片 | 久久久久琪琪精品色 | 午夜国产精品久久影院 | 亚洲欧美一区二区三区国产精品 | 成年男女免费视频网站 | 六月婷婷七月丁香 | 欧美在线视频二区 | 免费一级a毛片在线播出 | 超级碰碰青草久热国产 | 日本特黄特色免费大片 | 成年大片免费视频播放手机不卡 | 青青操在线免费观看 | 亚洲第一网址 | 国产视频第二页 | 自偷自拍亚洲欧美清纯唯美 | 两性色午夜视频自由成熟的性 | 在线视频观看免费视频18 | 皮皮在线精品亚洲 | 九九视频国产 | 理论亚洲区美一区二区三区 | 欧美整片第一页 | 国产午夜精品尤物福利视频 | 欧美亚洲国产激情一区二区 | 日韩国产有码在线观看视频 | 诱人的女邻居bd中文字幕 | 国产精品国产三级国产在线观看 | 91短视频黄色 | 亚洲欧美另类精品久久久 | 免费视频久久久 | 一级一级毛片看看 | 亚洲国产99999在线精品一区 | 国产午夜精品一区二区三区嫩草 | 亚洲国产天堂久久综合网站 | 国产精品免费视频播放 | 6080亚洲精品一区 | 国产精品午夜在线播放a | 91视频国产91久久久 | 亚洲精品高清在线一区二区三区 | 1769视频在线观看国产 |