1. 下载FFmepg官网库直接使用即可。
avdevice.lib
avcodec.lib
avfilter.lib
avformat.lib
avutil.lib
postproc.lib
swresample.lib
swscale.lib
// ConsoleFFmpeg.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <string>
#include <stdlib.h> //#define __STDC_CONSTANT_MACROS
#ifdef __cplusplus
extern "C" {
#endif #include "libavcodec/avcodec.h" //编码/解码库
#include "libavdevice/avdevice.h" //特殊设备复合/复制库
#include "libavfilter/avfilter.h" //基于图形的框架编辑库
#include "libavformat/avformat.h" // I/O 格式库
#include "libavutil/avutil.h" //所有FFmpeg库共享的通用代码
#include "libpostproc/postprocess.h" //视频后处理库
#include "libswresample/swresample.h" //音频处理重采样,样本格式转换和混合的库
#include "libswscale/swscale.h" //颜色转换和缩放库
#ifdef __cplusplus
}
#endif void show_dshow_device()
{
AVFormatContext *pFormatCtx = avformat_alloc_context();
AVDictionary* options = NULL;
//设置键值对数组
av_dict_set(&options, "list_devices", "true", 0);
AVInputFormat *iformat = av_find_input_format("dshow");
//ffmpeg -list_devices true -f dshow -i dummy
avformat_open_input(&pFormatCtx, "video=dummy", iformat, &options);
avformat_free_context(pFormatCtx);
} int main()
{
avdevice_register_all();
AVFormatContext *s = avformat_alloc_context();//分配一个结构体 free 释放
AVInputFormat *input = NULL;
AVOutputFormat *out = NULL;
input = av_input_video_device_next(input);
out = av_output_video_device_next(out);
while (out)
{
std::cout << "输出视频设备:" << out->name << " " << out->long_name << std::endl;
out = av_output_video_device_next(out);
}
while (input)
{
std::cout << "输入视频设备:" << input->name << " " << input->long_name << std::endl;
input = av_input_video_device_next(input);
}
show_dshow_device();
AVDeviceInfoList **device_list = NULL;
AVInputFormat * dshow = av_find_input_format("dshow");
AVInputFormat *avInput = NULL;
AVOutputFormat *avOut = NULL;
while (avInput)
{
std::cout << "xxx设备:" << avInput->name << " " << avInput->long_name << std::endl;
avInput = av_iformat_next(avInput);
}
while (avOut)
{
std::cout << "xxx设备:" << avOut->name << " " << avOut->long_name << std::endl;
avOut = av_oformat_next(avOut);
}
AVDeviceCapabilitiesQuery ** query = NULL;
AVDictionary ** device_options;
avformat_free_context(s);
system("pause");
return 0;
} /*
int avformat_open_input ( AVFormatContext ** ps,const char * url,AVInputFormat * fmt,AVDictionary ** options)
*/
/*!
枚举设备
ffmpeg -list_devices true -f dshow -i dummy
等价于如下代码
*/
void listDShowDevice()
{
AVFormatContext *fmtCtx = avformat_alloc_context();
AVDictionary *options = NULL;
av_dict_set(&options,"list_devices","true",0);
AVInputFormat *inputFmt = av_find_input_format("dshow");
if(avformat_open_input(&fmtCtx,"video=dummy",inputFmt,&options) == 0){
avformat_close_input(&fmtCtx);
return;
}
avformat_free_context(fmtCtx);
} /*!
枚举指定图像设备分辨率大小
ffmpeg -list_options true -f dshow -i video=device_name
等价于如下代码
*/
void listDShowDeviceOption(const char *deviceName)
{
AVFormatContext *fmtCtx = avformat_alloc_context();
AVDictionary *options = NULL;
av_dict_set(&options,"list_options","true",0);
AVInputFormat *inputFmt = av_find_input_format("dshow");
char buff[256] = {0};
sprintf(buff,"video=%s",deviceName);
if(avformat_open_input(&fmtCtx,buff,inputFmt,&options) == 0){
avformat_close_input(&fmtCtx);
return;
}
avformat_free_context(fmtCtx);
}

