ffplay播放usb uvc设备,ffmpeg采集原始数据并保存

列出本机音视频设备ffplay -list_devices true -f dshow -i dummy

播放指定视频设备以及分辨率ffplay -f dshow video="UVC Camera" -s 1920*1080

ffmpeg.exe -f dshow -list_options true -i video="UVC Camera"

ffmpeg -f dshow -vcodec mjpeg -s 1920*1080 -i video="UVC Camera" -vcodec copy ffmpeg-uvc.mjpeg

Python3代码获取数据

#eclipse, python2.7, opencv2.4.6
import sys
import cv2
#获得视频的格式
cnt = 0
for device in range(0, 10):
    stream = cv2.VideoCapture(device)
    grabbed = stream.grab()
    stream.release()
    if not grabbed:
        break
    else:
        #print(stream, dir(stream))
        cnt = cnt + 1
print("------------ video device cnt = %d ------------"%cnt)
#sys.exit(1)
#cv2.CAP_OPENCV_MJPEG
videoCapture = cv2.VideoCapture(0)
videoCapture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
frame_fps = videoCapture.get(cv2.CAP_PROP_FPS)
frame_width = int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_codec = videoCapture.get(cv2.CAP_PROP_FOURCC)
frame_format = videoCapture.get(cv2.CAP_PROP_FORMAT)
frame_size = (frame_width, frame_height)
print("frame_fps:", frame_fps, "frame_size:", frame_size, "frame_format", frame_format)
print("frame_codec_float is ", frame_codec)
frame_codec_int = int(frame_codec)
print("frame_codec_int is 0x%x"%(frame_codec_int))
print("frame_codec_int is " + chr(frame_codec_int&0xFF) + chr((frame_codec_int>>8)&0xFF) + chr((frame_codec_int>>16)&0xFF) + chr((frame_codec_int>>24)&0xFF))
#print("videoCapture", videoCapture, dir(videoCapture))


#fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V') # mp4
#print("fourcc MP4V", cv2.VideoWriter_fourcc('M', 'P', '4', 'V'))
fourcc = cv2.VideoWriter_fourcc('M','J','P','G')
print("fourcc MJPG", cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))

videoWriter = cv2.VideoWriter('opencv_uvc.mjpeg', fourcc, frame_fps, frame_size)
success, frame = videoCapture.read()
cnt=0
while success :
    cv2.imshow("frame", frame)
    cnt = cnt+1
    
    cv2.waitKey(int(1000/int(frame_fps)))
    videoWriter.write(frame)
    success, frame = videoCapture.read()
    
videoWriter.release()
videoCapture.release()
cv2.destroyAllWindows()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告:本课程项目仅供学习参考,请不要直接商用,概不负责任何法律责任。 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习使用FFmpeg开发视频监控项目,并动手操练。具体内容包括: 一、视频监控的架构和流程二、FFmpeg4.3+SDL2+Qt5开发环境的搭建三、FFmpeg的SDK编程回顾总结并操练四、SDL2.0的编程回顾总结并操练五、颜色空间转换RGB和YUV的原理与实战六、Qt5+FFmpeg本地摄像头采集预览实战七、代码封装:摄像头h264/5编码并存储八、Qt5+FFmpeg单路网络摄像头采集预览九、Qt5+FFmpeg单路网络摄像头采集预览录制会看十、onvif与GB/T-28181的简介  音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢?   因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。 所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。   梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。  目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。  
ffmpeg是一个开源的跨平台音视频处理工具,ffplay则是ffmpeg项目中的一个简单实用的音视频播放器。下面是对ffmpegffplay源码的简要解析。 ffmpeg源码结构复杂,其中最核心的模块是libavcodec和libavformat,分别负责音视频编解码和封装格式处理。在ffmpeg源码中,可以找到大量针对各种编码标准(如H.264、AAC等)的编解码算法实现,以及支持各种封装格式(如MP4、FLV等)的封装和解封装算法。 ffplay则是使用ffmpeg库实现的一个命令行音视频播放器。源码中主要包含以下几个模块:主函数模块、基础数据结构模块、事件处理模块、音视频渲染模块等。主函数模块是整个程序的入口,它完成了程序的初始化、命令行参数解析、视频播放器的创建等工作。基础数据结构模块包含了几个重要的结构体,如视频帧结构体、音频帧结构体等,用于保存解码后的音视频数据。事件处理模块负责监听和处理用户的输入事件,如鼠标点击、键盘输入等。音视频渲染模块则是使用底层的音视频渲染库来将解码后的音视频数据进行播放。 在解析ffplay源码时,需要了解ffmpeg中的音视频解码和渲染原理,以及常见的音视频编码标准和封装格式。同时也需要了解音视频播放相关的基本概念和原理,如音频采样率、视频帧率等等。通过仔细阅读源码,可以了解到ffplay是如何使用ffmpeg库进行音视频解码、数据处理和渲染的。同时,源码中也包含了一些音视频播放器的基本功能实现,如播放、暂停、快进、倍速播放等。 综上所述,ffmpeg是一个功能强大的音视频处理工具,ffplay则是基于ffmpeg库实现的一个简单实用的音视频播放器。通过仔细阅读ffmpegffplay的源码,可以深入了解音视频处理和播放的原理和实现方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值