作者:手机用户2502898335 | 来源:互联网 | 2023-08-15 19:03
使用jave将h264格式视频转MP4
起因:最近做一个高空抛物的项目,其中需要将摄像机抓拍的h264格式视频文件转mp4,进行浏览器在线播放,经过多番资料查找,找到视频编解码工具ffmpeg,利用该工具,直接拼接命令也是可以的,但服务器端还需安装ffmpeg工具,另一种方法就是我要展示的,利用jave(暂且理解为java封装的ffmpeg工具)进行转换。
代码如下:
引入pom依赖:
<dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>2.4.6</version></dependency><!--linux下引入这个--><dependency><groupId>ws.schild</groupId><artifactId>jave-native-linux64</artifactId><version>2.4.6</version></dependency><!--windows下引入这个--><!--<dependency><groupId>ws.schild</groupId><artifactId>jave-native-win64</artifactId><version>2.4.6</version></dependency>-->
public static void h264ToMp4(String filePath) {if (StringUtils.isEmpty(filePath) || !filePath.endsWith("h264")) {return;}try {File file &#61; new File(filePath);String mp4FilePath &#61; filePath.replace("h264", "mp4");File mpFile &#61; new File(mp4FilePath);if (!mpFile.exists()) {mpFile.createNewFile();}MultimediaObject sourceFile &#61; new MultimediaObject(file);VideoAttributes video &#61; new VideoAttributes();AudioAttributes audio &#61; new AudioAttributes();audio.setCodec("libmp3lame");audio.setBitRate(new Integer(64000));audio.setChannels(new Integer(1));audio.setSamplingRate(new Integer(22050));video.setCodec("libx264");video.setBitRate(new Integer(800000));video.setFrameRate(new Integer(20));video.setSize(new VideoSize(1920, 1080));EncodingAttributes attr &#61; new EncodingAttributes();attr.setFormat("mp4");attr.setAudioAttributes(audio);attr.setVideoAttributes(video);Encoder encoder &#61; new Encoder();encoder.encode(sourceFile, mpFile, attr);} catch (Exception e) {log.error("h264视频转mp4异常:", e);}}