2019独角兽企业重金招聘Python工程师标准>>>

输入:

flv格式,视频264编码,音频speex编码

-8:[root@andrew ffmpeg-3.0./ffprobe test_speex1.flv
32:ffprobe version 3.0-static32: Copyright (c) 2007-2016 the FFmpeg developers32:
32:  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)
32:  configuration: --enable-gpl --enable-nonfree --disable-shared --enable-postproc --enable-bzlib --enable-zlib --enable-parsers --enable-libx264 --enable-libmp3lame --enable-libfaac --enable-libfdk-aac --enable-pthreads --extra-ldflags=-static --disable-ffserver --enable-ffplay --enable-asm --enable-yasm --enable-optimizations --pkg-config-flags=--static --extra-cflags=--static --extra-version=static --extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include --extra-libs=-lrtmp --enable-libspeex --enable-encoder=libspeex --enable-decoder=libspeex
32:  libavutil      55. 17.103 / 55. 17.103
32:  libavcodec     57. 24.102 / 57. 24.102
32:  libavformat    57. 25.100 / 57. 25.100
32:  libavdevice    57.  0.101 / 57.  0.101
32:  libavfilter     6. 31.100 /  6. 31.100
32:  libswscale      4.  0.100 /  4.  0.100
32:  libswresample   2.  0.101 /  2.  0.101
32:  libpostproc    54.  0.100 / 54.  0.100
32:[h264 @ 0x242c260] decoding video .......
32:Input #0, flv, from 'test_speex1.flv':
32:  Metadata:
32:    metadatacreator : 32:Yet Another Metadata Injector for FLV - Version 1.832:
32:    canSeekToEnd    : 32:true32:
32:    videosize       : 32:2034203232:
32:    audiosize       : 32:272241432:
32:    lastkeyframetimestamp: 32:31832:
32:    lastkeyframelocation: 32:2313943332:
32:    encoder         : 32:Lavf57.25.10032:
32:  Duration: 32:00:00:01.7332:, start: 32:0.08100032:, bitrate: 32:331 kb/s32:
32:    Stream #0:032:: Video: h264 (High), yuv420p, 608x448 [SAR 56:57 DAR 4:3]32:, 32:15.17 fps, 32:15 tbr, 32:1k tbn, 32:30 tbc32:
32:    Stream #0:132:: Audio: speex, 16000 Hz, mono, s16, 27 kb/s32:

输出h264+mp3

例1:

./ffmpeg -re -i test_speex1.flv -vcodec libx264 -acodec libmp3lame  -y -f flv test_1out.flv

