当前位置: 首页 > wzjs >正文

公司做网站的费用属于什么费用如何自制网站

公司做网站的费用属于什么费用,如何自制网站,出口贸易公司网站怎么做,阳江网上车管所SwrContext 一、SwrContext 的重要字段 SwrContext 是音频重采样的核心配置对象,其关键字段决定了重采样的行为和性能。以下是常用字段及其作用: 字段名称类型作用典型值示例in_sample_rateint输入音频的采样率(Hz)。44100out_…

SwrContext

一、SwrContext 的重要字段

SwrContext 是音频重采样的核心配置对象,其关键字段决定了重采样的行为和性能。以下是常用字段及其作用:

字段名称类型作用典型值示例
in_sample_rateint输入音频的采样率(Hz)。44100
out_sample_rateint输出音频的采样率(Hz)。48000
in_ch_layoutAVChannelLayout输入音频的声道布局(如立体声、单声道)。AV_CH_LAYOUT_STEREO
out_ch_layoutAVChannelLayout输出音频的声道布局。AV_CH_LAYOUT_MONO
in_sample_fmtAVSampleFormat输入音频的样本格式(如 PCM、浮点)。AV_SAMPLE_FMT_S16
out_sample_fmtAVSampleFormat输出音频的样本格式。AV_SAMPLE_FMT_FLTP
filterconst char *重采样滤波器名称(如 Lanczos、Sinc)。SWR_FILTER_LANCZOS
speeddouble重采样速度倍数(1.0 = 实时,>1.0 加速)。1.0
channel_mapconst int *声道映射表(高级用法:自定义声道顺序)。NULL(默认布局)
error_occurredint错误标志(非零表示重采样过程中发生错误)。0(成功)/-1(失败)
bufferuint8_t **内部缓冲区指针(用于存储中间音频数据)。由 libswresample 自动管理
buffer_lenint内部缓冲区长度(字节)。自动调整

二、SwrContext 的重要函数

以下是使用 SwrContext 时最常用的函数及其作用:

1. swr_alloc()
SwrContext *swr_alloc(void);
  • 作用:分配一个空的 SwrContext 结构体(不初始化参数)。
  • 返回值:指向新分配的 SwrContext,需检查是否为 NULL(内存不足)。
    典型用法
