(原)关于ffmpeg使用custom io-context遇到的一些坑


int FileSource::ReadSeek( int offset, int whence){
// 参数检查.
int ret=-;
if (offset > m_nFileSize || !m_file.is_open()){
LOGI("seek offset=%d> file size:%d,or file is close.",offset,m_nFileSize);
return -;
}
if (m_bIsMultithread)
m_mutex.Lock();
std::ios_base::seekdir way = (std::ios_base::seekdir)whence;
// 进行seek操作.
if (whence != AVSEEK_SIZE) {
//先把错误位置给
m_file.clear();
//////////////////////////////
switch(whence){
case SEEK_SET:
//基于文件开始位置进行seek跳转
m_file.seekg(offset,std::ios_base::beg);
// ret = offset;
break;
case SEEK_CUR:
//基于文件当前位置进行seek跳转
m_file.seekg(offset,std::ios_base::cur);
// ret=m_file.tellg();
break;
case SEEK_END:
//基于文件尾的位置进行seek跳转
m_file.seekg(offset,std::ios_base::end);
// ret=m_file.tellg();
break;
}
if (m_file.good())
ret = m_file.tellg();
else
ret = -;
}else{
//等于AVSEEK_SIZE,这个主要是用于获取文件大小
// The whence-parameter has one more option than fseek: AVSEEK_SIZE.
// When this option is passed to the seek function it should return the file size (if possible).
// If its not possible, the function may return and do nothing -1. In my implementation pStream->Seek(...) will fail with AVSEEK_SIZE and SeekFunc will return -1.
ret=m_nFileSize;
}
if (m_bIsMultithread)
m_mutex.Unlock();
return ret;
}
(原)关于ffmpeg使用custom io-context遇到的一些坑的更多相关文章
- [原] Android上使用native IO
首先, 官方google play对APK大小有限制: 50M.( https://support.google.com/googleplay/android-developer/answer/113 ...
- [原]how to view custom provider's events(collected without provider registered) by wpa
最近想使用etw作为高效的日志机制,也不想暴露机密信息(关键信息在msnifest文件中).也就是不能在客户机器上注册自己的provider,那需要manifest文件.这样采集回来的.etl文件如果 ...
- spring整合mybatis使用<context:property-placeholder>时的坑
背景 最近项目要上线,需要开发一个数据迁移程序.程序的主要功能就是将一个数据库里的数据,查询出来经过一系列处理后导入另一个数据库.考虑到开发的方便快捷.自然想到用spring和mybatis整合一下. ...
- 使用ffmpeg视频编码过程中踩的一个坑
今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果: ...
- 使用ByteArrayOutputStream解决IO乱码问题的踩坑记录
经过:今天在用s3接口做ceph储存的时候,要实现一个io下载的接口.需要把InputStream转成byte[],一开始,是的写法是这样的: byte[] buf = new byte[(int) ...
- vue-socket.io使用教程与踩坑记录
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/12018866.html,多谢,=.=~ (如果对你有帮助的话请帮我点个赞啦) 请先允许我狠狠吐个 ...
- FFmpeg内存IO模式(内存区作输入或输出)
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10318145.html 所谓内存IO,在FFmpeg中叫作"buffered ...
- ffmpeg的IO操作
ffmpeg 可以通过IO操作将数据读取和存储在文件或网络中 作为数据的读取和写入地址,数据被存放在file,http, ffmpeg 不仅可以编解常用的音视频格式,还可以将数据导入/导出到各种媒介中 ...
- ffmpeg最全的命令参数
Hyper fast Audio and Video encoderusage: ffmpeg [options] [[infile options] -i infile]... {[outfile ...
随机推荐
- 潭州课堂25班:Ph201805201 django 项目 第三十课 linux 系统迁移 (课堂笔记)
进入虚拟环境, 冷冻 把安装环境放到这个文档中 pip freeze >> requirements.txt 在另一台机器中 pip install -r requirements.txt ...
- python 函数递归与匿名函数
1.什么是函数递归? 函数递归调用(是一种特殊的嵌套调用):在调用的函数过程中,又直接或者间接的调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调每进入下一层递归问题的规 ...
- BZOJ2670 : Almost
求出前缀和$s[]$,那么区间$[l,r]$的几乎平均数$=\frac{s[r]-s[l-1]}{r-l}$. 若只有一个询问,那么可以维护$(i,s[i-1])$的凸壳,在凸壳上二分点$(i,s[i ...
- ES6 Set 和 Map
ES5 模拟Set 与 Map 集合 Set 常用于检查对象中是否存在某个键名 Map集合常被用于获取已存的信息 所有对象的属性名必须是字符串,那么必须确保每个键名都是字符串类型且在对象中是唯一的 数 ...
- vue使用element-ui的el-input监听不了回车事件
原因 今天在使用element-ui时,el-input组件监听不了回车事件,如下代码没有想要的效果: <el-input class="search-input" plac ...
- log4j2自定义Appender(输出到文件/RPC服务中)
1.背景 虽然log4j很强大,可以将日志输出到文件.DB.ES等.但是有时候确难免完全适合自己,此时我们就需要自定义Appender,使日志输出到指定的位置上. 本文,将通过两个例子说明自定义APP ...
- spring boot 中添加mongodb支持
1.添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- 遇到一个git branch很奇怪的问题
最近,同事做了一个自动化的打包平台,但我发现里面的分支竟然有重复的,还有一些已经删除的branch. 比如,我已经删除了一个 test分支,在工程 game 目录下(已输入 git pull),输入: ...
- javascript 回调函数定义 模板
函数定义: function callfun(in_param,callback) { console.log(in_param); var out_param='bbbbb'; return (ty ...
- 使用Git Subtree在多个项目中共用同一个子项目
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8427796.html 场景一:已有一个大项目,需要把其中一部分内容独立出来作为共用子项目,被其他项目引用 一: ...