【FFMpeg】视频播放时前几秒只有声音没有视频
具体原因不清楚,个人猜测可能是以下个原因
- 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】视频播放时前几秒只有声音没有视频相关推荐
- ffmpeg编译时添加freetype支持,用于在视频中添加文字
现在对ffmpeg的学习到了往视频指定位置添加对应文字的时候了. 发现添加文字,用的是drawtext滤镜,需要在编译ffmpeg的时候,添加–enable-libfreetype. 为此先编译fre ...
- 视频教程-FFmpeg视频播放器开发-C/C++
FFmpeg视频播放器开发 精通Android应用.音视频开发及JNI,熟悉FFmpeg,主导过多个电商.直播.音视频执法记录仪项目的开发,为企业开发过多款成功的产品.有完整的4G执法记录仪解决方案. ...
- 使用IDM下载B站视频出现声音跟视频分离的一种解决方法
使用IDM下载B站视频出现声音跟视频分离的一种解决方法 在使用IDM下载B站的视频时,经常会出现声音跟视频分离的情况(就是声音一个文件,视频一个文件)如果想看完整的视频跟声音的话可以使用potpl ...
- 将秒数转成时分秒(如 /视频播放时长,555秒 就是 09:15) 9分15秒
http://blog.csdn.net/Hsunpeng/article/details/51446032 sprintff-返回一个格式化的字符串 intval - 获取变量的整数值 //视频播 ...
- 【Android FFMPEG 开发】FFMPEG 视频播放进度控制 ( 显示播放进度 | 拖动进度条播放 )
文章目录 I . FFMPEG 播放进度控制 II . FFMPEG 播放视频 ( 效果展示 ) III . FFMPEG 获取视频时长 IV . FFMPEG 视频播放进度获取 V . FFMPEG ...
- 【FFmpeg视频播放器开发】解封装解码流程、常用API和结构体简介(一)
一.前言 在正式编写 FFmpeg 播放器前,我们需要先简单了解下所要用到的 FFmpeg 库.播放与解码流程.函数和相关结构体. 二.FFmpeg 库简介 库 介绍 avcodec 音视频编解码核心 ...
- Android FFmpeg视频播放器三 音频封装格式解码播放
Android FFmpeg视频播放器一解封装 Android Android FFmpeg视频播放器二 视频封装格式解码播放 视频解封装之后就会得到音频流和视频流,解封状得到的数据是AVPackag ...
- sdl+ffmpeg视频播放器
主机环境:Windows XP SDL版本:SDL2-2.0.3 ffmpeg版本:ffmpeg.2.4 ffmpeg库版本:ffmpeg-20140916-git-b76d613-win32-dev ...
- Linux 性能分析的前 60 秒
Linux 性能分析的前 60 秒 为了解决性能问题,你登入了一台 Linux 服务器,在最开始的一分钟内需要查看什么? 在 Netflix 我们有一个庞大的 EC2 Linux 集群,还有非常多的性 ...
最新文章
- Express4.x api 翻译(draft)
- Git:如何从远程源主服务器更新/签出单个文件?
- android mvp模式例子_关于Android市场这件事,没有饱和的市场只有饱和的思维
- java filereader blob_二进制学习——Blob,ArrayBuffer、File、FileReader和FormData的区别
- Ubuntu15.04如何添加163源
- 如何看待和选择基础设施软件
- centos8 挂载ntfs_CentOS 8 挂载NTFS系统磁盘方案
- 机器学习与数据挖掘简介
- redis基础类型:string
- 数控车椭圆编程实例带图_邹军:数控车床任意位置椭圆宏程序的编程
- Orthanc+OHIF DICOM Viewer最佳Dicom解析、在线浏览实践指南(解决方案)
- java前端学习路线_Java前端需要学什么?Java前端学习路线分享
- Vulkan Loader 何时加载 ICD 驱动文件
- 禅道项目管理软件配置及使用
- 工业污染治理投资完成情况分析(2000—2019年)
- 训练集、验证集、测试集以及交验验证的理解
- 一个可以把单张静态照片转化成 3D 图片的AI 工具
- crosstab交叉表_数据透视之交叉表 crosstab()
- 26.什么是梯度爆炸
- 免费无需魔法会语音聊天的ChatGPT
热门文章
- 网安大国系列 |“躁动”的以色列
- Spring | IOC技术之Bean的配置与实例化
- Oracle安装报错 [ INS-32010 ] 主目录位置包含无效字符
- oracle 安装包校验,Windows上的Oracle 12c安装 - 安装程序验证失败
- Ubuntu下如何关闭笔记本显示器但是不断网,可以继续远程连接
- element-ui的el-input组件实现只允许输入正整数(禁止以0开头,和输入e、+、-、.)
- GIS开源框架:ArcGIS文件地理数据库(GDB)解析与入库
- 浅谈浏览器对象——Performance API
- 电气论文实现:前推回代在IEEE33节点中的潮流计算实现(matlab,python)
- DN-DETR: Accelerate DETR Training by Introducing Query DeNoising阅读笔记