VLC/FFmpeg/LIVE555
文章平均质量分 78
fengbingchun
这个作者很懒,什么都没留下…
展开
-
Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤
Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤原创 2024-01-24 16:57:46 · 799 阅读 · 0 评论 -
FFmpeg命令分隔视频
FFmpeg命令分隔视频原创 2023-11-25 19:58:27 · 1820 阅读 · 0 评论 -
FFmpeg支持多线程编码并保存mp4文件示例
FFmpeg支持多线程编码并保存mp4文件示例原创 2023-08-27 14:02:11 · 1476 阅读 · 0 评论 -
FFmpeg中avfilter模块简介及测试代码(overlay)
FFmpeg中avfilter模块简介及测试代码(overlay)原创 2023-08-20 11:32:52 · 370 阅读 · 0 评论 -
Windows10上VS2022单步调试FFmpeg 4.2源码
Windows10上VS2022单步调试FFmpeg 4.2源码原创 2023-08-19 11:53:13 · 1824 阅读 · 2 评论 -
FFmpeg将编码后数据保存成mp4
FFmpeg将编码后数据保存成mp4原创 2023-08-06 14:06:28 · 2525 阅读 · 2 评论 -
FFmpeg中AVIOContext的使用
FFmpeg中AVIOContext的使用原创 2023-08-06 11:42:05 · 1132 阅读 · 0 评论 -
MoviePy介绍
MoviePy介绍原创 2023-06-03 22:04:39 · 915 阅读 · 0 评论 -
libuvc介绍及简单使用
libuvc是一个用于USB视频设备的跨平台库,构建在libusb之上,编译libuvc时需要依赖libusb。libuvc的License为BSD,最新发布版本为0.0.6,源码地址:https://github.com/libuvc/libuvc libuvc支持在非windows系统上直接编译,因为libuvc源码中会include pthread.h等头文件,因此在windows上并不能直接进行编译。 libuvc支持对导出标准USB视频类(USB Vide...原创 2021-09-15 15:58:32 · 9225 阅读 · 0 评论 -
libusb中的热插拔使用举例
以下为判断usb设备是插入还是拔出状态(热插拔)的测试代码:在Windows下是不支持的,在Linux是支持的,下一个版本可能会支持Windows下的热插拔:#include <chrono>#include <thread>#include <iostream>#include <libusb.h>namespace {boo...原创 2020-04-26 13:57:09 · 4863 阅读 · 20 评论 -
libusb介绍及简单使用
libusb是一个开源的用C实现的,应用程序与用户的USB设备进行通信的库。它是可移植的,对外使用统一的API,支持Windows、macOS、Linux、Android。它是用户模式(user-mode),应用程序与USB设备通信不需要高权限,但是在Android下好像有些接口需要root权限才能调用成功。它支持所有版本的USB协议。它的License是LGPL,源码地址在https://git...原创 2020-04-23 17:35:14 · 38019 阅读 · 11 评论 -
Windows下获取视频设备的一种改进实现
之前在https://blog.csdn.net/fengbingchun/article/details/102806822中介绍过在Windows下获取视频设备列表的方法。其实那种实现方法是有缺陷的,当PC机上连接多个视频设备,并且其中有设备处于启动运行状态时,再调用相关接口获取视频设备可能会崩溃,因为为了获取视频设备列表,它会先以索引0遍历获取视频设备名,然后会执行启动此设备操作。如果此设备...原创 2020-04-22 09:21:19 · 766 阅读 · 11 评论 -
模仿视频抓帧实现
路口或某些场所可能并不会把从摄像头获取到的视频全部存储下来或对所有的视频帧进行处理,即摄像设备是一直处于打开状态,可能会根据需要间隔性的抓取其中一帧,或当某事件触发时才会抓取当前的一帧数据进行处理。这里使用两个线程来模仿此场景。主线程用于开启视频设备,另一个线程在间隔指定时间后抓取当前帧并保存。code较简单,没有使用队列和线程锁。测试代码如下:#include <string&g...原创 2020-04-18 19:01:07 · 826 阅读 · 0 评论 -
Windows下获取usb视频设备vendor id和product id的4种方法
之前在https://blog.csdn.net/fengbingchun/article/details/103507754博文中介绍过如何在Linux获取usb视频设备的vendor id和product id,这里介绍在Windows下获取的方式:1. 打开设备管理器,如下图所示,内置摄像头显示名为”Integrated Webcam”,插入的usb摄像头显示名为”Logitech H...原创 2020-04-01 16:12:22 · 9506 阅读 · 5 评论 -
从FFmpeg 4. 2源码中提取dshow mjpeg code步骤
之前在https://blog.csdn.net/fengbingchun/article/details/103735560 中介绍过在Windows上通过vs2017编译FFmpeg源码进行单步调试的步骤,为了进一步熟悉FFmpeg这里以提取FFmpeg dshow mjpeg源码为例介绍其实现过程及注意事项:FFmpeg是用C实现的,为了加速,个别模块也有对应的汇编实现。之前在https...原创 2020-02-15 19:44:04 · 2229 阅读 · 0 评论 -
Windows上VS2017单步调试FFmpeg源码的方法
之前在https://blog.csdn.net/fengbingchun/article/details/90114411 介绍过如何在Windows7/10上通过MinGW方式编译FFmpeg 4.1.3源码生成库的步骤,那时只能生成最终的库,却不能产生vs工程,无法进行单步调试。GitHub上有个项目ShiftMediaProject/FFmpeg提供了vs工程,下面对编译过程进行说明:...原创 2019-12-27 17:23:37 · 3962 阅读 · 4 评论 -
FFmpeg在Windows上设置dshow mjpeg编码+libyuv解码显示测试代码
之前在https://blog.csdn.net/fengbingchun/article/details/103444891中介绍过在Windows上通过ffmpeg dshow设置为mjpeg编解码方式进行实时显示的测试代码。这里测试仅调用ffmpeg的mjpeg编码接口,获取到packet后,通过libyuv+libjpeg-turbo对mjpeg进行解码并实时显示的测试代码,代码如下:...原创 2019-12-17 16:57:51 · 1868 阅读 · 13 评论 -
视频编解码类型MJPEG数据格式介绍
Motion JPEG(M-JPEG或MJPEG,Motion Joint Photographic Experts Group,FourCC:MJPG)是一种影像压缩格式,其中每一帧图像都分别使用JPEG编码。M-JPEG常用在数字相机和摄像头之类的图像采集设备上。MJPEG即动态JPEG,按照至少达到25帧/秒速度使用JPEG压缩算法压缩视频信号,完成动态视频的压缩。MJPEG压缩标准是由JP...原创 2019-12-13 15:32:07 · 23875 阅读 · 2 评论 -
Linux下获取usb视频设备vendor id和product id的8种方法
在使用usb摄像头获取视频时,有时需要获取此摄像头供应商ID(vendor id, vid)和产品ID(product id, pid),这里在Linux下提供获取vid和pid的8种方法:1. 通过v4l2中结构体v4l2_capability的成员变量card:此变量中会包含设备名、vid、pid信息,其内容例如为“UVC Camera (046d:081b)”,其中”:”前四个字符为vi...原创 2019-12-12 14:20:48 · 8090 阅读 · 2 评论 -
FFmpeg在Windows上通过dshow编解码方式设置为mjpeg并实时显示测试代码
Windows上默认的内置摄像头一般支持两种编解码格式:rawvideo和mjpeg。在调用FFmpeg接口时默认的采用rawvideo。这里通过DirectShow实现为mjpeg进行编解码。通过命令行调用FFmpeg可执行文件:(1). 可获取Windows上连接的视频设备,命令如下:ffmpeg.exe -list_devices true -f dshow -i dummy...原创 2019-12-08 14:52:42 · 3861 阅读 · 3 评论 -
Linux下通过v4l2获取视频设备名、支持的编解码及视频size列表实现
早些时候给出了在Windows下通过dshow获取视频设备信息的实现,包括获取视频设备名、获取每种视频设备支持的编解码格式列表、每种编解码格式支持的video size列表,见:https://blog.csdn.net/fengbingchun/article/details/102806822下面给出在Linux下通过v4l2获取这些信息的实现,代码如下:#include "funs...原创 2019-11-16 18:21:55 · 2454 阅读 · 0 评论 -
通过Windows DShow获取设备名、支持的编解码及视频size列表实现
之前在https://blog.csdn.net/fengbingchun/article/details/102641967中介绍过通过DShow获取Camera视频的实现,即调用VideoCapture类。在OpenCV的VideoCapture类中并没有提供获取Camera设备列表、支持的编解码类型列表及支持的video size列表接口,这里基于已有的VideoCapture类增加对这些的...原创 2019-10-29 19:28:10 · 1846 阅读 · 0 评论 -
OpenCV代码提取:Windows上通过DShow获取Camera视频
在OpenCV 3.1中获取视频的模块在videoio(video input and output module)中,调用VideoCapture类接口,除了videoio模块外还依赖core、highgui、imgproc、imgcodecs四个模块,而OpenCV 2.4.13.6仅需要core、highgui、imgproc三个模块。3.1中的videoio模块其实是将2.4.13.6 h...原创 2019-10-19 19:24:37 · 2307 阅读 · 0 评论 -
FFmpeg中可执行文件ffmpeg用法汇总
FFmpeg中可执行文件ffmpeg用法汇总原创 2019-08-18 19:21:02 · 3481 阅读 · 1 评论 -
FFmpeg中可执行文件ffprobe用法汇总
FFmpeg中可执行文件ffprobe用法汇总原创 2019-08-13 17:11:42 · 7442 阅读 · 0 评论 -
FFmpeg中可执行文件ffplay用法汇总
从https://ffbinaries.com/downloads 下载最新的4.1版本的windows 64位FFplay。目前linux下的只有3.2版本的。FFplay是一个由FFmpeg和SDL库组成的简单媒体播放器,它主要用作各种FFmpeg API的测试。通过执行以下命令将FFplay信息重定位到ffplay_help.txt文件中便于查看,FFplay使用方法为:ffplay.e...原创 2019-07-28 19:31:51 · 1797 阅读 · 0 评论 -
海思3559A上编译OpenCV4.1.0源码操作步骤
1. 从https://github.com/opencv/opencv/releases 下载opencv源码opencv-4.1.0.zip并解压缩;2. 修改最顶层的CMakeLists.txt,在第658行加入一条语句如下,fix error: pngstruct.h:30:18: fatal error: zlib.h: No such file or directory #incl...原创 2019-07-18 15:04:41 · 4279 阅读 · 22 评论 -
海思3559A上编译LIVE555源码操作步骤
1. 从http://www.live555.com/liveMedia/public/ 下载live.2019.06.28.tar.gz,并解压缩;2. 生成静态库,拷贝一份config.armlinux,取名为config.hi3559a,修改后的内容如下:CROSS_COMPILE?= /opt/hisi-linux/x86-arm/aarch64-himix100-linux/...原创 2019-07-17 11:28:23 · 2340 阅读 · 0 评论 -
V4L2获取usb视频流测试代码
Video4Linux2(Video for Linux Two, 简称V4L2)是Linux中关于视频设备的驱动框架,为上层访问底层的视频设备提供统一接口。V4L2主要支持三类设备:视频输入输出设备、VBI设备和Radio设备,分别会在/dev目录下产生videoX、vbiX和radioX设备节点,其中X是0,1,2等的数字。如USB摄像头是我们常见的视频输入设备。FFmpeg和OpenCV对V...原创 2019-07-15 16:57:08 · 3860 阅读 · 0 评论 -
FFmpeg中拉取rtsp视频流并缩放显示测试代码
之前在https://blog.csdn.net/fengbingchun/article/details/92198857中给出过仅拉取rtsp视频流的测试代码,这里在此代码的基础上进行扩充,包括设置使用多线程进行解码,使用sws_scale函数进行图像格式转换和缩放,并通过OpenCV进行显示,测试代码如下:#include "funset.hpp"#include <iostr...原创 2019-07-14 20:30:56 · 4318 阅读 · 1 评论 -
海思3559A上编译FFmpeg源码操作步骤
1.从https://github.com/FFmpeg/FFmpeg/releases下载你需要的版本;2.因为ffmpeg编译选项较多,为了更方便的了解有哪些选项,可将编译选项写入到一个文本文件configure_help.txt中,执行:./configure --help > configure_help.txt打开configure_help.txt,结果如下:...原创 2019-07-12 17:11:50 · 3861 阅读 · 6 评论 -
FFmpeg中一个线程获取视频流一个线程执行scale测试代码
在https://blog.csdn.net/fengbingchun/article/details/94712986 中介绍过如果usb视频流编码类型为rawvideo则无需进行解码,可直接通过av_read_frame获取视频流然后再通过sws_scale进行像素格式转换,当在高分辨率情况下,有时达不到实时显示,会有卡顿,经分析,性能瓶颈在av_read_frame和sws_scale,由于...原创 2019-07-07 19:46:23 · 684 阅读 · 0 评论 -
FFmpeg中编码类型为rawvideo无须解码直接显示测试代码
在https://blog.csdn.net/fengbingchun/article/details/93975325 中介绍过通过FFmpeg可以直接获取usb视频流并解码显示的测试代码,当时通过usb获取到的视频流编码类型为AV_CODEC_ID_RAWVIDEO,像素格式为AV_PIX_FMT_YUYV422,其实编码类型为rawvideo的视频流可以不经过解码操作直接就可进行显示,测试...原创 2019-07-05 08:29:33 · 7669 阅读 · 0 评论 -
FFmpeg中AVDictionary介绍
FFmpeg中的AVDictionary是一个结构体,简单的key/value存储,经常使用AVDictionary设置或读取内部参数,声明如下,具体实现在libavutil模块中的dict.c/h,提供此结构体是为了与libav兼容,但它实现效率低下,在FFmpeg 4.1.3版本中已弃用(deprecated),推荐使用libavutil模块中的tree.c/h来替代,但是在一些代码中或API...原创 2019-06-30 18:03:22 · 65019 阅读 · 0 评论 -
FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(新接口)
在https://blog.csdn.net/fengbingchun/article/details/93975325中给出了通过旧接口即FFmpeg中已废弃的接口实现通过摄像头获取视频流然后解码并显示的测试代码,这里通过使用FFmpeg中的新接口再次实现通过的功能,主要涉及到的接口函数包括:1. avdevice_register_all:初始化libavdevice库并注册所有输入输出...原创 2019-06-28 10:48:19 · 3866 阅读 · 0 评论 -
FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(旧接口)
这里通过USB摄像头(注:windows7/10下使用内置摄像头,linux下接普通的usb摄像头(Logitech))获取视频流,然后解码,最后再用opencv显示。用到的模块包括avformat、avcodec和avdevice。libavdevice库是libavformat的一个补充库(complementary library)。主要涉及到的接口函数包括:注:其中一些接口是被废弃的旧接口...原创 2019-06-28 10:42:12 · 3903 阅读 · 0 评论 -
FFmpeg实现获取USB摄像头视频流测试代码
通过USB摄像头(注:windows7/10下使用内置摄像头,linux下接普通的usb摄像头(Logitech))获取视频流用到的模块包括avformat和avdevice。头文件仅include avdevice.h即可,因为avdevice.h中会include avformat.h。libavdevice库是libavformat的一个补充库(complementary library)。...原创 2019-06-22 14:35:47 · 7151 阅读 · 0 评论 -
FFmpeg中RTSP客户端拉流测试代码
之前在https://blog.csdn.net/fengbingchun/article/details/91355410中给出了通过LIVE555实现拉流的测试代码,这里通过FFmpeg来实现,代码量远小于LIVE555,实现模块在libavformat。在4.0及以上版本中,FFmpeg有了些变动,好像不再推荐使用av_register_all、avformat_network_init...原创 2019-06-15 21:36:43 · 7095 阅读 · 14 评论 -
LIVE555中RTSP客户端接收媒体流分析及测试代码
LIVE555中testProgs目录下的testRTSPClient.cpp代码用于测试接收RTSP URL指定的媒体流,向服务器端发送的命令包括:DESCRIBE、SETUP、PLAY、TERADOWN。1. 设置使用环境:new一个BasicTaskScheduler对象;new一个BasicUsageEnvironment对象;2. new一个RTSPClient对象;3. 向...原创 2019-06-09 18:22:44 · 4860 阅读 · 0 评论 -
流媒体及流媒体传输协议简介
流媒体(streaming media):是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。多媒体兼指多媒体信息和多媒体技术,并以后者居多。多媒体信息是指集数据、文字、图形与图像为一体的综合媒体信息;多媒体技术则是将计算机技术与通信传播技术融为一体,综合处理、传送...原创 2019-06-01 22:26:10 · 9180 阅读 · 0 评论