zoukankan      html  css  js  c++  java
  • Ffmpeg使用

    ffmpeg官网

    刚开始安装的推荐博客|--利用FFmpeg 开发音视频流:

     1、分辨率码率

    主要视频格式与码率:

    分辨率 

    200p——对应的码率是256kpbs,也就是说,一分钟需要流量1.92M,播放完毕所需的流量是192M;

    360p——对应的码率是512kpbs,也就是说,一分钟需要流量3.84M,播放完毕所需的流量是384M;

    720p——对应的码率是1024kpbs,也就是说,一分钟需要流量7.68M,播放完毕所需的流量是768M;

    1080i——对应的码率是1800kpbs,也就是说,一分钟需要流量13.5M,播放完毕所需要的流量是1.35G;

    1080P——对应的码率是3500kpbs,也就是说,一分钟所需流量26.25M,播放完比所需要的流量是2.625G。

    webRTC音视频引擎,有一定的优化经验

    ffmpeg使用

    VoIP产品

     

    ffmpeg -i /Users/xushiyou/Downloads/禾宝爽跑小树林.mp4 -b:v 320k 320.avi

     

     

    Xcode 与 Fffmpeg组合使用 优势:

    `XCode`提供了Mac平台开发环境必须的gcc编译器,要注意的是`XCode` 安装后并没有命令行的gcc可用,

    还需要打开`XCode`,在某个设置里添加Command Line Tools,`XCode`就会自动下载并安装好gcc

    同时还有git也被安装了。

     

     

    Ffmpeg

    • libavutil是一个包含简化编程功能的库,包括随机数生成器,数据结构,数学例程,核心多媒体实用程序等等。
    • libavcodec是一个包含用于音频/视频编解码器的解码器和编码器的库。
    • libavformat是一个包含多媒体容器格式的解复用器和复用器的库。
    • libavdevice是一个包含输入和输出设备的库,用于从许多常见的多媒体输入/输出软件框架中获取和呈现,包括Video4Linux,Video4Linux2,VfW和ALSA。
    • libavfilter是一个包含媒体过滤器的库。
    • libswscale是一个执行高度优化的图像缩放和色彩空间/像素格式转换操作的库。
    • libswresample是一个执行高度优化的音频重采样,重新矩阵化和样本格式转换操作的库。

     

     

    ffmpeg 在iOS上运行

    1、gas-preprocessor 其实就是我们要编译 FFmpeg 的所需脚本文件。

    2、Yasm是一个完全重写的 NASM 汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法, 产出二进制,ELF32 , ELF64 , COFF , Mach - O的( 32和64 ),RDOFF2 ,的Win32和Win64对象的格式, 并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。

    3、编译 FFmpeg-iOS-build-script

    不难看出,这个脚本是转为 iOS 编译出可用的 ffmpeg 的库,这个业界良心,我们称之为`神的内裤`。。。

    好吧,不搞笑,有了这个脚本,我们根本就不用下载 ffmpeg 了,脚本会帮我们下载好最新版本的 ffmpeg,

    并打包成一个 iOS 可用的 ffmpeg 库提供给我们了,当然,前提是你必须要跟着博主一步一步入坑才行喔。

     

    用最低的码率达到最少的失真,围绕这个核心衍生出来的cbr(固定码率)与vbr(可变码率),都是在这方面做的文章,不过事情总不是绝对的,从音频方面来说,码率越高,被压缩的比例越小,音质损失越小,与音源的音质越接近。

     

    AVFormatContext: 数据文件操作者,主要是用于存储音视频封装格式中包含的信息, 在工程当中占着具足轻重的地位,因为很多函数都要用到它作为参数。同时,它也是我们进行解封装的功能结构体。

     

    AVOutputFormat: 输出的格式,包括音频封装格式、视频装格式、字幕封装格式,所有封装格式都在 AVCodecID 这个枚举类型上面了

     

    AVStream: 一个装载着视频/音频流信息的结构体,包括音视频流的长度,元数据信息,其中 index 属性用于标识视频/音频流。

     

    AVCodecContext: 这个结构体十分庞大,但它的主要是用于编码使用的,结构体中的的 AVCodec *codec 就是编码所采用的编码器器, 当然,这个结构体中要存入视频的基本参数,例如宽高等,存入音频的基本参数,声道,采样率等。

     

    AVCodec:编码器,设置编码类型,像素格式,视频宽高,fps(每秒帧数), 用于编解码音视频编码层使用。

     

    AVIOContext:用于管理输入输出结构体。例如解码的情况下,将一个视频文件中的数据先从硬盘中读入到结构体中的 buffer 中,然后送给解码器用于解码,后面我们会用到。

     

    AVFrame: 结构体一般用于存储原始数据(即非压缩数据,例如对视频来说是YUV,RGB,对音频来说是PCM),此外还包含了一些相关的信息。比如说,解码的时候存储了宏块类型表,QP表,运动矢量表等数据。编码的时候也存储了相关的数据。因此在使用FFMPEG进行码流分析的时候,AVFrame是一个很重要的结构体。

     

    H.264 中,句法元素共被组织成 序列、图像、片、宏块、子宏块五个层次

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    poj 3666 Making the Grade
    poj 3186 Treats for the Cows (区间dp)
    hdu 1074 Doing Homework(状压)
    CodeForces 489C Given Length and Sum of Digits...
    CodeForces 163A Substring and Subsequence
    CodeForces 366C Dima and Salad
    CodeForces 180C Letter
    CodeForces
    hdu 2859 Phalanx
    socket接收大数据流
  • 原文地址:https://www.cnblogs.com/xujiahui/p/10594987.html
Copyright © 2011-2022 走看看