2019独角兽企业重金招聘Python工程师标准>>>

// ffmpeg_custom_context.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
extern "C"
{
#include <libavformat/avformat.h>
};#pragma comment(lib, "avformat.lib")int ReadFunc(void* ptr, uint8_t* buf, int buf_size)
{FILE* fp = (FILE*)ptr;size_t size = fread(buf, 1, buf_size, fp);int ret = size;return ret;
}  //这个函数你可以自由发挥。一定要自由发挥。我没有网络流就从文件读了, 一般来说这里不能返回-1 或者0, 否则ffmpeg认为结束、或失败了。 你不想读文件,就直接从内存拷一段数据给buf即可。 接受的网络流、底层上采集卡上来的流都可以在这里,,,,
//一定要注意这个函数,ffmpeg的实现就是一个坑,一不小心就中招了。int64_t seek_func(void *opaque, int64_t offset, int whence)
{int64_t ret;FILE *fp = (FILE*)opaque;if (whence == AVSEEK_SIZE) {return -1;}fseek(fp, offset, whence);return ftell(fp);
}int _tmain(int argc, _TCHAR* argv[])
{av_register_all();int ret = 0;FILE* fp = fopen("./BoyGirls.mp4", "rb");int nBufferSize = 1024 * 1024;unsigned char* pBuffer = new unsigned char[nBufferSize];AVFormatContext* pFormatCtx = NULL;AVInputFormat *piFmt = NULL;AVCodecContext *vcodecCtx = NULL, *acodecCtx = NULL;AVCodec *vdec = NULL, *adec = NULL;int ai = -1, vi = -1;
// Allocate the AVIOContext:AVIOContext* pIOCtx = avio_alloc_context(pBuffer, nBufferSize,0,fp,ReadFunc,0,seek_func);
//step2:探测流格式  ret = av_probe_input_buffer(pIOCtx, &piFmt, "", NULL, 0, 0);if (ret < 0) {fprintf(stderr, "probe failed!\n");goto quit;}else {fprintf(stdout, "probe success!\n");fprintf(stdout, "format: %s[%s]\n", piFmt->name, piFmt->long_name);}
// Allocate the AVFormatContext:pFormatCtx = avformat_alloc_context();
// Set the IOContext:pFormatCtx->pb = pIOCtx;pFormatCtx->flags = AVFMT_FLAG_CUSTOM_IO;
//step4:打开流  if (avformat_open_input(&pFormatCtx, "", piFmt, NULL) < 0) {fprintf(stderr, "avformat open failed.\n");goto quit;}else {fprintf(stdout, "open stream success!\n");}if (avformat_find_stream_info(pFormatCtx, NULL)<0){printf("av_find_stream_info error \n");goto quit;}
//接下来该做什么??? 喂,你要做什么?
quit:avformat_close_input(&pFormatCtx);delete[]pBuffer;return 0;
}

本来已经有一篇了:http://hi.baidu.com/mingyuejingque/item/34db89a7d16fc9706cd4559d

可是新乞丐王子说版式不方便阅读,特别是在上面url的回帖我已经贴了代码,猥琐的百度默认没打开回帖,,,所以新贴了这篇方便大家。感谢祖国!

转载于:https://my.oschina.net/mingyuejingque/blog/488572

