直接上代码:

/*** 使用jave1.0.2.jar进行转码截帧* @author chengjs**/
public class MediaInfo {public static boolean flag = true;/*** 视频转码* 因转码出来不是H264的视频编码所以此方法弃用* @param source* @param targetPath* @return*/public static boolean transcodingToMP4(File source,String targetPath){//File source = new File("C:/Users/Administrator/Downloads/厨房里的爆炸案.mpg");File target = new File(targetPath);AudioAttributes audio = new AudioAttributes();// 音频属性audio.setCodec("libmp3lame");// libmp3lame 音频编码audio.setBitRate(new Integer(128000));// 音频比特率audio.setChannels(new Integer(1));// 声道audio.setSamplingRate(new Integer(44100));// 采样率VideoAttributes video = new VideoAttributes();// 视频属性video.setCodec("libxvid");// 视频编码video.setBitRate(new Integer(2048000));// 视频比特率video.setFrameRate(new Integer(18));// 帧率    1f/s帧频,1是目前测试比较清楚的,越大越模糊  //video.setSize(new VideoSize(1920,1080));// 视频宽高EncodingAttributes attrs = new EncodingAttributes();// 转码属性attrs.setFormat("mp4");// 转码格式attrs.setAudioAttributes(audio);// 音频属性attrs.setVideoAttributes(video);// 视频属性Encoder encoder = new Encoder();// 创建解码器long beginTime = System.currentTimeMillis();try {// 获取时长MultimediaInfo m = encoder.getInfo(source);System.out.println(m.getDuration()/1000 + "秒");System.out.println("获取时长花费时间是:" + ((System.currentTimeMillis() - beginTime))/1000 + "秒");beginTime = System.currentTimeMillis();encoder.encode(source, target, attrs);System.out.println("视频转码花费时间是:" + ((System.currentTimeMillis() - beginTime)/1000) + "秒");flag = true;} catch (IllegalArgumentException e) {flag = false;e.printStackTrace();} catch (InputFormatException e) {flag = false;e.printStackTrace();} catch (EncoderException e) {flag = false;e.printStackTrace();}return flag;}/*** 音频转码 转成MP3格式* @param source* @param targetPath* @return*/public static boolean transcodingToMP3(File source,String targetPath){//File source = new File("C:/Users/Administrator/Downloads/厨房里的爆炸案.mpg");File target = new File(targetPath);AudioAttributes audio = new AudioAttributes();// 音频属性audio.setCodec("libmp3lame");// libmp3lame 音频编码audio.setBitRate(new Integer(128000));// 音频比特率audio.setChannels(new Integer(1));// 声道audio.setSamplingRate(new Integer(44100));// 采样率EncodingAttributes attrs = new EncodingAttributes();// 视频属性attrs.setFormat("mp3");// 转码格式attrs.setAudioAttributes(audio);// 音频属性Encoder encoder = new Encoder();// 创建解码器long beginTime = System.currentTimeMillis();try {// 获取时长MultimediaInfo m = encoder.getInfo(source);System.out.println(m.getDuration()/1000 + "秒");System.out.println("获取时长花费时间是:" + ((System.currentTimeMillis() - beginTime))/1000 + "秒");beginTime = System.currentTimeMillis();encoder.encode(source, target, attrs);System.out.println("音频转码花费时间是:" + ((System.currentTimeMillis() - beginTime)/1000) + "秒");flag = true;} catch (IllegalArgumentException e) {flag = false;e.printStackTrace();} catch (InputFormatException e) {flag = false;e.printStackTrace();} catch (EncoderException e) {flag = false;e.printStackTrace();}return flag;}/*** 截取第一帧作为缩略图* @param source* @param targetPath* @return*/public static boolean interceptionToJPG(File source,String targetPath){//File source = new File("C:/Users/Administrator/Downloads/火箭少女101 - 卡路里.mp4");File target = new File(targetPath);// 转图片VideoAttributes video = new VideoAttributes();// 视频属性video.setCodec("mjpeg");// 图片编码video.setSize(new VideoSize(1200, 800));// 设置图片宽高EncodingAttributes attrs = new EncodingAttributes();// 转码属性attrs.setFormat("image2");// 转码格式attrs.setOffset(3f);// 设置偏移位置,即开始转码位置(3秒)attrs.setDuration(0.01f);// 设置转码持续时间(1秒)attrs.setVideoAttributes(video);Encoder encoder = new Encoder();long beginTime = System.currentTimeMillis();try {//获取时长 MultimediaInfo m = encoder.getInfo(source);System.out.println(m.getDuration());System.out.println("获取时长花费时间是:" + (System.currentTimeMillis() - beginTime));beginTime = System.currentTimeMillis();  encoder.encode(source, target, attrs);  System.out.println("图片转码花费时间是:" + (System.currentTimeMillis() - beginTime));  flag = true;} catch (IllegalArgumentException e) {flag = false;e.printStackTrace();} catch (InputFormatException e) {flag = false;e.printStackTrace();} catch (EncoderException e) {flag = false;e.printStackTrace();}return flag;}public static Long getTime(File file) throws InputFormatException, EncoderException{Encoder encoder = new Encoder();MultimediaInfo m = encoder.getInfo(file);long lengthOfTime = m.getDuration()/1000;return lengthOfTime;}public static void main(String[] args) {String fileOut = "E://30.mp4";File file2 = new File(fileOut);boolean flag1 = transcodingToMP3(file2,"C://别人家的小孩 .mp3");boolean flag2 = interceptionToJPG(file2,"C://别人家的小孩 .jpg");}
}

使用jave1.0.2.jar进行音视频转码相关推荐

  1. 音视频转码FFmpeg

