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);
https://blog.csdn.net/jacke121/article/details/74011625
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格 ...
最新文章
- Firefox 将导入 Windows 根证书,避免与杀毒软件的冲突
- docker 部署mysql服务之后,执行sql脚本
- java新建测试程序_java – 如何创建一个CloseableHttpResponse对象来帮助测试?
- HTML5开发手机应用--viewport的作用--20150216
- MemoryStream类
- Miniconda管理多版本python环境
- SAP Fiori Lead应用中Accept按钮显示隐藏的逻辑
- 让软件自己写软件,英特尔的机器编程会取代程序员吗?
- 2011 端午后,杭州支付宝
- mysql门派年龄最大的人_MySQL高级 第12章练习
- 子慕谈设计模式系列(一)
- jQuery学习笔记03
- 软硬件版本号命名规范及原则
- 浮层引导页Activity
- [走过的路]联想时光——人艰不拆(店员篇+推销员篇)
- OpenGL ES:相机预览添加滤镜效果
- [转载]《博客园精华集》WF筛选结果(共39篇)
- 关于gitlab启动后,浏览器git clone 还是localhost问题记录
- 业务范围(business area)
- SQLyog通过excel导入数据