音频相关问题

1、不同的pcm格式都占几个byte

这点我么从ffmpeg的源码中查看

enum AVSampleFormat {
    AV_SAMPLE_FMT_NONE = -1,
    AV_SAMPLE_FMT_U8,          ///< unsigned 8 bits
    AV_SAMPLE_FMT_S16,         ///< signed 16 bits
    AV_SAMPLE_FMT_S32,         ///< signed 32 bits
    AV_SAMPLE_FMT_FLT,         ///< float
    AV_SAMPLE_FMT_DBL,         ///< double

    AV_SAMPLE_FMT_U8P,         ///< unsigned 8 bits, planar
    AV_SAMPLE_FMT_S16P,        ///< signed 16 bits, planar
    AV_SAMPLE_FMT_S32P,        ///< signed 32 bits, planar
    AV_SAMPLE_FMT_FLTP,        ///< float, planar
    AV_SAMPLE_FMT_DBLP,        ///< double, planar
    AV_SAMPLE_FMT_S64,         ///< signed 64 bits
    AV_SAMPLE_FMT_S64P,        ///< signed 64 bits, planar

    AV_SAMPLE_FMT_NB           ///< Number of sample formats. DO NOT USE if linking dynamically
};

2、Pcm的格式占的位深和系统有关吗(32位和64位)?

无关

3、Pcm和交叉模式(packet)和平铺模式(planer)?

a、packed: 即不同声道的数据时交织在一起的,如某个audio有2个声道,采用packed方式时,先取第一个通道的一个位深(8、16、32),再取第二个通道的一个位深(8、16、32),如此交织在一起行成一帧音频数据.例子:LRLRLR

b、planar:即不同的声道是像平面一样展开,仍然以2通道的声音举例,即一帧数据采用先存储第一个通道的所有数据,然后紧接着存储第二个通道的所有数据,如此形成一帧音频数据。LLLLRRRR

4、ffmpeg如何音频提取?

ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

-i 输入格式

-vn 忽略视频

-ar 采样率

-ac 声道数

-f s16le

-f的参数都有哪些呢?

        { AV_SAMPLE_FMT_U8,  "u8",    "u8"    },
        { AV_SAMPLE_FMT_S16, "s16be", "s16le" },
        { AV_SAMPLE_FMT_S32, "s32be", "s32le" },
        { AV_SAMPLE_FMT_FLT, "f32be", "f32le" },
        { AV_SAMPLE_FMT_DBL, "f64be", "f64le" },

目前没有找到怎么提出为planer数据的format

猜你喜欢

转载自blog.csdn.net/qq_15255121/article/details/126551531