    前言 音视频转码主要指这样的概念: 容器格式的转换,比如MP4转换为MOV 容器中音视频数据编码方式转换,比如H264编码转换成MPEG4编码,MP3换为AAC 音视频码率的转换,比如4M的视频码率降 ...

  2. 基于ffmpeg实现音视频转码

    一.背景 偶然的机会接触了ffmpeg,当时是从B站下载的视频转移到笔记本上看.使用b站手机客户端下载的视频格式为m4s的两个文件(video.m4s和audio.m4s),需要转成普通播放器支持的m ...

  3. JAVA调用FFmpeg实现音视频转码加水印功能

    目录 目录 写在前面 MAVEN引用 获取音视频基本信息 音频转码成Mp3格式 视频转码成Mp4格式 视频转码成Mp4并添加文字水印 视频转码成Mp4并添加图片水印 测试代码 写在前面 如今各大云厂商 ...

  4. ffmpeg学习(13)音视频转码(2)使用filter

    ffmpeg学习(10)音视频文件muxer(1)封装格式转换 中介绍了媒体文件的封装格式转换,ffmpeg学习(11)音视频文件muxer(2)多输入混流 中介绍了音视频的混流,本文介绍基于ffmp ...

  5. Serverless 音视频转码 —— 芒果 TV 落地实践(下)

    在 <Serverless 音视频转码--芒果 TV 落地实践(上)>中,我们回顾了芒果 TV 吴坚强老师在 techo 大会的精彩分享,芒果TV 音视频编解码业务团队通过使用腾讯云 Se ...

  6. 音视频转码器产品规格

    音视频转码器产品规格 QQ:16614119 一.            产品简介: 音视频转码器是一套商业级的实时.非实时转码产品.提供常用编码格式之间的转换:支持远程控制转码任务:支持多种输入输出 ...

  7. 音视频转码技术指南:国内主流云转码服务提供商对比测评

    摘要: 随着大量视频产生,怎样才能够高效精准地对视频进行云端转码和处理,来适配多终端展示需求和应对复杂的网络情况,是我们视频行业开发人员工作的重中之重.作为从业者,我们会经常接触各大云转码服务商,对音 ...

  8. Serverless 音视频转码 —— 芒果 TV 落地实践(上)

    本文整理自芒果 TV 吴坚强在 Techo 大会的分享.下面,让我们一起回顾下吴老师在 Techo 大会的精彩演讲内容. 原文作者:吴坚强 整理编辑:王天云:@Aceyclee 大家好,我叫吴坚强,来 ...

  9. 软件合码器-驾考-驾驶员考试-音视频合成-四合一-多路视频合成一路技术开发-音视频合码器

    本技术以实际开发实施案例为基础(驾驶员路考系统用的音视频监控合成) 软件合码器-驾考-驾驶员考试-音视频合成-四合一-多路视频合成一路技术开发-音视频合码器 软件效果: 设计流程: 简介 视频合成软件 ...

  10. 截获视频网站 ts流 视频 网络嗅探 IPTV OTT 数据流 音视频数据 码流 ts 流

    忽然想把最近的技术总结一下.做ts流 IP数据流也有5年之久了.接触了大大小小的项目.例如网络嗅探 通过sniffer 获取IP包.ts 码流分析等.今天把二者结合起来可以应用到手机终端.或者工程仪表 ...

最新文章

  1. Linux 用户进程内存空间详解
  2. 2020 我的C++学习之路 C++PrimerPlus第六章课后习题
  3. 架构设计从这5点考虑,能帮后期运维很大忙!
  4. LeetCode 之 JavaScript 解答第141题 —— 环形链表 I(Linked List Cycle I)
  5. python测试代码运行时间_python测量代码运行时间方法
  6. 论文浅尝 | 知识图谱推理中表示学习和规则挖掘的迭代学习方法
  7. Android Native 代码NDK开发学习笔记
  8. 关于拿到一个别人给你已经上架的App源代码时,首先需要干的几个事情
  9. PIN/PAD Design in SoC - 1 (待续)
  10. Meta元宇宙副总裁离职了...『Go语言圣经』终于汉化啦;德云社失业警告!AI要说相声了;一键就能AI绘图的网站;前沿论文 | ShowMeAI资讯日报
  11. 华硕无线网卡测试软件,高端便携无线网卡来了 华硕USB-AC68首测
  12. 5个不为人知的黑科技手机APP,绝对让你大开眼见!
  13. JavaScript浮动广告
  14. java sign函数_C / C ++中是否有标准的符号函数(signum,sgn)?
  15. 2021年创业项目:知识付费副业做网课赚钱
  16. 小孩增高的主要方式:足量动物脂肪;去除大豆;去除植物油;备孕6个月饮食
  17. 跑深度模型的显卡_GPU必知必会 | 哪款显卡配得上我的炼丹炉
  18. STM32---设备电子签名
  19. python项目中的self到底是什么?
  20. lambada表达式对list对象操作

热门文章

  1. 360网络修复大师_360补丁大师免安装下载-360补丁大师下载 v8.0 官方最新版
  2. 数据库学生管理系统课程设计
  3. STM32CubeIDE自平衡小车教程4.配置串口并实现字符的输出
  4. mysql odbc 64位 驱动_MySQL ODBC驱动程序下载
  5. 使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码
  6. ios查看帧率的软件_iOS显示FPS值的工具FHHFPSIndicator
  7. vulkan安装流程
  8. Zen coding
  9. 线性代数复盘 | 同济大学工程数学第六版第二章思维导图笔记——矩阵及其运算(复习专用)
  10. Linux I2C总线驱动调试之i2c-tools工具使用