ffmpeg封装h264裸流为mp4文件,视频播放速度特别慢-解决
计算实际帧率时,需要从mp4的moov box中的mvhd中取得timescale和duration,将两者相除得到文件总时长,
再从stsz box中取得sample总数,即总帧数sample_count,用总帧数除以总时长即平均帧率,计算公式为
frame_rate = sample_count/(duration/timescale)
解决方法:通过查询mp4帧率计算得到答案:
AVDictionary* opt = NULL;
av_dict_set(&opt, "video_track_timescale", "90000", 0);
备注:
AVDictionary *opt=NULL;
av_dict_set_int(&opt,"video_track_timescale",25,0);
ret=avformat_write_header(ofmt_ctx,&opt);
而且pts只能+1递增。时间基没有设置也能十分正常播放。
timescale指一秒钟按时钟滴答数计算是多少,如果你设置1000,则一秒钟是以1000计算,你设置成25,那一秒钟就以25计算,所以你pts只能+1。 因为你设置了video_track_timescale所以不需要设置时间基
保存帧:
int mp4savePacket(int status,AVPacket *tmppacket){tmppacket->flags |= AV_PKT_FLAG_KEY; tmppacket->pts +=last_pts; // tmppacket->pts = av_rescale_q((frame_num)*30000, outfmt_ctx->streams[0]->codec->time_base,outfmt_ctx->streams[0]->time_base);//替换了 frame_num++; tmppacket->dts += last_dts; tmppacket->stream_index = 0; tmppacket->duration=1; LOGE(3,"record_status ok,record_status = %d frame index %d %d %d\n",record_status,frame_num, tmppacket->duration,tmppacket->pts); //LOGE(3,"mpacket, 16Byte = %d,%d ",tmppacket.data[0],tmppacket.data[1]); av_interleaved_write_frame(outfmt_ctx, tmppacket); av_free_packet(tmppacket);
ffmpeg封装h264裸流为mp4文件,视频播放速度特别慢-解决相关推荐
- ffmpeg封装h264裸流为mp4文件,视频播放速度特别慢
计算实际帧率时,需要从mp4的moov box中的mvhd中取得timescale和duration,将两者相除得到文件总时长, 再从stsz box中取得sample总数,即总帧数sample_co ...
- FFmpeg解码H264裸流并转换成opencv Mat
感谢雷霄骅博士的在中文视频编解码的付出,http://blog.csdn.net/leixiaohua1020 最近要搞一些视频推流的事情,要解析H264裸流并且获取opencv格式的Mat数据给算法 ...
- 编码为H264裸流并写文件一
为什么说是裸流呢,因为这篇只讲到把视频编码后写入文件,得到的是一个后缀应该为".h264"的文件,只能用PotPlayer等功能强大的播放器才能打开,因为它没有容器信息,需要装在M ...
- 基于FFmpeg H264 + G711A 音视频裸流合并 MP4文件 ( G711A 转 AAC)
https://blog.csdn.net/haiyangyunbao813/article/details/101788264
- ffmpeg实现将H264裸流封装成.mp4或.avi文件
ffmpeg学习历程 由于我是移植到arm-linux环境(海思HI3521A),H264裸流直接从海思的编码模块VENC获取. H264数据流序列: SPS, PPS, SEI, I, P, ...
- RTSP再学习 -- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78214267 既然已经可以通过 RTSP 获取h264 裸流了.那么通过 F ...
- 音视频开发(17)---RTSP再学习 -- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中
RTSP再学习 -- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中 https://blog.csdn.net/qq_29350001/article/details/7821426 ...
- h264 裸流打包成mp4 注意事项
需求: Android 端把网络摄像头的一段正在播放的视频流,截取保存成mp4(按录像按钮时开始录像). 实现: ffmpeg + x264 + sdl; h264 裸流 打包成MP4,在网上也有一大 ...
- H264视频编码成MP4文件
http://blog.csdn.net/firehood_/article/details/8813587 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近需要将H264视频编码成MP4格 ...
最新文章
- C++基本语法的知识体系
- (0038) iOS 开发之Xcode下的DerivedData文件
- 哪个学校计算机系学大物,计算机系各专业专业及名校介绍
- vue教程4:自定义组件的使用
- 分享Spring Cloud分布式微服务架构图
- ubuntu18.04 Qt Creator 安装+ROS Qt Creator Plug-in 插件安装笔记
- C语言内存的动态分配
- wxpython textctrl_wxpython中Textctrl回车事件无效的解决方法
- swift中的category,扩展
- Flask实现REST API之接收POST和GET请求
- 基于LED恒流驱动芯片芯鼎盛TX6122设计的DC-DC降压恒流DEMO
- centos6.5重置密码
- 视频:使用FFMpeg实现视频录制与压缩
- java投屏 dlna 安卓_DLNA投屏
- 描写计算机硬件的英语作文,介绍关于电脑的英语作文
- 手机浏览器onclick事件不能跳转页面
- 网园网络电视 v1.2 官方
- Windows7更改自己的计算机名,方便局域网内的用户识别
- GBase8s数据库以 RESTRICT 方式或 CASCADE 方式删除安全标签对象
- llike与rlike
热门文章
- linux svn可视化,Ubuntu 14.04如何安装可视化SVN
- 2020 java swing jtable 合并_java学生管理系统(界面版)
- mysql中如何将一个表中的部分记录合并,MySQL数据库将多条记录的单个字段合并成一条记录_MySQL...
- java {@link},Javadoc @see或{@link}?
- intel服务器主板芯片,英特尔® 服务器主板 S2600CW2SR
- h5 img js 点击图片放大_5分钟学会h5生成图片海报!
- 建议被降级降薪员工主动辞职?网友炸了!
- Spring Boot 2.5.0 重新设计的spring.sql.init 配置有啥用?
- 505天,240,000字,我总结了Spring Security 的学习曲线,免费送给大家
- 每日一皮:一个难以复现的 bug ...