AV_SAMPLE_FMT_FLTP转为AV_SAMPLE_FMT_S16P(ffmpeg)

时间:2017-03-29 13:20:08
【文件属性】:

文件名称:AV_SAMPLE_FMT_FLTP转为AV_SAMPLE_FMT_S16P(ffmpeg)

文件大小:13.28MB

文件格式:RAR

更新时间:2017-03-29 13:20:08

ffmpeg fltp s16p pcm

AV_SAMPLE_FMT_FLTP转为AV_SAMPLE_FMT_S16P(ffmpeg),在使用ffmpeg解码aac的时候,如果使用avcodec_decode_audio4函数解码,那么解码出来的会是AV_SAMPLE_FMT_FLTP 格式的数据( float, 4bit , planar), 如果我们希望得到16bit的数据(如AV_SAMPLE_FMT_S16P数据),那么我们需要转换一下: 解決方式: 將 samples 由 32bits 转为16bits. 参考 ffmpeg samplefmt.h 若 sample 是 AV_SAMPLE_FMT_FLTP,則 sample 會是 float 格式,且值域为 [-1.0, 1.0] 若 sample 是 AV_SAMPLE_FMT_S16, 則 sample 會是 int16 格式,且值域为 [-32767, +32767]


网友评论

  • 可以用谢谢
  • 正好需要,感谢
  • 刚好可以用上
  • 不错,可以用
  • 正在研究这一块 , 刚好可以用上 ,非常好的资源 。
  • 可以用,谢谢分享
  • 研究中,谢谢分享
  • 很好,不错,正好可以用,谢谢分享!
  • 不错有启发,但是android好像还是用不了
  • 非常好,正式最近继续的。
  • 正好可以用,非常感谢
  • 播放视频中的音频时会出现人物的对话被去掉了,只剩下背景音乐的情况
  • 代码没用上,高版本ffmpeg音频转码问题, 自己解决了解码音频后需要再次转换才能播放的问题 ->swr_convert()对解码后的音频数据进行转换并播放。 int data_size = av_samples_get_buffer_size(_audio->pFrame->linesize, ffmpeg_audio.codec_ctx->channels, _audio->pFrame->nb_samples, ffmpeg_audio.codec_ctx->sample_fmt, 0); swr_convert(_audio->au_co
  • 正好可以用,非常感谢
  • 非常好的资源,恰好用到。
  • 都是c++的,我想要 java 的……继续找了
  • 不错,可以参考
  • 恩 不错 是想要的 3Q