具体原因不清楚,个人猜测可能是以下个原因

  • AVFormatContext刚开始工作时不稳定,可能会丢失开始的画面
  • SurfaceView刚开始工作时不稳定,可能没有绘制开始的画面
  • 网络数据比AVFormatContext解码开始得早,导致丢掉最早的关键帧,所以后面的参照帧也跟着失效
  • 和seek的计算方式有关系,seek有好几种模式,有的模式可能导致跳过当前帧

虽然具体原因不确定,但是围绕这几个猜测,还是把问题解决了

我的想法是,既然是刚开始工作不稳定,那就等初始化完成后,再回滚到0重新播放就是了

解决办法就是在prepare和start执行完毕后,再seek到0进度即可

//进度跳转void FFMpeg::seek(int second) {std::cout << "MediaPlayer seek to " << second << std::endl;//超出时长范围的异常时间if (second < 0 || second >= duration)return;//单位转微妙int64_t us = second * 1000 * 1000;//跳转到任意帧pthread_mutex_lock(&formatContextMutex);//使用BACKWARD和ANY模式,不会跳过当前帧av_seek_frame(avFormatContext, -1, us, AVSEEK_FLAG_ANY);pthread_mutex_unlock(&formatContextMutex);//丢掉旧的数据if (audioChannel)audioChannel->clear();if (videoChannel)videoChannel->clear();}//调用prepare();start();seek(0);

【FFMpeg】视频播放时前几秒只有声音没有视频相关推荐

  1. ffmpeg编译时添加freetype支持,用于在视频中添加文字

    现在对ffmpeg的学习到了往视频指定位置添加对应文字的时候了. 发现添加文字,用的是drawtext滤镜,需要在编译ffmpeg的时候,添加–enable-libfreetype. 为此先编译fre ...

  2. 视频教程-FFmpeg视频播放器开发-C/C++

    FFmpeg视频播放器开发 精通Android应用.音视频开发及JNI,熟悉FFmpeg,主导过多个电商.直播.音视频执法记录仪项目的开发,为企业开发过多款成功的产品.有完整的4G执法记录仪解决方案. ...

  3. 使用IDM下载B站视频出现声音跟视频分离的一种解决方法

    使用IDM下载B站视频出现声音跟视频分离的一种解决方法   在使用IDM下载B站的视频时,经常会出现声音跟视频分离的情况(就是声音一个文件,视频一个文件)如果想看完整的视频跟声音的话可以使用potpl ...

  4. 将秒数转成时分秒(如 /视频播放时长,555秒 就是 09:15) 9分15秒

    http://blog.csdn.net/Hsunpeng/article/details/51446032 sprintff-返回一个格式化的字符串  intval - 获取变量的整数值 //视频播 ...

  5. 【Android FFMPEG 开发】FFMPEG 视频播放进度控制 ( 显示播放进度 | 拖动进度条播放 )

    文章目录 I . FFMPEG 播放进度控制 II . FFMPEG 播放视频 ( 效果展示 ) III . FFMPEG 获取视频时长 IV . FFMPEG 视频播放进度获取 V . FFMPEG ...

  6. 【FFmpeg视频播放器开发】解封装解码流程、常用API和结构体简介(一)

    一.前言 在正式编写 FFmpeg 播放器前,我们需要先简单了解下所要用到的 FFmpeg 库.播放与解码流程.函数和相关结构体. 二.FFmpeg 库简介 库 介绍 avcodec 音视频编解码核心 ...

  7. Android FFmpeg视频播放器三 音频封装格式解码播放

    Android FFmpeg视频播放器一解封装 Android Android FFmpeg视频播放器二 视频封装格式解码播放 视频解封装之后就会得到音频流和视频流,解封状得到的数据是AVPackag ...

  8. sdl+ffmpeg视频播放器

    主机环境:Windows XP SDL版本:SDL2-2.0.3 ffmpeg版本:ffmpeg.2.4 ffmpeg库版本:ffmpeg-20140916-git-b76d613-win32-dev ...

  9. Linux 性能分析的前 60 秒

    Linux 性能分析的前 60 秒 为了解决性能问题,你登入了一台 Linux 服务器,在最开始的一分钟内需要查看什么? 在 Netflix 我们有一个庞大的 EC2 Linux 集群,还有非常多的性 ...

最新文章

  1. Express4.x api 翻译(draft)
  2. Git:如何从远程源主服务器更新/签出单个文件?
  3. android mvp模式例子_关于Android市场这件事,没有饱和的市场只有饱和的思维
  4. java filereader blob_二进制学习——Blob,ArrayBuffer、File、FileReader和FormData的区别
  5. Ubuntu15.04如何添加163源
  6. 如何看待和选择基础设施软件
  7. centos8 挂载ntfs_CentOS 8 挂载NTFS系统磁盘方案
  8. 机器学习与数据挖掘简介
  9. redis基础类型:string
  10. 数控车椭圆编程实例带图_邹军:数控车床任意位置椭圆宏程序的编程
  11. Orthanc+OHIF DICOM Viewer最佳Dicom解析、在线浏览实践指南(解决方案)
  12. java前端学习路线_Java前端需要学什么?Java前端学习路线分享
  13. Vulkan Loader 何时加载 ICD 驱动文件
  14. 禅道项目管理软件配置及使用
  15. 工业污染治理投资完成情况分析(2000—2019年)
  16. 训练集、验证集、测试集以及交验验证的理解
  17. 一个可以把单张静态照片转化成 3D 图片的AI 工具
  18. crosstab交叉表_数据透视之交叉表 crosstab()
  19. 26.什么是梯度爆炸
  20. 免费无需魔法会语音聊天的ChatGPT

热门文章

  1. 网安大国系列 |“躁动”的以色列
  2. Spring | IOC技术之Bean的配置与实例化
  3. Oracle安装报错 [ INS-32010 ] 主目录位置包含无效字符
  4. oracle 安装包校验,Windows上的Oracle 12c安装 - 安装程序验证失败
  5. Ubuntu下如何关闭笔记本显示器但是不断网,可以继续远程连接
  6. element-ui的el-input组件实现只允许输入正整数(禁止以0开头,和输入e、+、-、.)
  7. GIS开源框架:ArcGIS文件地理数据库(GDB)解析与入库
  8. 浅谈浏览器对象——Performance API
  9. 电气论文实现:前推回代在IEEE33节点中的潮流计算实现(matlab,python)
  10. DN-DETR: Accelerate DETR Training by Introducing Query DeNoising阅读笔记