![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频开发
代码不好读啊
不擅长编码还硬要挤进软件行业的呆子
展开
-
ffmpeg 源码分析 解码流程
以ffmpeg 3.4 中的ffplay 来举例全局初始化av_register_allavformat_network_initAVFORMAT 设置过程avformat_alloc_contextavformat_open_input 打开流主要是demuxing 解复用avformat_find_stream_info 获取AVFORMAT中codec等信息codec 设置过程avcodec_alloc_context3avcodec_find...原创 2021-04-08 17:17:30 · 366 阅读 · 0 评论 -
ffmpeg 中 rtsp相关源码解析(五)
<<ffmpeg 中 rtsp相关源码解析(四)>>简单介绍了rtp包是通过ff_rtsp_fetch_packet来获取的我们更深入地问一个问题,那么对于vp8 、h264等音视频编解码标准,这些packet又是如何处理的呢?这边就涉及一个非常重要的结构体RTPDynamicProtocolHandler位于rtpdec.h文件中定义如下struct RTPDynamicProtocolHandler { const char *enc_name.原创 2021-02-09 19:34:49 · 707 阅读 · 0 评论 -
ffmpeg 中 rtsp相关源码解析(四)
最近在搞 ffmpeg RTP 向RTMP的转换,所以顺便把ffmpeg相关的源码看了一下没在rtpdec.c中找到找到 rtp demuxer的定义,却在rtsp.c中找到了,而且还找到了sdp demuxer下面给出定义ff_sdp_demuxer 和ff_rtp_demuxer 的定义 位于 rtsp.c中AVInputFormat ff_sdp_demuxer = { .name = "sdp", .long_name = NULL_...原创 2021-02-09 18:03:23 · 682 阅读 · 1 评论 -
webrtc 国内镜像编译
https://blog.csdn.net/freeabc/article/details/106451174转载 2021-02-09 13:47:11 · 418 阅读 · 0 评论 -
ffmpeg rtp转rtmp仿真
ffmpeg -re -i ~/test.webm -vcodec copy -an -f rtp rtp://233.233.233.223:11111 -vn -acodec copy -f rtp rtp://233.233.233.223.11112 > test.sdpffplay -protocol_whitelist "file,http,https,rtp,udp,tcp,tls" test.sdp原创 2021-02-03 21:09:33 · 658 阅读 · 0 评论 -
Mongodb cluster 实践(二) mongoshake
基于mongo-shake-v2.4.16 的docker镜像制作和容器部署脚本放在了https://github.com/lmxlmx/mongoShakeDocker需要注意的是我是基于mongo sharding集群的同步source和destination都是sharding集群mongo sharding 集群的部署方式位于https://github.com/lmxlmx/mongoCluster/tree/dev可用在做mongo 集群间同步时,需要重点注意colle.原创 2020-12-23 21:48:06 · 257 阅读 · 0 评论 -
github 加速骚操作
这篇文章是比较全的加速方法https://www.cnblogs.com/pogyang/p/13797430.html但是当用go mod等一些管理工具时,就差点意思,下面介绍一种骚操作用替换域名的方式将https://github.com替换成国内镜像域名git config --global url."https://github.com.cnpmjs.org".insteadOf https://github.com取消替换git config --global --unset原创 2020-12-18 14:48:07 · 700 阅读 · 0 评论 -
Are you trying to mount a directory onto a file (or vice-versa)? Mac OS docker 目录挂载问题
ERROR: for mysql Cannot start service mysql: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/host_mnt/Users/***/go/src/path/docker/mysql/.原创 2020-12-16 16:47:17 · 925 阅读 · 0 评论 -
nats streaming 消息队列实践(一)
为了保证信息队列的可靠性,nats集群部署,并且在nats集群的基础上部署nats-streaming集群,确保消息不会被漏掉相关部署配置放在https://github.com/lmxlmx/nats-streaming-cluster相关配置参考:(1)https://hub.docker.com/_/nats-streaming/(2)https://docs.nats.io/nats-streaming-concepts/intro这些配置都是英文的,可能需要反复琢磨...原创 2020-11-30 11:04:09 · 723 阅读 · 0 评论 -
Mongodb cluster 实践(一)
为了保证文档存储的可靠性,参考他人的项目,完成了相关的实践相关的配置我放在了https://github.com/lmxlmx/mongoCluster/tree/devmongo的 replicate set 配置参考https://docs.mongodb.com/manual/tutorial/deploy-replica-set/mongo的 sharding 配置参考https://docs.mongodb.com/manual/tutorial/deploy-shard-cluste原创 2020-11-26 11:23:15 · 164 阅读 · 0 评论 -
alfg/nginx-rtmp 构建基于arm64平台的容器
我从alfg/docker-nginx-rtmpfork出来,利用qemu在amd64上构建了arm64的容器,这样就可以很方便地做跨平台的事了,具体请看代码:https://github.com/lmxlmx/arm64-docker-nginx-rtmp原创 2020-09-22 18:22:00 · 1125 阅读 · 0 评论 -
ffmpeg 中 rtsp相关源码解析(三)
下面解析AVOutputFormat ff_rtsp_muxer 结构体与AVInputFormat ff_rtsp_demuxer 结构体类似, ff_rtsp_muxer也是通过函数指针对外暴露一些具体操作。AVOutputFormat ff_rtsp_muxer = { .name = "rtsp", .long_name = NULL_IF_CONFIG_SMALL("RTSP output"), .priv_data_si原创 2020-09-11 23:08:48 · 351 阅读 · 1 评论 -
ffmpeg 中 rtsp相关源码解析(二)
下面先解析AVInputFormatff_rtsp_demuxer结构体ffmpeg中打开流的函数如下所示:int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);函数第三个参数就是 AVInputFormat *fmt,当参数为非NULL时,则该参数由调用者指定,否则由ffmpeg自动获取。因此在读流时,这个参数是绕不开的。.原创 2020-09-09 21:10:36 · 670 阅读 · 1 评论 -
ffmpeg 中 rtsp相关源码解析(一)
ffmpeg中与rtsp协议相关的代码位于libavformat中libavformat/avformat.h文件中声明void av_register_all(void);函数定义位于libavformat/allformats.c中av_register_all调用 register_all函数,从而对多种muxer和demuxer进行注册static void register_all(void){ avcodec_register_all(); /* (de..原创 2020-09-07 22:15:22 · 1172 阅读 · 1 评论 -
x86+nvidia 到 Arm+Atlas适配流程
目前流程已被我发布在华为开发者论坛上请参考博客:https://bbs.huaweicloud.com/blogs/194511转载 2020-08-18 13:44:04 · 586 阅读 · 0 评论 -
arm64v8/nginx 容器以root用户启动,nginx代理无法访问
现象:原因:查看nginx容器日志docker logs <nginx container>127.0.0.1 - - [12/Aug/2020:21:19:54 +0800] "GET /images/8873546/ccc4f102/img/1597238390098_0000000200.jpg HTTP/1.1" 403 153 "-" "Python-urllib/3.6" "-"2020/08/12 21:19:54 [error] 28#28: *651 open原创 2020-08-12 21:28:21 · 1255 阅读 · 0 评论 -
深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解
转载团队里大神的博客,扩大一下影响力,同时也留着学习下https://blog.csdn.net/nan355655600/article/details/106246625转载 2020-06-17 19:48:23 · 888 阅读 · 0 评论 -
通过Launchpad查找PPA仓库
我们通常会通过查找安装命令得知一些仓库名,我们还可以通过Ubuntu Launchpad网站查询更多信息首先登录https://launchpad.net/然后搜索自己关心的ppa,例如我们搜索得到了ppa:jonathonf/ffmpeg-4的信息,这样我们就可以直接查找自己关心的ppa了...原创 2020-06-09 20:21:19 · 1176 阅读 · 1 评论 -
PPA 安装 ffmpeg
对于ubuntu1604 apt 安装ffmpeg 默认版本是2.8需要高版本ffmpeg,但又不想从源码编译ffmpeg时,就需要使用PPA我们以FFmpeg为例sudo add-apt-repository ppa:jonathonf/ffmpeg-4sudo apt-get updatesudo apt-get install ffmpeg这是安装ffmpeg4的命令,当我们想要安装ffmpeg3时,我们谷歌百度了一堆答案,得到了ppa:jonathonf/ffmpeg-3,原创 2020-06-09 20:08:48 · 814 阅读 · 0 评论 -
opencv with ffmpeg 代码解析(三)
前面两篇博文介绍到了CvCapture_FFMPEG,这个类的声明与定义都在cap_ffmpeg_impl.hpp这个头文件里在CvCapture_FFMPEG众多方法中,bool open( const char* filename );void close();bool grabFrame();bool retrieveFrame(int, unsigned char** data, int* step, int* width, int* height, int* cn);bool .原创 2020-06-08 20:50:30 · 2849 阅读 · 0 评论 -
opencv with ffmpeg 代码解析(二)
1、代码入口看opencv的代码,最好的切入点就是对外的头文件 opencv.hppinclude 目录下仅有opencv.hpp文件所有的video read和write相关代码都在modules/videoio这个模块里2、IVideoCapture IVideoWriter 实现在videoio.hpp里声明了VideoCapture VideoWriterIVideoCaptureIVideoWriter 四种类其中IVideoCaptureIVideoW...原创 2020-06-06 19:28:29 · 897 阅读 · 0 评论 -
opencv with ffmpeg 代码解析(一)
有些同学访问github的速度受限,可以通过gitee快速访问到自己想要的开源库,以下为gitee 上的opencv库https://gitee.com/mirrors/opencv如图为opencv项目下文件结构opencv下共有9个文件夹3rdparty 第三方库目录,opencv使用到的第三方库的配置和源码apps opencv可执行app代码cmake opencv cmake 过程中的通用配置data ...原创 2020-06-06 16:10:45 · 376 阅读 · 0 评论 -
opencv 获取rtsp原始码流代码
opencv不仅可以获取解码后的图片数据,还可以获取未经解码的原始码流数据, 这样为使用其他硬解码器提供方便在编译opencv cmake时需要指定 -D WITH_FFMPEG=ONpython 代码如下,需要指定CAP_PROP_FORMAT 为 -1 指定关闭软解码功能需要说明的是,获取的原始码流数据需要通过视频流解码器才能获取到图片数据import cv2rtsp_url = "rtsp://192.167.15.41/g2.mp4"logger.info(rtsp_url)原创 2020-06-06 14:44:14 · 1507 阅读 · 1 评论 -
ubuntu18.04.4 for ARM 安装 docker-compose
现有预编译好的二进制文件docker-compose都是针对x86的,对于ARM版ubuntu,尚没有编译好的docker-compose可供下载,因此需要以其他方式安装,利用pip就可以安装pip install docker-compose...原创 2020-03-03 11:41:07 · 3014 阅读 · 0 评论 -
Atlas300驱动安装失败,提示dkms install failed 以及 driver_ko_install failed
Atlas300驱动和ddk安装参考《Atlas 300 AI加速卡 用户指南 (型号 3000) 02.pdf》、《Atlas 300 AI加速卡 软件安装指南 (run包) (型号 3000) 02.pdf》、《Atlas 300 AI加速卡 DDK安装指南 (Ubuntu, ARM) (型号 3000) 01.pdf》问题ubuntu18.04.4 环境下./npu_ubun...原创 2020-03-03 10:48:01 · 3227 阅读 · 1 评论 -
docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。
在用户权限下docker 命令需要 sudo 否则出现以下问题通过将用户添加到docker用户组可以将sudo去掉,命令如下sudo groupadd docker #添加docker用户组 sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中 newgrp docker #更新用户组 ...原创 2020-02-27 17:59:57 · 120676 阅读 · 53 评论 -
基于arm64 docker的华为Atlas软件运行,Atlas device映射
对于Atlas软件的编译环境的构建方法已在我之前的博客中介绍了https://blog.csdn.net/u011337602/article/details/103909620仅仅是编译还不能满足我们的需求,因为我们还希望能将软件完整部署到华为泰山服务器上,但是有一个问题就是docker如何访问atlas的硬件设备。对于atlas来说,驱动安装成功后,会在服务器/dev目录下找到...原创 2020-01-09 17:27:17 · 1500 阅读 · 0 评论 -
基于arm64v8/ubuntu:18.04搭建华为ATLAS软件编译运行环境
之前介绍了x86上搭建arm64代码编译环境的方法具体如下https://blog.csdn.net/u011337602/article/details/103810657如果还需要做华为ATLAS的代码工程编译,还需要在容器内添加ATLAS host侧lib库1、获取Atlas300-ARM-Ubuntu18.04-V2.0.0.102.020.zip包,可以在华为官网上找到,不...原创 2020-01-09 15:52:09 · 1364 阅读 · 0 评论 -
在x86服务器上 搭建基于docker的arm64程序编译和运行环境
docker 镜像:multiarch/qemu-user-static:registerarm64v8/ubuntu:18.04必要的组件:qemuhttps://github.com/multiarch/qemu-user-static 下载qemu-aarch64-static通常在x86环境上运行arm64的docker是会报错的:报错信息如下st...原创 2020-01-02 20:27:29 · 6679 阅读 · 1 评论 -
ffmpeg两个视频拼接
input文件 file '1.mp4' file '2.mp4'命令 ffmpeg -f concat -i input -c copy total.mp4原创 2019-12-02 17:24:39 · 2711 阅读 · 0 评论 -
图片文件夹压缩转存
对于人工智能项目,有时会保存处理图片,为了避免长时间保存图片导致系统硬盘爆满,需要对保存的图片做压缩转存功能import tarfileimport shutildef pack_remove_dirs(tardirs_list): try: logger.info("Folders will be packed, compressed and removed")...原创 2019-10-31 16:48:57 · 326 阅读 · 1 评论 -
C++循环创建文件所在文件夹
bool ImgprocTask::CheckPathExist(std::string path){ if(access(path.c_str(),0) == -1) { return false; } return true;}void ImgprocTask::CreateDir(std::string filepath){ ...原创 2019-10-22 17:56:32 · 613 阅读 · 0 评论 -
ffmpeg wmv 转MP4 命令
ffmpeg -i test.wmv test.mp4原创 2019-03-06 16:55:34 · 9794 阅读 · 0 评论 -
pycuda安装 cuda.h文件找不到问题
对于安装pycuda安装 cuda.h文件找不到的问题,我之前安装tensorrt遇到过,不过最近我帮同事安装时也遇到了这个问题,但原来的方法无效,只好仔细分析问题,目前分析出来问题原因有三点。(1)cuda.h这个文件的确找不到,只要添加cuda.h的搜索路径即可。 https://blog.csdn.net/u011337602/article/details/81238164...原创 2019-02-26 15:52:16 · 6873 阅读 · 0 评论 -
附带有sink 和src pad的 gstreamer plugins的简单源码分析(一)
对于gstreamer的带有sink和src pad的插件,可以利用GstBaseTransform 和 GstBaseTransformClass这两个结构体来进行插件的编写,这两个结构体定义在gst/base/gstbasetransform.h中。下面我来对这两个结构体进分析。下面typedef语句为两个结构体取了GstBaseTransform和GstBaseTransformClas...原创 2018-12-03 18:35:57 · 1512 阅读 · 2 评论 -
Gstreamer基础知识介绍
由于deepstream是基于gstreamer的,所以要想在deepstream上做拓展,需要对gstreamer有一定的认识。以下主要介绍Gstreamer整体框架和Gstreamer基础概念。一、Gstreamer整体框架gstreamer是一个用于开发流式多媒体应用的开源框架。本身这个框架是为了更好的处理音视频而设计开发的,但gstreamer不限于处理音视频,只要是有明显的数据流...原创 2018-08-07 17:29:27 · 18478 阅读 · 5 评论 -
DeepStream2.0 环境安装
DeepStream2.0环境安装环境:Ubuntu16.04 显卡GTX1060准备:1、nvidia-3962、cuda-9.23、cudnn for cuda-9.24、tensorrt 4.05、opencv3.46、gstreamer1.87、deepstream2.0其中1-4项的安装已经在我的博客上有所总结,请参考以下两篇博客,不再...原创 2018-08-06 20:04:43 · 2870 阅读 · 27 评论 -
基于OpenCV+QT的实时视频传输显示工具(二)
为了增加一点趣味性,本小节做一个简单的人脸捕捉的例子,这也为将来做视频的人脸捕捉打基础,毕竟视频实际上就是一张张图片。这个例子的核心代码如下,opencv提供了haar和lbp人脸特征识别的标本,大家可以按照如下所示进行改造。代码流程如下:(1)将彩色图转成灰度图(2)将图片进行直方图均衡化处理(3)通过CascadeClassifier进行人脸探测(4)根据第(3)步获取...原创 2018-06-22 22:54:18 · 3193 阅读 · 3 评论 -
基于OpenCV+QT的实时视频传输显示工具(一)
时常会找一些比较有趣的东西来看,但一般都是看完尝试了事,没怎么做出总结过。现在想想真是可惜,这么多年来,看得东西也不少,但是留下的印记却很少,结果就是找工作时,却拿不出更多的加分项。所以从现在开始,还是做个有心人,慢慢积累,只有自身价值提升了,并且让人看得到,才能获得自己想要的那份报酬。现在先从OpenCV的使用开始。我始终觉得学习一样东西,单纯学习这个东西是得不到提升的,必须要找到一个立意,...原创 2018-03-14 22:33:32 · 13807 阅读 · 2 评论 -
ffmpeg 推流命令
ffmpeg -re -i test.mp4 -f flv rtmp://127.0.0.1:1935/stream/123原创 2019-09-06 20:14:48 · 1060 阅读 · 0 评论