-8:[root@andrew ffmpeg-3.0]# ./ffmpeg -re -i test_speex1.flv -vcodec libx264 -acodec libmp3lame -y -f flv test_1out.flv
32:ffmpeg version 3.0-static32: Copyright (c) 2000-2016 the FFmpeg developers32:
32:  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)
32:  configuration: --enable-gpl --enable-nonfree --disable-shared --enable-postproc --enable-bzlib --enable-zlib --enable-parsers --enable-libx264 --enable-libmp3lame --enable-libfaac --enable-libfdk-aac --enable-pthreads --extra-ldflags=-static --disable-ffserver --enable-ffplay --enable-asm --enable-yasm --enable-optimizations --pkg-config-flags=--static --extra-cflags=--static --extra-version=static --extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include --extra-libs=-lrtmp --enable-libspeex --enable-encoder=libspeex --enable-decoder=libspeex
32:  libavutil      55. 17.103 / 55. 17.103
32:  libavcodec     57. 24.102 / 57. 24.102
32:  libavformat    57. 25.100 / 57. 25.100
32:  libavdevice    57.  0.101 / 57.  0.101
32:  libavfilter     6. 31.100 /  6. 31.100
32:  libswscale      4.  0.100 /  4.  0.100
32:  libswresample   2.  0.101 /  2.  0.101
32:  libpostproc    54.  0.100 / 54.  0.100
32:[h264 @ 0x3ec1b40] decoding video .......
32:Input #0, flv, from 'test_speex1.flv':
32:  Metadata:
32:    metadatacreator : 32:Yet Another Metadata Injector for FLV - Version 1.832:
32:    canSeekToEnd    : 32:true32:
32:    videosize       : 32:2034203232:
32:    audiosize       : 32:272241432:
32:    lastkeyframetimestamp: 32:31832:
32:    lastkeyframelocation: 32:2313943332:
32:    encoder         : 32:Lavf57.25.10032:
32:  Duration: 32:00:00:01.7332:, start: 32:0.08100032:, bitrate: 32:331 kb/s32:
32:    Stream #0:032:: Video: h264 (High), yuv420p, 608x448 [SAR 56:57 DAR 4:3]32:, 32:15.17 fps, 32:15 tbr, 32:1k tbn, 32:30 tbc32:
32:    Stream #0:132:: Audio: speex, 16000 Hz, mono, s16, 27 kb/s32:
32:[libx264 @ 0x3ec2fe0] x264 init info........
32:[libx264 @ 0x3ec2fe0] using SAR=56/57
32:[libx264 @ 0x3ec2fe0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
32:[libx264 @ 0x3ec2fe0] profile High, level 2.2
32:[libx264 @ 0x3ec2fe0] 264 - core 144 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
16:[flv @ 0x3f6f440] FLV does not support sample rate 16000, choose from (44100, 22050, 11025)
16:[flv @ 0x3f6f440] Audio codec mp3 not compatible with flv
32:Output #0, flv, to 'test_1out.flv':
32:  Metadata:
32:    metadatacreator : 32:Yet Another Metadata Injector for FLV - Version 1.832:
32:    canSeekToEnd    : 32:true32:
32:    videosize       : 32:2034203232:
32:    audiosize       : 32:272241432:
32:    lastkeyframetimestamp: 32:31832:
32:    lastkeyframelocation: 32:2313943332:
32:    encoder         : 32:Lavf57.25.10032:
32:    Stream #0:032:: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 608x448 [SAR 56:57 DAR 4:3], q=-1--132:, 32:15 fps, 32:1k tbn, 32:15 tbc32:
32:    Metadata:
32:      encoder         : 32:Lavc57.24.102 libx26432:
32:    Side data:
32:      24:unknown side data type 10 (24 bytes)32:
32:    Stream #0:132:: Audio: mp3 (libmp3lame) ([2][0][0][0] / 0x0002), 16000 Hz, mono, s16p32:
32:    Metadata:
32:      encoder         : 32:Lavc57.24.102 libmp3lame32:
32:Stream mapping:
32:  Stream #0:0 -> #0:032: (h264 (native) -> h264 (libx264))32:
32:  Stream #0:1 -> #0:132: (speex (libspeex) -> mp3 (libmp3lame))32:
16:Could not write header for output file #0 (incorrect codec parameters ?): Function not implemented

问题:

16:[flv @ 0x3f6f440] FLV does not support sample rate 16000, choose from (44100, 22050, 11025)
16:[flv @ 0x3f6f440] Audio codec mp3 not compatible with flv

libmp3lame.c代码

static const int libmp3lame_sample_rates[] = {44100, 48000,  32000, 22050, 24000, 16000, 11025, 12000, 8000, 0
};

例2:

./ffmpeg -re -i test_speex1.flv -vcodec libx264 -acodec libmp3lame -ar 22050 -y -f flv test_1out.flv

能够正常转码。

例3:

./ffmpeg -re -i test_speex1.flv -vcodec libx264 -acodec aac -y -f flv test_1out.flv

能够正常转码。即aac支持16kHz的采样率。

aacenctab.h

/* duplicated from avpriv_mpeg4audio_sample_rates to avoid shared build* failures */
static const int mpeg4audio_sample_rates[16] = {96000, 88200, 64000, 48000, 44100, 32000,24000, 22050, 16000, 12000, 11025, 8000, 7350
};

flvenc.c对采样率和声道的判断

static int get_audio_flags(AVFormatContext *s, AVCodecContext *enc)
{int flags = (enc->bits_per_coded_sample == 16) ? FLV_SAMPLESSIZE_16BIT: FLV_SAMPLESSIZE_8BIT;if (enc->codec_id == AV_CODEC_ID_AAC) // specs force these parametersreturn FLV_CODECID_AAC | FLV_SAMPLERATE_44100HZ |FLV_SAMPLESSIZE_16BIT | FLV_STEREO;else if (enc->codec_id == AV_CODEC_ID_SPEEX) {if (enc->sample_rate != 16000) {av_log(s, AV_LOG_ERROR,"FLV only supports wideband (16kHz) Speex audio\n");return AVERROR(EINVAL);}if (enc->channels != 1) {av_log(s, AV_LOG_ERROR, "FLV only supports mono Speex audio\n");return AVERROR(EINVAL);}return FLV_CODECID_SPEEX | FLV_SAMPLERATE_11025HZ | FLV_SAMPLESSIZE_16BIT;} else {switch (enc->sample_rate) {case 44100:flags |= FLV_SAMPLERATE_44100HZ;break;case 22050:flags |= FLV_SAMPLERATE_22050HZ;break;case 11025:flags |= FLV_SAMPLERATE_11025HZ;break;case 16000: // nellymoser onlycase  8000: // nellymoser onlycase  5512: // not MP3if (enc->codec_id != AV_CODEC_ID_MP3) {flags |= FLV_SAMPLERATE_SPECIAL;break;}default:av_log(s, AV_LOG_ERROR,"FLV does not support sample rate %d, ""choose from (44100, 22050, 11025)\n", enc->sample_rate);return AVERROR(EINVAL);}}if (enc->channels > 1)flags |= FLV_STEREO;switch (enc->codec_id) {case AV_CODEC_ID_MP3:flags |= FLV_CODECID_MP3    | FLV_SAMPLESSIZE_16BIT;break;case AV_CODEC_ID_PCM_U8:flags |= FLV_CODECID_PCM    | FLV_SAMPLESSIZE_8BIT;break;case AV_CODEC_ID_PCM_S16BE:flags |= FLV_CODECID_PCM    | FLV_SAMPLESSIZE_16BIT;break;case AV_CODEC_ID_PCM_S16LE:flags |= FLV_CODECID_PCM_LE | FLV_SAMPLESSIZE_16BIT;break;case AV_CODEC_ID_ADPCM_SWF:flags |= FLV_CODECID_ADPCM  | FLV_SAMPLESSIZE_16BIT;break;case AV_CODEC_ID_NELLYMOSER:if (enc->sample_rate == 8000)flags |= FLV_CODECID_NELLYMOSER_8KHZ_MONO  | FLV_SAMPLESSIZE_16BIT;else if (enc->sample_rate == 16000)flags |= FLV_CODECID_NELLYMOSER_16KHZ_MONO | FLV_SAMPLESSIZE_16BIT;elseflags |= FLV_CODECID_NELLYMOSER            | FLV_SAMPLESSIZE_16BIT;break;case AV_CODEC_ID_PCM_MULAW:flags = FLV_CODECID_PCM_MULAW | FLV_SAMPLERATE_SPECIAL | FLV_SAMPLESSIZE_16BIT;break;case AV_CODEC_ID_PCM_ALAW:flags = FLV_CODECID_PCM_ALAW  | FLV_SAMPLERATE_SPECIAL | FLV_SAMPLESSIZE_16BIT;break;case 0:flags |= enc->codec_tag << 4;break;default:av_log(s, AV_LOG_ERROR, "Audio codec '%s' not compatible with FLV\n",avcodec_get_name(enc->codec_id));return AVERROR(EINVAL);}return flags;
}

从以上代码可以总结出以下几点:

1. 编码类型为AV_CODEC_ID_AAC,flv都支持

2.编码类型为AV_CODEC_ID_SPEEX,采样率只能为16000,并且单声道

3. 采用率为44100,22050,11025的所有编码方式都是支持的

4. MP3的编码方式不支持采样率为16000,8000和5512

总结:

使用ffmpeg转码speex到mp3时,需要指定输出的采样率,否则可能转码合成flv时出问题。

转载于:https://my.oschina.net/u/2326611/blog/681038

ffmpeg speex转换为mp3或者aac相关推荐

  1. 如何使用Sidify Apple Music Converter for mac将 Apple Music 歌曲转换为 MP3、AAC、FLAC、WAV 或 AIFF?

    Sidify Apple Music Converter 是一款很不错的Apple Music 转 MP3 转换器.它将 Apple Music 快速转换为 MP3.AAC.FLAC.WAV 或 AI ...

  2. ffmpeg mp3 转aac

    最近用到ffmpeg,需要把mp3转成aac,调用以下命令参数: ffmpeg -i xxx.mp3 -acodec aac -strict experimental -ab 128k -ar 16k ...

  3. ios端无法播放mp3音频 ffmpeg mp3 转aac

    最近用到ffmpeg,需要把mp3转成aac,调用以下命令参数: 如果不加 -strict experimental ios端可能播放MP3音频失败 ffmpeg -i xxx.mp3 -acodec ...

  4. Ondesoft AudioBook Converter 如何将iTunes有声读物转换为MP3?

    AudioBook Converter mac版是Ondesoft系列中的有声书转换软件,ondesoft audiobook converter for mac可以在Mac OS X上转换并解锁iT ...

  5. m4s格式转换mp3_iTunes音乐转换成MP3和AAC格式

    本次为大家推荐的Sidify Apple Music Converter for Mac是一款受到苹果用户喜爱的音乐转换器,这款音乐转换器能够帮助品过用户将一些音乐歌曲转换成MP3和AAC格式,十分方 ...

  6. 苹果mp3软件_优秀的Apple音乐转换器,将任何iTunes M4P,AAX,AA转换为MP3

    Macsome iTunes Converter是一款优秀的音频转换工具,这款音频转换软件能够帮助大家快速进行音频格式转换,使得您可以自由的播放和分享自己喜爱的音频文件.同时这款软件与大多数音频转换软 ...

  7. 用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式

    用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式 用 python 脚本,结合ffmpeg软件,把当前目录及子目录下的 wma 音频文件转换为 mp3 格 ...

  8. 基于FFMpeg实现音频mp3/aac/wav解码

    编译环境:Ubuntu16.04 64位 交叉编译工具:arm-himix200-linux-gcc 文章目录 1. ffmpeg源码下载 2. 交叉编译 3. 静态库链接 4. 头文件包含 5. 解 ...

  9. 在阿里云的CentOS 6.5 上面安装 timidity++ 和 ffmpeg(含libmp3lame) 实现命令行将midi转换为mp3...

    首先使用yum安装需要的组件 yum install -y automake autoconf libtool gcc gcc-c++ yasm yasm-devel 然后从sourceforge下载 ...

最新文章

  1. Java基础学习总结(13)——流IO
  2. 干货满满的 Python 实战项目,点赞收藏
  3. python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统
  4. java图形包_java流布局图形包
  5. 童话世界区块宠物源码
  6. 在Windows 10中使用TortoiseGit进程gitlab仓库的管理
  7. 字符串中最长不重合子串长度
  8. 2021年朔州市副高考试成绩查询,2021朔州市第二中学校教师成绩查询入口:http://www.shuozhou.gov.cn/ztjs/rlzy/rsks/...
  9. 测量学9_计算机地图绘图基础及数字地图中DEM应用
  10. 日常消费软件记账项目
  11. thinkphp6+vue前后端分离开发验证码总是验证不正确问题
  12. 台式计算机有线无线网卡设置,电脑无线网卡如何使用 电脑外置无线网卡详细使用图文教程...
  13. BUPT Summer Journey #test6 D
  14. 微信问卷调查html,最详细测评!在微信里做问卷调查,这 4 款小程序你一定会用到...
  15. python0.1+0.2不等于0.3_为什么0.1+0.2不等于0.3
  16. MIDAS:混频数据回归
  17. MMD导入unity中使用
  18. 第二次热带近岸出海记录
  19. 浅谈幼儿园计算机论文,浅谈幼儿园科学教育活动中,计算机的辅助教学
  20. PowerManagerService类大致解读

热门文章

  1. 推荐关注这7个高质量的前端公众号
  2. 单调队列优化多重背包
  3. 【工具】switchhost
  4. linux 命令-- touch
  5. 几个想法,有兴趣的可以深入下去
  6. iis 404错误从定向完美方案
  7. Smarty 显示大括号 | 在Smarty中计算数组元素的长度 | Smarty字符串拼接
  8. java 通过cookie判断是否登陆
  9. 在 MongoDB 上模拟事务操作来实现支付
  10. 【IntelliJ】IntelliJ IDEA常用设置及快捷键以及自定义Live templates