• ffmpeg格式转换基础知识


    1. 媒体格式的介绍

      文件格式:特殊的文件类型,用来存储音频或视频数据。一些类型可以用来存储多条流数据,这些叫做容器。视频文件格式一般包含视频流和音频流。

      媒体容器:特殊的文件格式,用来存储多条流数据和相关元数据的。音频和视频是可以被编码和解码的,容器可以将这些音频流和视频流存储在一个文件里面。

             有些容器只能存储音频,比如AIFF、WAV、XMF等等。有些只能存储图片,比如TIFF。大部分只可以同时存储音频】视频、字幕、元数据等等。

           

        如果只是容器改变,编码没改,可以使用-c  copy参数或-c:a  copy参数或-c:v  copy参数

          比如:ffmpeg  -i  input.avi  -q  1  -c  copy output.mov

    2. 转码和转换

      使用ffmpeg对输入源处理然后输出的过程叫做转码。转码可以改变文件格式,或者文件格式不变,只是更改其他数据。转码过程可以分为下面几个阶段:

        1)demuxing解封装:ffmpeg根据输入源的文件扩展名来选择最佳的解封装器(在libavformat库里面)。解封装后生成编码状态的数据包、即压缩状态的数据包。(文件file ——> 数据包data package)

        2)decoding解码:通过适当的解码器将步骤1里面的数据包解码为未压缩的数据帧。如果使用-c copy或-codec copy,将不会有解码这个步骤,当然也就不会有下面的编码这个步骤了。(数据包data package ——> 数据帧frame)

        3)optional filtering可选的滤镜:通过指定的滤镜修改解码后的数据帧。(修改数据帧)

        3)encoding编码:通过指定编码器将数据帧编码为数据包。(数据帧frame ——> 数据包data package)

        4)muxing封装:将数据包封装为指定的媒体格式。(数据包data package ——> 文件file)

        

        

    3. 编解码器

      codec是coder和decoder的组合缩写。用于编解码视频流和音频流数据的。ffmpeg的编解码是基于比特流进行的。在ffmpeg命令行可通过 -c 或者 -codec指定编解码器。语法如下:

        -codec[:stream_specifier] codec_name

    4. 转换的全局选项和特定选项

      在转码过程里面,

        有一些选项全局选项,如下-y表示覆盖输出,-n表示结束处理过程,不覆盖输出;-target 表示针对指定设备进行转码处理。等等

        也有一些特定选项,比如只能用于视频或者音频等等。

  • 相关阅读:
    poj3720
    poj3099
    poj3734
    poj3112
    poj3723
    十二个开源UML工具推荐
    关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
    读《中央确定西部新十年战略》有感
    DirectShow基础编程 最简单的源Filter的编写步骤
    Access2007无法执行查询,操作或事件已被禁用模式阻止
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/7133714.html
Copyright © 2020-2023  润新知