yang131

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

ffmpeg一些笔记: 代码调试数据

1.AAC,MP3他的解码数据格式不支持,程序中给的是这个AV_SAMPLE_FMT_FLTP,  Screen-Cpature-Recoder的codec-id为AV_CODEC_RAW_VIDEO,virtual-audio-capturer的codec-id为AV_CODEC_FIRST_AUDIO,声音默认的数据格式不支持aac,mp3

2.mp4文件解码 25fps的视频,在写完write header之后,time_base是1/12800
也就是说他的dts/pts 间隔512,比如0,512,1024,1536
公式如下:
1.0 / (512* 1 / 12800) = 25 fps

3.我们在自己组织MP4的时候实际上可以用av_get_time()来定义dts,pts。

      公式为   (av_get_time() / 1000 - enc_start_time) / time_base;     time_base分别对应相应stream的 video,audio的time_base

 

4.在编码的时候,有AVFrame这个变量,而这个根据提示需要把pix_fmt设置成YUV_420P

5. video时CodecContext的有效拷贝:

复制代码
void CopyVideoCodecContext(AVCodecContext* decAvc, AVCodecContext* avc)
    {
        avc->pix_fmt = decAvc->pix_fmt;
        avc->width = decAvc->width;
        avc->height = decAvc->height;
        avc->coded_width = decAvc->width;
        avc->coded_height = decAvc->height;
        avc->gop_size = 30;//decAvc->gop_size;
        avc->max_b_frames = decAvc->max_b_frames;
        avc->sample_aspect_ratio =  avc->sample_aspect_ratio;

        avc->bit_rate = decAvc->bit_rate;
        avc->time_base = decAvc->time_base;
        avc->framerate = decAvc->framerate;

    }
复制代码

 audio时CodecContext的有效拷贝:

复制代码
void CopyAudioCodecContext(AVCodecContext* decAvc, AVCodecContext* avc)
    {
        avc->sample_fmt = decAvc->sample_fmt;
        avc->bit_rate = decAvc->bit_rate;
        avc->sample_rate = decAvc->sample_rate;
        avc->channel_layout =  decAvc->channel_layout;
        avc->time_base = decAvc->time_base;
        avc->channels = av_get_channel_layout_nb_channels(decAvc->channel_layout);
    }
复制代码

 6.关于导出MP4文件 dts和pts取值问题,2种方式:

    1.使用(av_gettime() / 1000.0 - (double)audiostart_time) / 1000.f / av_q2d(ast->time_base);   这种方式视频报错,原因可能是编码时有高延迟导致的帧率不均匀。

     2.给顶一个frameid,然后  dts =(frameid-2)*512,pts =   frameid* 512;  frameid++; 声音比较均匀,就用上面的方式就可以。

posted on   NoNight  阅读(44)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示