简介
这次遇到一个需要在前端播放视频的需求,视频一共五分钟,大小接近一个 G,由于视频过大,不能直接放在网页上显示,因此将这个视频转换为视频流,前端再用 video 组件播放视频。
MOV 视频转换 MP4
** 引入 maven 依赖**
<dependency> <groupId>ws.schild</groupId> <artifactId>jave-all-deps</artifactId> <version>3.0.1</version> </dependency>
转换代码
@Test public void testMovToMp4(){ File source = new File("D:\\source.mov"); File target = new File("D:\\target.mp4"); try { AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(new Integer(800000));//设置比特率 audio.setChannels(new Integer(1));//设置音频通道数 audio.setSamplingRate(new Integer(44100));//设置采样率 VideoAttributes video = new VideoAttributes(); video.setCodec("libx264"); video.setBitRate(new Integer(3200000)); // 比特率值 video.setFrameRate(new Integer(120));// 视频帧率 EncodingAttributes attrs = new EncodingAttributes(); attrs.setOutputFormat("mp4"); attrs.setAudioAttributes(audio); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); } catch (Exception e) { e.printStackTrace(); } }
这样就可以将 mov 转换成 mp4 文件
HLS 流媒体视频生成
下载 ffmpeg,地址为http://ffmpeg.org/download.html#build-windows
进入 bin 目录执行
ffmpeg -i D:\target.mp4 -profile:v baseline -r 120 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls D:\m3u8\target.m3u8
然后就会生成.m3u8 文件和一堆.ts 文件
HTML 播放视频
编写好代码,直接访问存在跨域问题,将这个页面放到 nginx 目录下即可
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <link href="https://cdn.bootcss.com/video.js/7.6.5/alt/video-js-cdn.min.css" rel="stylesheet"> <script src="https://cdn.bootcss.com/video.js/6.6.2/video.js"></script> <script src="https://cdn.bootcss.com/videojs-contrib-hls/5.15.0/videojs-contrib-hls.min.js"></script> </head> <body> <video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" width="980" height="500" controls preload="auto" data-setup='{}'> <source id="source" src="./video/云天化现代农业第四稿.m3u8" type="application/x-mpegURL"> </video> </body> <script> var myVideo = videojs('myVideo',{ bigPlayButton : true, textTrackDisplay : false, posterImage: false, errorDisplay : false, }); myVideo.play(); myVideo.pause(); </script> </html>
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于