请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

音频 av_buffersrc_add_frame 错误

老师这章开篇说滤镜可以做音视频倍速播放,我上网搜了一些,自己写代码试了下,视频流用了setpts滤镜,结果是好的,最后获取的frame的pts确实按照设置的倍数改变了,音频用atemp, 但是av_buffersrc_add_frame报错-1163346256, av_err2str(-1163346256) 是Not yet implemented in FFmpeg, patches welcome。 老师有时间看看能不能看下哪错了

abuffer 的配置参数是

time_base=1/44100:sample_rate=44100:sample_fmt=fltp:channel_layout=stereo:channels=2

"atempo"的配置参数是tempo=2.0
"abuffersink"的配置参数是

enum AVSampleFormat sample_fmts[] = {AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE};
int64_t channel_layouts[2] = {3, -1 }; 
int channels[2] = {2, -1 }; 
int sample_rates[2] = {44100, -1 }; 
// AV_SAMPLE_FMT_FLTP、 3、 2、 44100 这些参数都是编码器上下文获取的

终端打印音频流信息

Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)

配置过程也没报错,avfilter_link() API 这三个link 也没有报错,但是av_buffersrc_add_frame就报错了,我看
av_log_set_callback(log_callback)中打印的错误信息是

Format change is not supported

错误信息中的format指的是sample_fmt吗?, 可是我配置的都是音频中的AV_SAMPLE_FMT_FLTP,而且解码出来的音频帧format 也是AV_SAMPLE_FMT_FLTP, 这不都是匹配的吗😂😂😂。

正在回答 回答被采纳积分+3

1回答

提问者 慕妹8246037 2024-01-26 16:17:44

解决了,处理音频流的时候忘记调用avfilter_graph_config这个API,疏忽了, 一直在纠结这个format了,浪费了我两天时间

0 回复 有任何疑惑可以回复我~
  • 李超 #1
    👍👍👍
    回复 有任何疑惑可以回复我~ 2024-01-27 13:45:45
  • 提问者 慕妹8246037 回复 李超 #2
    使用滤镜开发倍速播放是比较正确(或者说被大家采用)的方式吗? 我看网上怎么都是选择soundtouch 这个库做音频倍速播放。是滤镜实现的效果不如类似soundtouch这些库吗
    回复 有任何疑惑可以回复我~ 2024-01-31 09:41:10
  • 李超 回复 提问者 慕妹8246037 #3
    ffmpeg 中的滤镜实现倍速播放效果就非常好,没必要使用soundtouch, 如果你不想用ffmpeg 可以使用soundtouch
    回复 有任何疑惑可以回复我~ 2024-01-31 10:49:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信