ffmpeg实现摄像头拉流_基于ffmpeg,实现采集屏幕或摄像头以后向EasyDarwin推流

本文介绍了如何使用ffmpeg库在Windows环境下实现dshow设备的摄像头采集,并通过编码、推流将视频数据发送到EasyDarwin服务器。主要步骤包括分配AVFormatContext、查找输入格式、打开输入流、解析流信息、找到解码器、分配YUV缓冲区、初始化H264编码器、编码图像帧以及通过RTSP协议推流。
摘要由CSDN通过智能技术生成

近期看了一些关于ffmpeg 推流的文章,但是文章中都是基于ffmpeg命令行实现的,觉得不是很灵活,不好和easydarwin 集成到一起工作。于是自己基于ffmpeg 的lib 实现了,采集,编码,推流的过程

ffmpeg 可以支持多种方式的采集,如windows 下的dshow,采集桌面的

gdigrab,linux下有video4linux2 等方式采集。我在windows 下实现的是dshow 设备的采集。

实现的过程如下

1、使用avformat_alloc_context分配一个AVFormatContext 一个结构。

2、使用av_find_input_format  查找dshow 的输入是否存在  如AVInputFormat *ifmt = av_find_input_format("dshow"),此时如果dshow 没有被编译进ffmpeg ,ifmt 等于NULL

3、使用avformat_open_input 打开输入流   avformat_open_input(&pFormatCtx, strUtf8.c_str(), ifmt, &options) ,注意此处,输入的设备名称一定要utf 8 编码的设备名称,否则在中文设备名称下会导致打开设备失败。

4、avformat_find_stream_info 解析流名称,找到输出流的一些格式信息,这个和用ffmpeg 打开视频文件类似。

5、 avcodec_find_decoder  基本上来说是解析具体的图像帧格式,一般是YUV420 或者YUV422 格式,

6、 分配YUV数据的缓冲区 pFrameYUV = av_frame_alloc()

7、初

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值