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++; 声音比较均匀,就用上面的方式就可以。

ffmpeg一些笔记: 代码调试数据的更多相关文章

  1. 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、

    Date()对象: Date对象用于处理日期和时间. 1.1 Math对象  ◆Math.ceil()   天花板函数    向上取整  只取整数,不足则进1 ◆Math.floor()  地板函数 ...

  2. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  4. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  5. ffmpeg从AVFrame取出yuv数据到保存到char*中

    ffmpeg从AVFrame取出yuv数据到保存到char*中   很多人一直不知道怎么利用ffmpeg从AVFrame取出yuv数据到保存到char*中,下面代码将yuv420p和yuv422p的数 ...

  6. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  7. OI中的代码调试

    作为一位OIer,代码调试的能力必不可少. 今天梳理一下自己进行代码调试的方法,下面只是一些个人的总结. 代码的评价有三部分: 正确性 强健性 高效性 检查也应该从这三部分出发. [正确性] 打完代码 ...

  8. 用VScode代码调试Python

    Python扩展支持许多类型的Python应用程序的调试,包括以下一般功能: 观看窗口 评估表达式 当地人 参数 扩大孩子 断点 条件断点 暂停(进入)正在运行的程序 自定义启动目录 要熟悉这些常规功 ...

  9. js脚本代码调试小技巧

    以前写js代码调试代码查看数据是否正确的时候不知道F12(开发者工具),都是alert(xxx)或者console.log(xxx), 现在知道还可以用document.write或者try...ca ...

  10. (转) 从ffmpeg中提取出YUV数据

    有时需要从ffmpeg中提取出YUV数据用作预览,另存什么的. ffmpeg是先解码成YUV, 再以这个YUV作为输入进行编码,所以YUV数据有两种:  解码后的YUV数据, 以及  编码重建的YUV ...

随机推荐

  1. 使用Newtonsoft.Json进行Json与XML相互转换

    XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析好像没啥难度.今天突然发现Newtonsoft.Json中有关于Json和XML互转的方法,所以顺带记录总结一下. 一.关于Newtons ...

  2. redis安装和基础使用

    redis安装 mkdir /server/tools -p cd /server/tools echo 'PATH=/usr/local/redis/src:$PATH' >>/etc/ ...

  3. Redis数据存储和读写

    今天工作群里,有小伙伴问了一个问题,从Redis获取的数据,一会是0,一会是OK. 这引起了我们对Redis数据存储和读写的疑问. 以下是整理的一些技术研究内容. 在 Redis 中,所有的数据存储都 ...

  4. 一款.NET开源、免费、实用的多功能原神工具箱(改善桌面端玩家的游戏体验)

    前言 今天大姚给大家分享一款.NET开源(MIT License).免费.实用的多功能原神工具箱,旨在改善桌面端玩家的游戏体验:胡桃工具箱. 工具箱介绍 胡桃工具箱是一款.NET开源(MIT Lice ...

  5. Scaling Memcache at Facebook

      Memcached 是一种众所周知的.简单的内存缓存解决方案.本文描述了 Facebook 如何利用 memcached 作为构建块来构造和扩展一个分布式键值存储支持世界上最大的社交网络. 1.I ...

  6. 聊聊GLM-4-9B开源模型的微调loss计算

    概述 Github官方地址:GLM-4 网上已经有很多关于微调的文章,介绍各种方式下的使用,这里不会赘述.我个人比较关心的是微调时的loss计算逻辑,这点在很多的文章都不会有相关的描述,因为大多数人都 ...

  7. vue双曲线

    原型 1 <template> 2 <div :class="className" :style="{height:height,width:width ...

  8. Python做点击率数据预测

    点击率(Click-Through Rate, CTR)预测是推荐系统.广告系统和搜索引擎中非常重要的一个环节.在这个场景中,我们通常需要根据用户的历史行为.物品的特征.上下文信息等因素来预测用户点击 ...

  9. 实验一:Wireshark工具的使用

    1.0 [实验目的] 了解Wireshark.TCP协议的概念,掌握Wireshark抓包工具的使用.FTP的搭建和登录,学会对Wireshark抓包结果的分析. 2.0[知识点] Wireshark ...

  10. Windows记录登录日志

    有的时候,我们希望系统记录登录的日志,以便查看有无他人动过自己的电脑. 步骤 1.在windows中搜索并打开"组策略". 2.点击计算机配置-->Windows设置--&g ...