文档章节

Windows 的 WAVEFORMATEX 转 ffmpeg 的 AVSampleFormat 类型

UMU
 UMU
发布于 2017/07/04 20:46
字数 113
阅读 42
收藏 0

任务:用 Windows 的 IAudioCaptureClient 对象采集音频,然后用 ffmpeg 编码。

问题:一些类型定义不一样,比如 SampleFormat。

inline AVSampleFormat GetSampleFormat(const WAVEFORMATEX *wave_format)
{
    switch (wave_format->wFormatTag) {
    case WAVE_FORMAT_PCM:
        if (16 == wave_format->wBitsPerSample) {
            return AV_SAMPLE_FMT_S16;
        }
        if (32 == wave_format->wBitsPerSample) {
            return AV_SAMPLE_FMT_S32;
        }
        break;
    case WAVE_FORMAT_IEEE_FLOAT:
        return AV_SAMPLE_FMT_FLT;
    case WAVE_FORMAT_ALAW:
    case WAVE_FORMAT_MULAW:
        return AV_SAMPLE_FMT_U8;
    case WAVE_FORMAT_EXTENSIBLE:
    {
        const WAVEFORMATEXTENSIBLE *wfe = reinterpret_cast<const WAVEFORMATEXTENSIBLE *>(wave_format);
        if (KSDATAFORMAT_SUBTYPE_IEEE_FLOAT == wfe->SubFormat) {
            return AV_SAMPLE_FMT_FLT;
        }
        if (KSDATAFORMAT_SUBTYPE_PCM == wfe->SubFormat) {
            if (16 == wave_format->wBitsPerSample) {
                return AV_SAMPLE_FMT_S16;
            }
            if (32 == wave_format->wBitsPerSample) {
                return AV_SAMPLE_FMT_S32;
            }
        }
        break;
    }
    default:
        break;
    }
    return AV_SAMPLE_FMT_NONE;
}

 

© 著作权归作者所有

共有 人打赏支持
UMU

UMU

粉丝 118
博文 112
码字总数 44043
作品 0
厦门
程序员
使用ffmpeg推流到Wowza

Step by step instructions for using FFmpeg as a live video/audio encoder with Wowza Media Server. Updated for FFMpeg build r25705 (22 November 2010) Note: Wowza Media Systems pr......

Johnny_feng
2013/12/03
0
0
FFmpeg Maintainer赵军:FFmpeg关键组件与硬件加速

本文来自FFmpeg Maintainer赵军在LiveVideoStackCon 2018热身分享,并由LiveVideoStack整理而成。在分享中,赵军介绍了FFmpeg的历史、关键组件,并介绍了英特尔平台上的多种FFmpeg硬件加速方...

LiveVideoStack
07/18
0
0
ffmpeg在windows下视频采集

ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。 ffmpeg在Linux下的...

WuHonghai
2011/11/18
0
0
基于Ubuntu交叉编译FFmpeg Windows SDK

基于Ubuntu交叉编译FFmpeg Windows SDK 写在前面   FFmpeg是一个开源且跨平台的音视频解决方案,集采集、转码、流式化为一身,项目的libavcodec编解码模块和libavformat媒体格式模块,支持...

j_m
2012/07/09
0
0
如何在Windows上安装FFmpeg程序

如何在Windows上安装FFmpeg程序 由 Yutao 编辑 2 方法:下载FFmpeg在命令行中开启FFmpeg FFmpeg程序进行各种媒体格式的转换,从而它们可以在不同设备上播放。该程序只有命令行模式,因此将它安...

james_laughing
2014/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
11
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部