FFMPEG对USB摄像头视频进行UDP推流

FFMPEG对USB摄像头视频进行UDP推流

利用FFMPEG对USB摄像头进行推流直播,采用命令行的方式无论是rtmp还是udp推流,延迟均较为严重,延迟3-6秒。小白一枚,无奈之下参考雷神和众多网友的文章,反复折腾,终于发现使用奥尼摄像头进行UDP推流可以实现视频传输延迟<1秒.

程序代码


```cpp
```/*
 * 目的:测试USB摄像头采用 UDP 推流
 * 注意:① 摄像头使用video=aoni webcam A30,其本身是mjpeg格式,不转码直接推流;
 *      ② 配置摄像头的帧数为15帧(帧率大延迟严重),忽略PTS部分,因其压缩包自带了pts;
 *      ③ 播放命令:ffplay udp://localhost:6666 ,不要使用ffplay -vcodec mpeg2video udp://localhost:6666;
 *		指定了播放解码器会出错,原因可能是解码器本身不匹配;
 *      ④ UDP 推流无需服务器,直接推,直接播。
 * 运行结果:延时 < 1秒 。
 */


#include <stdio.h>
#include <time.h>

#define __STDC_CONSTANT_MACROS

#ifdef _WIN32
//Windows
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
#include "libavutil/time.h"
};
#endif

//Output YUV420P 
#define OUTPUT_YUV420P 0
#define USE_DSHOW 0

//枚举摄像头
void show_dshow_device(){
	AVFormatContext *pFormatCtx = avformat_alloc_context();					// (pFormatCtx - ★★★)
	AVDictionary* options = NULL;
	av_dict_set(&options,"list_devices","true",0);
	AVInputFormat *iformat = av_find_input_format("dshow");
	printf("========Device Info=============\n");
	//参数:上下文、文件名、文件格式、选项
	//作用:参数挂载,打印显示系统摄像头信息
	avformat_open_input(&pFormatCtx,"video=dummy",i
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值