2. swr_alloc_set_opts()
SwrContext *swr_alloc_set_opts(SwrContext **ctx,const AVChannelLayout *in_ch_layout,AVSampleFormat in_sample_fmt,int in_sample_rate,const AVChannelLayout *out_ch_layout,AVSampleFormat out_sample_fmt,int out_sample_rate,double speed,const char *filter,const char *filter_name
);
  • 作用一步到位分配并初始化 SwrContext,设置所有核心参数。
  • 参数说明
    • 输入参数(前 3 个):输入音频的布局、格式、采样率。
    • 输出参数(后 3 个):输出音频的布局、格式、采样率。
    • speed:重采样速度(1.0 表示实时处理)。
    • filter:滤波器类型(如 SWR_FILTER_LANCZOS)。
    • 返回值:成功返回配置后的 SwrContext,失败返回 NULL
  • 关键点
    • **替代 swr_alloc **:此函数内部已调用 swr_alloc` 无需手动初始化。
    • 参数顺序:必须严格区分输入和输出参数,否则可能导致逻辑错误。
  • 示例
3. swr_free()
void swr_free(SwrContext *ctx);

作用:释放 SwrContext 占用的内存及内部缓冲区。
注意:无论初始化是否成功,最终必须调用此函数避免内存泄漏。
示例

4. swr_convert()
int swr_convert(SwrContext *ctx,uint8_t **out_buf,int out_samples,const uint8_t *in_buf,int in_samples
);

作用:执行实际的重采样操作。
参数
in_buf:输入音频数据指针(需符合 in_sample_fmt 的格式)。
in_samples:输入样本数量(以 in_sample_rate 为单位)。
out_buf:输出缓冲区指针(需预分配,格式由 out_sample_fmt 决定)。
out_samples:请求的输出样本数量(可能被调整)。
返回值:实际输出的样本数量,或负数表示错误。
关键点
输入/输出缓冲区格式:必须与 SwrContext 中的 in_sample_fmt/out_sample_fmt 匹配。
缓冲区大小:需提前分配足够空间(参考 swr_get_out_samples())。

5. swr_get_sample_rate()
int swr_get_sample_rate(SwrContext *ctx);

作用:获取当前上下文的采样率(输入或输出,取决于调用时机)。
注意:在初始化后,输出采样率是固定的,输入采样率可能动态变化(如流式处理)。

6. swr_init()

swr_init 是 FFmpeg 中用于初始化音频重采样器(SwrContext)的函数。它的作用是根据 swr_alloc_set_optsswr_alloc_set_opts2 设置的参数,完成重采样器的内部配置和准备工作。以下是关于 swr_init 的详细说明:


##### 1. 函数原型

#include <libswresample/swresample.h>int swr_init(SwrContext *s);
参数类型说明
sSwrContext *音频重采样器上下文
返回值int成功返回 0,失败返回负的错误码

2. 功能说明

swr_init 的主要功能包括:

  1. 验证参数

    • 检查输入和输出的声道布局、采样格式、采样率等参数是否合法。
    • 如果参数不合法,返回错误码(如 AVERROR(EINVAL))。
  2. 初始化内部状态

    • 根据输入和输出的参数,计算重采样器的内部状态(如滤波器系数、缓冲区大小等)。
    • 如果输入和输出的采样率不同,初始化重采样滤波器。
  3. 分配内部资源

    • 分配重采样器所需的内存(如缓冲区、滤波器等)。
  4. 准备重采样

    • 完成所有准备工作,使重采样器可以开始处理音频数据。

3. 使用场景

swr_init 通常在以下步骤之后调用:

  1. 使用 swr_alloc()swr_alloc_set_opts() / swr_alloc_set_opts2() 创建并配置 SwrContext
  2. 调用 swr_init() 初始化重采样器。
  3. 使用 swr_convert() 进行音频重采样。

4. 返回值处理

swr_init 的返回值需要检查,如果返回值 < 0,说明初始化失败。

常见错误码
错误码说明
AVERROR(EINVAL)参数不合法(如声道布局不支持)
AVERROR(ENOMEM)内存分配失败
AVERROR(EOPNOTSUPP)不支持的采样格式或布局

四、完整使用示例

#include <libswresample/swresample.h>
#include <libavutil/channel_layout.h>void setup_resampler(AVCodecContext *ac) {// 创建 SwrContextSwrContext *actx = swr_alloc();if (!actx) {fprintf(stderr, "Failed to allocate SwrContext\n");return;}// 设置输入和输出的声道布局AVChannelLayout out_ch_layout;AVChannelLayout in_ch_layout;// 输出声道布局:立体声(2声道)av_channel_layout_default(&out_ch_layout, 2);// 输入声道布局:从 AVCodecContext 中获取av_channel_layout_copy(&in_ch_layout, &ac->ch_layout);// 配置 SwrContextint ret = swr_alloc_set_opts2(&actx,&out_ch_layout,            // 输出声道布局AV_SAMPLE_FMT_S16,         // 输出采样格式ac->sample_rate,           // 输出采样率&in_ch_layout,             // 输入声道布局ac->sample_fmt,            // 输入采样格式ac->sample_rate,           // 输入采样率0,                         // 日志偏移NULL                       // 日志上下文);if (ret < 0) {char errbuf[AV_ERROR_MAX_STRING_SIZE];av_strerror(ret, errbuf, sizeof(errbuf));LOGW("swr_alloc_set_opts2 failed: %s", errbuf);return;}// 初始化重采样器ret = swr_init(actx);if (ret < 0) {char errbuf[AV_ERROR_MAX_STRING_SIZE];av_strerror(ret, errbuf, sizeof(errbuf));LOGW("swr_init failed: %s", errbuf);return;}LOGW("SwrContext initialized successfully");// 使用 actx 进行重采样...// 释放资源swr_free(&actx);
}
http://www.dtcms.com/wzjs/370163.html

相关文章:

  • 做电影网站侵权吗郑州seo代理公司
  • 佛山做网站建设今日军事新闻头条
  • 谷歌上怎样做网站seo薪资seo
  • 北京东站百度top风云榜
  • 网页设计培训(可0基础)做seo的公司
  • 仪器仪表行业网站建设长沙营销推广
  • 桃城网站建设代理广告软文代理平台
  • 做机票在线预订网站如何引流与推广
  • 门户网站制作关键词竞价广告
  • 用易语言做刷网站注册软件数据分析师资格证书怎么考
  • 南网站建设平台推广费用
  • 上海专业网站建设渠道在线培训管理系统
  • 网站制作培训机构北大青鸟软件开发培训学费多少
  • 网站 活动页面百度问答怎么赚钱
  • 邦泽网站建设第一推广网
  • 做设计网站谷歌seo是什么意思
  • 网络公司有几家合肥网站关键词优化公司
  • 东莞横沥做网站人工智能培训机构排名
  • 做网站360业务深圳今天重大事件新闻
  • 延庆网站建设优化seo线上推广怎么做
  • 网站不支持ie8优化服务平台
  • 兼职网站哪个靠谱百度推广怎么登陆
  • 做网站算新媒体运营吗广州营销型网站
  • 网站开发需要哪些知识整合营销的特点有哪些
  • 做网站公司300元钱网络营销的特点是什么
  • 餐饮公司的网站建设网站优化seo培训
  • 自己做的网站怎么在百度能搜到google国外入口
  • 网站广告文案最新全国疫情消息
  • win2003怎么做网站单页面网站如何优化
  • 织梦网站怎么做新闻导航页热点新闻事件素材