FFmepg 如何在 window 上使用?的更多相关文章

  1. 如何在Window上使用Git

    开始的时候同事只给了一个地址,类似这样:git@111.111.1.1:ABCDEF (1)如何在Windows上使用Git 有一篇博客不错:http://www.tuicool.com/articl ...

  2. 如何在window上把你的项目提交到github

    1.首先你需要在https://github.com/ 上注册一个账户 2.注册成功以后,你需要新建一个repository(储藏室),这个用来存放你要上传的项目 点击中间的带加号的图标就可以新建re ...

  3. window上利用pip安装pandas

    官网推荐的是直接使用Anoconda,它集成了pandas,可以直接使用.安装挺简单的,有windows下的安装包.如果不想安装庞大的Anoconda,那就一步一步用pip来安装pandas.下面我主 ...

  4. 如何在MyEclipse上添加更换JRE

    如何在myeclipse上添加更换JRE 由于兼容性的问题,有些WEB项目会依赖jdk的版本.如果需要更换jdk,那么,知道如何更换JRE的方法很有必要. 一种在myeclipse上添加和更换JRE的 ...

  5. Redis简介以及如何在Windows上安装Redis

    Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...

  6. 如何在Zabbix上安装MySQL监控插件PMP

    PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件.支持Nagios,Cacti.从PMP 1.1开始,支持Zabbix. 下面,看看如何 ...

  7. 关于如何在github上创建团队开发环境

    今天想写个如何在github上创建团队开发环境的博客.送给那些还不知道如何在github上创建团队开发环境的开发人员. 1.首先,当然你要有个github的账号.具体怎么注册我这里就不说了.可以上gi ...

  8. 在window上安装pandas

    之前在ubuntu上安装pandas,用的easy_install.这次在window上同样方法装遇到"unable to find vcvarsall.bat",看一些网上帖子好 ...

  9. 如何在windows7上安装启明星系统。

    启明星系统提供多种安装方式.安装包里自带了setup.exe.每个程序的 install下有在线安装(例如请假应用程序为book,则默认为 http://localhost/book/install ...

随机推荐

  1. 《JavaScript权威指南》读书笔记——JavaScript核心

    前言 这本由David Flanagan著作,并由淘宝前端团队译的<JavaScript权威指南>,也就是我们俗称的“犀牛书”,算是JS界公认的“圣经”了.本书较厚(有1004页),读起来 ...

  2. Servlet--SingleThreadModel接口,RequestDispatcher接口

    SingleThreadModel接口 定义 public interface SingleThreadModel; 这是一个空接口,它指定了系统如何处理对同一个 Servlet 的调用.如果一个 S ...

  3. NW.js 简介与使用

    简介 (1)以网络最流行的技术编写原生应用程序的新方法 (2)基于HTML5, CSS3, JS and WebGL而编写 (3)完全支持nodejs所有api及第三方模块 (4)可以使用DOM直接调 ...

  4. js 生成 UUID

    在项目中遇到要生成 UUID 的需求,第一反应就是有没有原生的生成方法,找了找,发现没有,只能自己建立算法 function. 下面是我用的算法 function uuid(len, radix) { ...

  5. awk -f program.file 功能使用

    一.awk -f program.file 功能使用 一直没有使用过awk的-f功能,感觉鸡肋,不是很实用,更多的是因为没有需求的原因 下面介绍下awk -f的使用方法 awk可以指定默认的文件路径, ...

  6. 将centos_yum源更换为阿里云(官方文档)

    http://mirrors.aliyun.com/help/centos?spm=5176.bbsr150321.0.0.d6ykiD 1.备份 mv /etc/yum.repos.d/CentOS ...

  7. 【转】GAMITBLOBK中固定解、浮点解、约束解、松弛解等解类型解释

    在GAMIT/GLOBK的使用过程中,经常会碰到固定解.浮点解.约束解.松弛解及其相关组合解(如约束固定解)等词汇,对于初学者,一时难以弄明白其中的含义,一般只有按部就班按照教程中,怎么说就怎么弄,不 ...

  8. Elasticsearch 全教程--入门

    1.1 初识 Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架. 但是 L ...

  9. 如何学习java

    1.打牢基础 千里之行始于足下,只有牢固的基础才能走的更远,现在大公司越来越看中一个人的基础如何,他们看中的是你未来的发展潜力,有足够好的基础素养才能实现更多的可能. 2.多敲多练 说实话,光去看代码 ...

  10. PyCharm运行Nosetests并导出测试报告

    1. Pycharm运行Nosetests PyCharm可以使用两种方法,运行Nosetests测试文件: 1) 图形用户界面GUI a) 在PyCharm中,选中测试文件,如Tests/test_ ...