1.2.2 视频处理技术方案
如何通过程序进行视频处理?
ffmpeg是一个可行的视频处理程序,可以通过Java调用ffmpeg.exe完成视频处理。
在java中可以使用Runtime类和Process Builder类两种方式来执行外部程序,工作中至少掌握一种。
本项目使用Process Builder的方式来调用ffmpeg完成视频处理。
关于Process Builder的测试如下:

    @Testpublic void testProcessBuilder() throws IOException {//创建ProcessBuilder对象ProcessBuilder processBuilder =new ProcessBuilder();//设置执行的第三方程序(命令)processBuilder.command("ping","127.0.0.1");//processBuilder.command("ipconfig");
//        processBuilder.command("java","-jar","f:/xc-service-manage-course.jar");//将标准输入流和错误输入流合并,通过标准输入流读取信息就可以拿到第三方程序输出的错误信息、正常信息processBuilder.redirectErrorStream(true);//启动一个进程Process process = processBuilder.start();//由于前边将错误和正常信息合并在输入流,只读取输入流InputStream inputStream = process.getInputStream();//将字节流转成字符流InputStreamReader reader = new InputStreamReader(inputStream,"gbk");//字符缓冲区char[] chars = new char[1024];int len = -1;while((len = reader.read(chars))!=-1){String string = new String(chars,0,len);System.out.println(string);}inputStream.close();reader.close();}


    @Testpublic void testFFmpeg() {ProcessBuilder processBuilder = new ProcessBuilder();//定义命令内容List<String> command = new ArrayList<>();command.add("E:\\java_soft\\ffmpeg-20180227-fa0c9d6-win64-static\\bin\\ffmpeg.exe");command.add("‐i");command.add("E:\\java_www\\ffmpeg_test\\lucene.avi");command.add("‐y");//覆盖输出文件command.add("‐c:v");command.add("libx264");//测试使用工具类将avi转成mp4command.add("‐s");command.add("1280x720");command.add("‐pix_fmt");command.add("yuv420p");command.add("‐b:a");command.add("63k");command.add("‐b:v");command.add("753k");command.add("‐r");command.add("18");command.add("E:\\java_www\\ffmpeg_test\\1.mp4");processBuilder.command(command);//将标准输入流和错误输入流合并,通过标准输入流读取信息processBuilder.redirectErrorStream(true);try {//启动进程Process start = processBuilder.start();//获取输入流InputStream inputStream = start.getInputStream();//转成字符输入流InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");int len = -1;char[] c = new char[1024];StringBuffer outputString = new StringBuffer();//读取进程输入流中的内容while ((len = inputStreamReader.read(c)) != -1) {String s = new String(c, 0, len);outputString.append(s);System.out.print(s);}inputStream.close();} catch (IOException e) {e.printStackTrace();}}


这种方式太麻烦,所以改为以下方式
上边的代码已经封装成工具类,参见:

上边的工具类中:
Mp4VideoUtil.java完成avi转mp4
HlsVideoUtil.java完成mp4转hls
分别测试每个工具类的使用方法。

@Testpublic void testProcessMp4() {//String ffmpeg_path, String video_path, String mp4_name, String mp4folder_path//ffmpeg的路径String ffmpeg_path = "E:\\java_soft\\ffmpeg-20180227-fa0c9d6-win64-static\\bin\\ffmpeg.exe";//video_path视频地址String video_path = "E:\\java_www\\ffmpeg_test\\lucene.avi";//mp4_name mp4文件名称String mp4_name = "1.mp4";//mp4folder_path mp4文件目录路径String mp4folder_path = "E:/java_www/ffmpeg_test/";Mp4VideoUtil mp4VideoUtil = new Mp4VideoUtil(ffmpeg_path, video_path, mp4_name, mp4folder_path);//开始编码,如果成功返回success,否则返回输出的日志String result = mp4VideoUtil.generateMp4();System.out.println(result);}



03-视频处理-视频处理技术方案相关推荐

  1. Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨

    背景 随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求.目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务 ...

  2. 中小学、幼儿园远程视频监控系统技术方案

    中小学.幼儿园远程视频监控系统技术方案 行业背景 近年来,随着我国教育事业的发展.高校扩招以及中小学合并等趋势,学校规模的扩张伴随着安全防范需求增大,科技的发展也推动着教学手段的更新,除了视频监控防范 ...

  3. 搭建视频网站的技术方案

    一.视频网站和普通网站的区别 搭建视频网站和搭建普通网站,在技术实现方案上有很大的差别,因此,当有人问我是否可以采用搭建普通网站的方法搭建视频网站时,我会明确的告诉他们不可以,否者就贻笑大方了. 视频 ...

  4. 【技术方案】野外场景中的摄像头没有固定IP,如何联网实现视频监控需求?

    TSINGSEE青犀视频平台的视频能力十分灵活,在实际项目中也经历过多种多样的监控场景与需求.较为常见的监控场景如工厂.校园.商场.楼宇.社区等等,摄像头在固定的场所,现场网络环境较好,摄像头有固定的 ...

  5. 在线公开课 | 5G时代的视频云服务关键技术与实践

    课程概要 5G时代来临在即,视频技术将会如何发展呢?基于视频云服务的技术开发又有怎样的变化呢?为此,京东云视频云产品研发部高级总监魏伟为大家做出了详细解读. 魏伟拥有10多年视频行业研发经验,先后从事 ...

  6. 微信视频号聊天室技术介绍

    之前介绍过微信红包系统的架构(参考:微信红包后台系统设计.微信红包设计方案). 微信作为国内在线用户最多的国民应用,其架构设计中的应对高流量.低延迟的一些技巧,在其他公司或团队解决高并发问题时一定有一 ...

  7. ​周锦民:腾讯在线教育视频互动直播间技术实践

    本文来自腾讯云技术沙龙,本次沙龙主题为在线教育个性化教学技术实践 演讲嘉宾:周锦民 | 2011年毕业进入腾讯, 现任在线教育部在线教育后台中心高级工程师,多年linux后台开发工作经验,目前主要负责 ...

  8. 高性能视频推理引擎优化技术

    正文字数:9404  阅读时长:15分钟 本文整理自腾讯高级技术专家鲍金龙在LiveVideoStack线上分享上的演讲.他通过自身的实践经验,详细讲解了高性能视频推理引擎优化技术.   文 / 鲍金 ...

  9. 腾讯音视频实验室:基于音视频细分场景的技术创新探索

    音视频通讯能力作为标配渗透到了各个行业,腾讯音视频实验室音频技术负责人郭亮在LiveVideoStackCon 2017上分享了腾讯音视频实验在流畅无卡顿.回声消除等音频前处理.网络部署与覆盖等各个技 ...

最新文章

  1. Java项目:在线婚纱摄影预定系统(java+javaweb+SSM+springboot+mysql)
  2. 用通配符解决mappingResources的繁琐配置
  3. anglarjs引入HTML头,请问怎么在html引入angularjs?
  4. Sublime Text编辑工具带有 PEP 8 格式检测插件
  5. char varchar java_在数据库中varchar与char的区别
  6. 深度linux 网络配置文件,solver及其配置 - Caffe 深度学习入门教程_Linux教程_Linux公社-Linux系统门户网站...
  7. dumpstack_Java Thread类的静态void dumpStack()方法(带示例)
  8. MyBatis框架 接口绑定、线程绑定
  9. mysql5.5.35编译安装_CentOS 6.5最小化编译安装mysql 5.5.35
  10. linux目录创立文件硬链接,在Linux中创建文件目录软链接、硬链接的方法
  11. 基于fpga的dds函数信号发生器的设计_低频信号发生器
  12. Atitit 人工智能体系树完整版 Atitit 人工智能体系培训列表 目录 1. 1.NLP自然语言处理文本处理 1 2. 知识图谱 知识处理系统 2 3. 2.机器视觉 图像处理 2 4.
  13. 加仓减仓口诀_加仓减仓口诀
  14. 让我带你一起了解一下 ls -l 命令输出的内容都有哪些意义,以及文件权限如何调整
  15. svg 动画_30个很棒的SVG动画
  16. 青花瓷的小鸟装饰蛋糕
  17. python图书管理实训报告总结_图书管理系统心得-总结报告模板
  18. 从零开始:小程序开发环境搭建详解
  19. entity 与dto 区别
  20. Towards End-to-End Lane Detection: an Instance SegmentationApproach

热门文章

  1. windows10 摄像头常亮 相机被占用
  2. MFC中的TranslateMessage和DispatchMessage
  3. 阿米洛键盘VB87MN
  4. 华为鸿蒙系统 Harmony OS 发布会观看总结
  5. The Syntax of Funs
  6. 如果过程必然经历,何不趁早?
  7. js获取id、echarts中的绘制方法
  8. 2021/11/18学习笔记:城市建成区的边界
  9. java-往txt文档写入内容
  10. 相关系数和p值的含义