Java版流媒体编解码和图像处理(JavaCPP+FFmpeg)

欢迎访问我的GitHub

FFmpeg、JavaCPP、JavaCV的关系

  • 先简单的梳理一下FFmpeg、JavaCPP、JavaCV的关系:
  1. FFmpeg、OpenCV可以理解成C语言版的本地库(Native library),Java应用无法直接使用
  2. JavaCPP将FFmpeg、OpenCV这些常用库做了包装(wrapper),使得Java应用也能使用这些Native API(JavaCPP的底层实现是JNI)
  3. 这些JavaCPP包装后的API,被JavaCV封装成了工具类(utility classes),这些工具类比原生API更简单易用
    • 接下来开始编码,先写一个最简单的内部类,将AVFrame和它对应的数据指针BytePointer都放在这个类中,在调用方法的时候便于传递:
    • 接下来是整个程序最重要的方法openMediaAndSaveImage,该方法是整个程序的主体,负责将打开流媒体、解码、转格式、保存、释放等五个步骤串起来,外部只要调用这个方法就能完成整个功能:
    • 现在整体逻辑已经清楚了,再来看里面openMediaAndSaveImage里面调用的那些方法的源码,先看打开流媒体的getFormatContext:
        /*** 生成解封装上下文* @param url* @return*/    private AVFormatContext getFormatContext(String url) {// 解封装上下文AVFormatContext pFormatCtx = new avformat.AVFormatContext(null);// 打开流媒体if (avformat_open_input(pFormatCtx, url, null, null) != 0) {    log.error("打开媒体失败");    return 

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月22日
下一篇 2021年6月22日

相关推荐