• 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、开缓存、读解码后的信息,读完后释放开辟的缓存。

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

        

  • 相关阅读:
    .Net下HTTP访问穿越多层代理的方法以及代理服务器的验证 转载
    SB淘宝api的奇葩问题! 一则服务器无法访问淘宝api
    C# 系统应用之清除Cookies、IE临时文件、历史记录 转载
    Replication--进程无法在“xxxx”上执行“sp_replcmds”
    [leetcode] Search Insert Position
    [leetcode] Search for a Range
    [leetcode] Merge Sorted Array
    [leetcode] Remove Element
    [leetcode] Find Minimum in Rotated Sorted Array
    [leetcode] Container With Most Water
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/2726431.html
Copyright © 2020-2023  润新知