音视频开发-- 坑整理

1. 解码时,一定要用avcodec_parameters_to_context(),将流的参数(stream->codecpar)复制到解码器中,否则某些流可能无法正常解码。

复制代码
    //第七步,给给解码器上下文添加参数, avcodec_parameters_to_context():

    ret = avcodec_parameters_to_context(mp3decodercontext, mp3avstrem->codecpar);

2.解码第一帧前,一定要将解码器的timebase设置为流的timebase(即:dec_ctx->pkt_timebase = stream->time_base),否则提示"Could not update timestamps for skipped samples"。

复制代码
    //for fix "error   Could not update timestamps for skipped samples. "
    mp3decodercontext->pkt_timebase = mp3avstrem->time_base;

实际上上述两个问题的本质是:

AVStream 和 AVCodecContext 得到的信息不一样,严格来说,是AVStream获得的多。具体分析一下:

AVStream 是从 av_find_best_stream获得的,而 AVCodecContext 是从直接通过 avcodec_find_decoder(enum AVCodecID id) 获得的,

而AVCodecID 就是固定的那几种,例如 AV_CODEC_ID_H264,可以想象,ffmpeg内部的实现一定是有限制的,其实现一定是参考 h264的spec 。因此才有了上述两个方法的必要性。

相关推荐
hazy1k4 小时前
K230基础-录放音频
人工智能·stm32·单片机·嵌入式硬件·音视频·k230
小美哥131420 小时前
格式工厂转换视频很慢、Pr视频剪辑导出很慢的优化设置(就用显卡的默认设置即可)
音视频·格式工厂
宠友信息1 天前
仿小红书短视频APP源码:Java微服务版支持小程序编译的技术解析
java·微服务·音视频
bylander1 天前
【论文阅读】通义实验室,VACE: All-in-One Video Creation and Editing
论文阅读·人工智能·计算机视觉·音视频
Black蜡笔小新1 天前
破解工地防盗难题:如何利用EasyCVR实现视频监控统一管理?
运维·音视频
eqwaak01 天前
动态图表导出与视频生成:精通Matplotlib Animation与FFmpeg
开发语言·python·ffmpeg·音视频·matplotlib
Enabler_Rx1 天前
AI辅助制作宣传视频
音视频
PhoenixAI81 天前
保姆级教程-剪映多视频融合及识别文字转换方法
音视频
liaomin4161005692 天前
transformers音频实战02-基于 Speech Commands 数据集的语音识别实战项目全流程
人工智能·音视频·语音识别
_张一凡2 天前
OpenAI Sora 2提示词指南:打造精准视频生成指令
aigc·音视频