ffmpeg 自定义数据来源, 可以是文件,可以是内存,可以是网络, 爱咋的咋的...相关推荐

  1. FFMPEG操作流数据-获取aac音频文件

    多媒体文件是一个容器,在容器里有很多的流(Stream/Track[翻译:轨]),如视频流.音频流.字幕流等. 常见操作 解复用 获取流(AVStream) 读数据包(AVPacket) 解码/编码( ...

  2. AutoCAD .Net 在dwg文件中存储自定义数据

    问题 我需要在 dwg 文件中存储一些信息,以额外描述图形文件并使它能够和其它软件程序集成. 请问怎样才能在 dwg 文件中写入自定义数据并读取? 回答 你可以使用 Named Object Dict ...

  3. matlab与quartus的联合数据交换(NCO与文件数据的混频处理)

    文章目录 背景 再次认识关于DDS的来源 实际案例 官方资料阅读(NCO IP core) 参数原理 通常的步骤 工程实例 MATLAB生成波形txt文件 IP配置 文件命令语法(官方提示) mode ...

  4. 基于svg绘制北京地铁图(官网数据来源)

    北京地铁图 北京地铁图,基于svg开发,支持PC.移动端多种浏览器. 线上开源地址 https://github.com/StavinLi/beiJingSubway 点个赞吧! 项目介绍 技术点 1 ...

  5. clair、anchore、trivy开源数据库的数据来源分析

    数据来源分析 trivy trivy 分了四个仓库进行维护,分别是 trivy 负责提供cli交互程序 trivy-db 负责将处理好的数据打包成blot格式 vlun-list 负责存放处理好的原始 ...

  6. 【论文阅读】You Are What You Do:通过数据来源分析寻找隐蔽的恶意软件

    You Are What You Do: Hunting Stealthy Malware via Data Provenance Analysis NDSS-2020 伊利诺伊大学香槟分校.德克萨斯 ...

  7. H264码流插入自定义数据(SEI字段)

    文章目录 前言 一.H264码流结构 1. 文字说明 2. 码流格式图解 二.自定义数据封装以及H264码流插入 1.将自定义数据封装成SEI字段通用格式即可插入H264码流中 2.编程逻辑 三.附上 ...

  8. phpwind 房产 数据来源经纪人数据 增加个人中介公司调用分类

    phpwind 房产 数据来源经纪人数据 增加个人中介公司调用分类  如图下所示  台州住房网 个人调用继承原来功能不变. 增加中介公司类别功能如下 所有调用字段 agencyid#4 name#路桥 ...

  9. Xamarin.Forms中为WebView指定数据来源Source

    Xamarin.Forms中为WebView指定数据来源Source 网页视图WebView用来显示HTML和网页形式内容.使用这种方式,可以借助网页形式进行界面设计,并利于更新和维护.WebView ...

最新文章

  1. 使用runtime让button传递多个参数
  2. mysql预处理 更新_MySQL 预处理方法更新删除-2018年04月27日00时59分
  3. 使用 collections 来创建类似元组对象
  4. mysql 表查询注意
  5. 日本公司用人工智能帮人做金融交易
  6. 张亚勤:从信息化生存到互联网化生存 百度重构互联网安全防护体系
  7. 基于Away3D实现全景的相机控制器。
  8. Android Activity Launch Mode 启动模式详解
  9. 从零开始撸一个Kotlin Demo
  10. 前端学习(649):编译和解释性语言的区别
  11. SpringBoot入门之上传文件
  12. 用变量a给出下面的定义
  13. map转json,json转对象
  14. irobot擦地机器人故障_不想跪下擦地板!iRobot新神器擦地机器人能否帮到你?
  15. 百度地图API 拾取坐标
  16. 搜狗微信的链接并转换成永久链
  17. 异度之刃2 任务打杂店的帮手去哪获取纯洁石
  18. 2022-2028年全球与中国马铃薯淀粉生产线行业发展趋势及竞争策略研究
  19. (不定期更新)《虚拟现实应用技术》(Yanlz+Unity+XR+VR+AR+MR+AVE+Oculus+SteamVR+眩晕症+5G+云计算+边缘计算+人机交互+立钻哥哥+==)
  20. 卡车智能驾驶进入“后法规”时代

热门文章

  1. 权限系统该如何设计?
  2. Postgres初级教程 insert语句
  3. u盘文件被隐藏了怎么显示出来?数据丢失也能找回
  4. Windows游戏设计(二)- 打砖块游戏 - 使用Win32 SDK
  5. 霍格沃兹全国测试开发火焰杯专业人才大赛
  6. 小米隐私合规检测之违规收集IP地址
  7. 美的NLP算法实习生面试
  8. 账户为计算机用户或计算机提供安全凭证,我的电脑里有2个Administrator文件夹,肿么删除其中多余的一个呢?...
  9. 三菱Q系列plc,11轴标准程序,包含轴回零,相对定位,绝对定位,程序有两轴直线插补
  10. 又发现支付宝和淘宝的设计漏洞