zoukankan      html  css  js  c++  java
  • ffmpeg学习

    想基于ffmpeg,做个android平台的播放器,这段时间一直在弄这个。和大家分享一下学习的情况吧!

    一、ffmpeg概述

         libavcodec 音视频编码或解码的核心代码

         libavdeivce 操作计算机中常用的音视频捕获或输出设备:ALSA、AUDIO_BEOS、JACK等

         libavfilter 音视频滤波器的开发,宽高比、裁剪、格式化、非格式化、伸缩等

         libavformat 音视频流的格式解析,为libavcodec分析码流提供独立的音频或视频码流源

         libavutil 实用工具库,包括算术运算、字符操作等

         libpostproc 音视频应用的后处理,如图像的去块效应

        libswscale 图像颜色空间或格式转换,如RGB的24、32等于YUV的420等之间的转换

    一、初始化流程

         首先自己想了想,如果要我做,怎么做?思路:找到音视频,解码,保存,音视频同步,输出到屏幕等,初步应该是这个思路吧!看了ffmpeg后,清楚大概流程应该为:

         1、完成FFMPEG支持的编解码格式注册av_register_all,avcodec_register_all;

         2、打开本地or网络服务端的多媒体文件av_open_input_file;

         3、分别找音/视频的流索引ID信息av_find_stream_info;

         4、根据ID信息寻找相应的解码器avcodec_find_decoder;

         5、打开解码器avcodec_open;

         6、开辟缓存avcodec_alloc_frame;

         (7、开始对音/视频解码avcodec_decode_video;)

         (7、图象进行 YUV 和 RGB之间的转换img_convert;)

    二、openVideo打开视频

         还是想想若是自己做,是个什么思路:要打开视频,即开始解码,再将解码后的音/视频输出显示即可,但是如何做到音视频同步了?思考,但是下载的源码中已经实现了同步,并且封装了,不能查看。

         7、开始对音/视频解码avcodec_decode_video,即initVideo、initAudio;

         8、用surfaceView类将视频显示;

    三、startVideo播放视频     

         9、开缓存、读解码后的信息,读完后释放开辟的缓存。

         以上是对播放视频流程的基本了解。

        

  • 相关阅读:
    (七)四种常见的post请求中的参数形式
    (六)获取http状态码和处理返回结果
    (五)application/x-www-form-urlencoded(表单请求)
    (四)进行HTTPS请求并进行(或不进行)证书校验(示例)
    (三)解决httpclient乱码
    (二)HttpClient Post请求
    (一)HttpClient Get请求
    (十一)Maven之profile实现多环境配置动态切换
    (四)带图片和附件的复杂邮件发送
    (三)JavaMail发送附件
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/2726431.html
Copyright © 2011-2022 走看看