ffmpeg音视频开发
文章平均质量分 60
基于FFmpeg进行的音视频开发
qq_34732729
这个作者很懒,什么都没留下…
展开
-
win10下使用CMake编译screen_capture_lite
源码地址:https://github.com/smasherprog/screen_capture_lite编译过程:然后 文件夹下,有sln文件。 用VS2017打开选择screen_capture_lite, 右键-->生成, 但是会报错。就需要更改代码:GetWindows.cpp 文件中,34行代码,更改入下://std::transform(std::begin(w.Name), std::end(w.Name), std::begin(w.Name),.原创 2021-03-31 10:53:36 · 327 阅读 · 2 评论 -
objs/Makefile:540: recipe for target ‘objs/src/core/ngx_murmurhash.o‘ failed
问题描述:本地虚拟机Ubuntu16.04系统中,搭建nginx-rtmp服务,成功。参考链接。然后就想着在云服务器上,也搭建一套,这样,就不限于局域网内推拉流了。云服务器系统是 :Linux iZj6c2ewtk1bhux0vwm2imZ 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux然后就按照上面的操作,选择nginx-1.12.1,进行配置。.原创 2021-01-15 13:49:37 · 1101 阅读 · 0 评论 -
win10,安装OBS-安装nginx-推流-VLC拉流
前言由于在研究基于阿里云直播平台,实现PC端推流与播放,故有此篇。根据阿里云官网介绍,需要借用OBS工具进行推流,当然后续肯定是自己开发客户端,现在主要是跑通流程。系统环境Windows10下载OBSOBS地址:https://obsproject.com/安装OBS静静等待一会配置OBS根据需求,对OBS进行配置。我这里主要想:录制屏幕,然后推流到服务器,所以操作如下:下图,不需要很大的分辨率,所以选择1280*720;录制屏幕而已,不需要很高.原创 2021-01-07 17:19:48 · 1947 阅读 · 2 评论 -
opencv编辑视频案例
基于opencv3.4.1, 开发的视频编辑器,基本功能都已经实现了,如下图所示:具体功能:进度条,控制左上角视频的播放进度,支持随意位置调整。 开始-结束:用于控制剪裁输出的视频起止点。 打开:打开一个视频文件,并呈现在左侧。 播放/暂停:开始播放左上角视频,或者暂停播放左上角视频。 截图:截取一张图片,即右侧合成图。右侧为目标图,即包含原图和水印图。 可以添加水印图、剪裁视频大小、调整视频亮度、对比度、支持高斯和拉普拉斯滤波、调整视频宽高、支持图像旋转(90-180-270)、支持原创 2020-12-29 18:06:45 · 500 阅读 · 0 评论 -
av_interleaved_write_frame(fmt_ctx, &enc_pkt);返回-22
av_interleaved_write_frame(fmt_ctx, &enc_pkt);返回-22,原因之一:各处寻找答案,都说是:pts和dts的问题。我跟踪了pts和dts, 发现这两个值第一次是随机一个相等数,比如pts = dts = 486400. 然后第二次就是pts=dts = 487424, 可以看出,这是递增了1024.所以,并不是pts和dts出了问题。毕竟官网的 音频编码和视频编码 的例子,最后也没有处理pts和dts。原因之二:enc_pkt.s.原创 2020-10-24 09:22:12 · 1759 阅读 · 0 评论 -
avformat_open_input(); 返回-5
先初始化 输入封装格式上下文ps 和 输入格式 fmt,然后打开文件。返回值为 -5。ps = avformat_alloc_context();fmt =av_find_input_format("dshow");int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);====================解决办法=..原创 2020-10-09 14:01:52 · 4530 阅读 · 3 评论 -
Linux下编译ffmpeg 3.3,包含aac, x264, x265库
参考连接:https://www.cnblogs.com/jimodetiantang/p/9160183.html一开始,我是直接从2.3节开始的。然后坠入深坑。所以如果有朋友需要编译带 aac x264, x265的话,强烈推荐上面链接。我这里仅记录了错误的过程,和自己是如何跳出坑的过程。1、libfdk-aac 安装完成。2、但是编译libvpx 出错:ht-dong@ubuntu:~/ffmpeg/ffmpeg/libvpx$ ./run.sh ./configure: 273:原创 2020-08-10 16:30:37 · 827 阅读 · 0 评论 -
Linux下编译ffmpeg-4.1,arm32, arm64, x86
目录目标准备工作编译arm版本遇到的问题及解决方案arm32, arm64, 成功编译x86目标编译ffmpeg-4.1版本的 arm32, arm64, x86的动态库。准备工作新建目录,mkdir ffmpeg, cd ffmpeg, 下载ffmpeg4.1的源码,并解压。http://ffmpeg.org/releases/# 下载wgethttp://ffmpeg.org/releases/ffmpeg-4.2.3.tar.bz2 # 解压ta.原创 2020-08-03 15:45:14 · 2388 阅读 · 1 评论 -
Linux下编译ffmpeg-3-3,arm,arm64,x86
目标在 Linux上编译一套ffmpeg,arm32/arm64和x86版本,基于ffmpeg4.2.3版本源码编译。结论ffmpeg的版本,一定要跟android-ndk-rxx版本对应,否则,后果不堪设想。永远不要追新版本。实践证明:ffmpeg4.2.3只编译成功了arm32位的,arm64位的根本不会生成。使用的android-ndk-rffmpeg4.2.3 +android-ndk-r21b 会出现的问题 ffmpeg4.2.3 +android-ndk-r14b 会出现的..原创 2020-07-31 19:12:51 · 2626 阅读 · 0 评论 -
音频重采样——相关链接
https://www.jianshu.com/p/bf5e54f553a4——FFmpeg音频重采样API(libswresample)介绍:记录了非常详细的重采样过程,并且有示例。https://www.jianshu.com/p/fd43c1c82945——PCM音频数据介绍:详细的音频数据格式,信息,存储。https://www.jianshu.com/p/d3edb368b36c——FFmpeg AAC编码介绍:记录了如何编码AAC文件...转载 2020-07-20 17:58:52 · 295 阅读 · 2 评论 -
Linux下,Nginx-rtmp-module 搭建流媒体服务器
目录前言环境准备及编译测试遇到的问题前言RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。——摘录自百度。 如果大家想对RTMP有更深的认识,可以参看这篇文章:《带你吃透RTMP》。本文要原创 2020-06-16 22:37:39 · 1586 阅读 · 0 评论 -
linux下编译与运行crtmpserver
目录前言环境准备及编译测试前言RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。——摘录自百度。 如果大家想对RTMP有更深的认识,可以参看这篇文章:《带你吃透RTMP》。本文要处理的是:用c原创 2020-06-16 21:54:45 · 490 阅读 · 0 评论 -
基于ffmpeg库,开发录音机——内部声音和外部声音
想要录制系统的声音,既然研究ffmpeg这么久,那就拿这个练练手吧。这一练手,花了两天的时间。到底是对ffmpeg不够熟悉。结果如下:用MFC(没饭吃)开发的。录制系统声音: 比如某歌曲特别好听,想下载下来,但是需要会员,这时候,如果能边听边录制下来,就好了。 (买卖盗版可耻,但自己用,还是可以的吧,毕竟你都允许浏览器播放了是吧。) 此程序正好实现了这个功能。录制且无杂音。 想录制高清的话,修改如下参数: 1》 bit_rate = 64000, 128000...原创 2020-06-05 16:22:49 · 1369 阅读 · 3 评论 -
ffmpeg最后释放的时候,出现的各种崩溃
记录,音频编码线程,视频编码线程,合成输出线程,每次结束,运行到最后一个 } 时,就会出现下面的崩溃。该释放的,都加了判断,才释放的,应该不会有问题吧。有时候还会提示avformat.dll的崩溃。解决方案:设置如下,然后就没出现过了。...原创 2020-04-10 18:09:40 · 2786 阅读 · 2 评论 -
wireshark抓取RTP流
用RTP封装H264并发送,不清楚是否发送成功的话,那么就用wireshark抓取一下流,看看是否有抓到流。安装wireshark先打开wireshark准备接收,然后打开发送rtp流的demo,开始发送。因为RTP发送是基于UDP的,所以看到的Protocol显示的UDP,选中一行,点击右键,选择Decode As...弹出如下窗口,将【当前】设置成RTP,(快捷键,输入R,就能...原创 2020-03-28 15:28:56 · 6217 阅读 · 0 评论 -
RTP封装H264——学习笔记
逻辑关系: SODB+RBSP trailing bits =RBSPNAL header(1 byte)+ RBSP = NALU...原创 2020-03-23 19:24:38 · 929 阅读 · 3 评论 -
解决:fatal error C1083: 无法打开包括文件:“libavutil/samplefmt.h”: No such file or directory 的问题
fatal error C1083: 无法打开包括文件:“libavutil/samplefmt.h”: No such file or directoryVS2010 MFC开发录制屏幕demo。debug编译,没有问题,改成release,却出现问题:原因:一开始,这里丢了一个分号。添加之后,还是找不到.然后提示,这里找不到。其实include文件里面都有这些文件。到属...原创 2020-03-16 10:40:03 · 3629 阅读 · 0 评论 -
视频基础知识——编码时,帧率、码率、分辨率之间的联系
本文主要补充基础概念,在设置编码器的时候,参数设置不对,录制的屏幕就会出现花屏。所以梳理了基础知识,就知道哪里设置不对了。如下是ffmpeg自带的sample,encode_video的例子,选取H264的编码器,进行编码。const AVCodec *codec;AVCodecContext *c= NULL;/* find the mpeg1video encoder */c...原创 2020-03-13 22:19:49 · 8438 阅读 · 4 评论 -
ffmpeg 的各种声明已被否决,整理
目前用ffmpeg 3.4version ,在Windows上开发。1、warning C4996: 'AVStream::codec': 被声明为已否决2、 warning C4996: 'avpicture_get_size': 被声明为已否决3、warning C4996: 'avpicture_fill': 被声明为已否决4、warning C4996: 'av...原创 2020-03-14 20:21:26 · 4636 阅读 · 0 评论 -
libfdk_aac在Windows下编译
由于ffmpeg找不到编码器AAC,格式为AV_SAMPLE_FMT_S16P,然后,又没有掌握重采样,就是从AV_SAMPLE_FMT_S16P重采样为:AV_SAMPLE_FMT_FLTP。 所以重新编译一份aac, 用这个试试。如果你看到这篇文章,你会重采样,请给我留言呀,我向你请教一下这个过程 。下面记录编译过程:1.先下载源码:官网路径:https://github.com...原创 2020-03-13 22:23:28 · 1437 阅读 · 5 评论 -
使用ffmpeg开发,遇到的问题,整理
Windows10下开发,ffmpeg3.4问题一:pCodecOut_Audio = avcodec_find_encoder_by_name("libfdk_aac");//什么也没有,打不开 pCodecOut_Audio = avcodec_find_encoder(AV_CODEC_ID_AAC); //可以打开问题二:下面这个参数设置,S16不能打开,RLTP才...原创 2020-03-25 20:45:11 · 3702 阅读 · 2 评论 -
解决:avformat_write_header();打开失败的问题
打开成功 :avio_open(&pFormatCtx_Out->pb, outFileName, AVIO_FLAG_WRITE);但是,写头,失败。返回 -22[mp4 @ 02ae5a00] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVSt...原创 2020-03-05 19:44:21 · 7023 阅读 · 0 评论 -
ffmpeg新旧对照一览表
从FFmpeg 3.0 开始 , 使用了很多新接口, 在一些基本用法上,编译会看见很多的warning,类似 “ warning: ‘AVStream::codec’ is deprecated (declared at /usr/local/ffmpeg/include/libavformat/avformat.h:880) [-Wdeprecated-declarations] ...转载 2020-03-05 14:30:42 · 1275 阅读 · 2 评论 -
解决:avcodec_open2(c, codec, NULL) 打开失败 的问题
avcodec_open2(c, codec, NULL); 打开失败,返回-22后来找到原因:是因为 codec 没有找到编码器正确(大致)流程:av_register_all();avcodec_find_encoder()/avcodec_find_by_name(); //找到编码器,后面的函数不好使avcodec_alloc_context3(); // 初始化...原创 2020-03-03 09:25:36 · 11120 阅读 · 5 评论 -
解决: avformat_open_input() 返回失败 的问题
av_rigister_all();//一定要添加;avformat_open_input(&ifmt_ctx1, in_file1, NULL, NULL);// 忘记添加上面的那段原创 2020-03-02 09:13:05 · 7058 阅读 · 1 评论 -
解决:fatal error C1189: #error : missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
fatal error C1189: #error : missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS是因为没有包含需要的某个头文件。比如在使用ffmpeg开发的时候,忘记添加 #include "include/libavformat/avio.h" // 相对路径或者 把路径写错了:#i...原创 2020-02-29 13:33:00 · 3395 阅读 · 0 评论 -
视频基础知识——学习笔记
泛娱乐:可以b帧 实时互动,不能使用b帧,因为解码当前帧需要后面帧传输过来,如果网络不好,传输不过来,就卡顿了。解码一组帧之前,是先收到sps和pps,否则无法解码。一组GOF,一个关键帧。花屏是因为丢帧,导致p帧或b帧不能参考其他帧解码。 卡顿:为了避免花屏,就丢一组GOP数据。这样就导致了卡顿。x264使用最广泛,使用软编。 x265逐渐成熟,压缩比高,但...转载 2020-02-26 21:29:02 · 878 阅读 · 4 评论 -
音频基础知识——学习笔记
可以通俗理解为: 音调:声音很细很尖,或者低沉。 音量:声音大小,俗称大嗓门。 音色:钢琴和小提琴音色不同。上图:甲乙频率相同,可认为是两个女生说话。乙嗓门大(振幅大)。如果两个人一起说话,那就很容易听不见甲说话。 下图:甲乙嗓门一样大(振幅相同),甲是频率慢的(男生), 乙是频率大的(女生),这就能区分了。左图的声音,听着 比右图舒服。但实际上,声音中几乎没有完美的正弦波...转载 2020-02-26 17:55:57 · 1298 阅读 · 2 评论 -
解决:No Java virtual machine was found after searching the following locations; 问题
由于需要测试MQTT,查到这个东西,一个很好用的mqtt 测试工具 eclipse paho。现在还不知道怎么用,先安装上。免安装,直接点击就可以使用。但是执行 paho.exe 遇到如下问题:a java runtime environment(JRE) or java Developemnt Kit(JDK)must be available in order to run P...原创 2020-02-21 19:03:34 · 3562 阅读 · 0 评论 -
编译mqtt_client及遇到的问题
编译好mqtt_c 和 mqtt_cpp 的库之后,进行一下测试。用VS2015编译的32位debug和release,并将c库和cpp库,所以用VS2015建一个win32控制台工程,空项目。 debug和release各自配置各自的lib路径。include和mqtt 都包含进去都是.h文件。#include<iostream>#include<strin...原创 2020-02-21 20:52:42 · 5248 阅读 · 0 评论 -
Windows10下VS2017编译MQTT C与编译MQTT C++
前言:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联...原创 2020-02-20 13:27:29 · 5394 阅读 · 4 评论 -
解决 :error C1083: 无法打开包括文件: “sys/time.h”: No such file or directory
编译MQTT的C库时,test的项目们 出现的问题: fatal error C1083: 无法打开包括文件: “sys/time.h”: No such file or directory解决办法:注释掉,换用Windows的文件#include <time.h>#include <socket.h> /*#include <sys/time.h&...原创 2020-02-19 17:44:47 · 18954 阅读 · 0 评论 -
下载安装CMake
官网地址:https://cmake.org/files/CMake太难下载了,而且还老中断。**********************************************************************************************后来下载下来了这两个版本:根本不用安装,直接点击 *.exe 就能使用*********...原创 2020-02-19 14:54:51 · 8539 阅读 · 30 评论 -
windows下编译MQTT问题集锦
一、下载资源1.https://github.com/eclipse/paho.mqtt.cpp master版本2.https://github.com/eclipse/paho.mqtt.c master版本3.https://cmake.org/files/ 选择一个3.16版本的,时间巨慢,耐心等待。下载一个32位一个64位的编译器,用于...原创 2020-02-20 13:45:28 · 2197 阅读 · 0 评论 -
FFmpeg---cmd命令操作汇总
### 学习笔记FFMPEG是特别强大的专门用于处理音视频的开源库。你既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频文件。下面主要记录如何使用它提供的工具,在Windows10系统中应用,目前采用的版本4.1。FFMPEG 目录及作用libavcodec: 提供了一系列编码器的实现。 libavfor...原创 2020-02-18 22:40:08 · 4617 阅读 · 0 评论 -
Windows10上运行EasyDarwin
需要研究推流,所以刚接触这个EasyDarwin, 还不太清楚怎么用,先记录一下。笔记本配置:win10;FFmpeg事先下载好,shared版本;VLC安装完成。EasyDrawin是什么?EasyDarwin是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大...原创 2020-02-15 18:14:55 · 4594 阅读 · 2 评论 -
win10下,编译openssl-1.0.2版本
由于编译rtmp库,需要openssl1.0.1版本的库,所以记录编译过程。这两个openssl版本,执行命令不同,如果你是第一次编译,建议你先看openssl-1.1.1编译过程-->编译openssl-1.1.1版本编译以管理员身份运行cmd1. 切换到C:\Program Files (x86)\Microsoft Visual Studio\2017\Community...原创 2020-02-12 14:24:05 · 4619 阅读 · 4 评论 -
Windows10系统,用VS2010编译libtrmp静态库
新建VS2017空项目_CRT_SECURE_NO_WARNINGS_WINSOCK_DEPRECATED_NO_WARNINGS将解压的libtrmp 的文件,添加进项目\handshake.h(117): error C2079: “ctx”使用未定义的 struct“hmac_ctx_st”1>amf.c1>d:\project3\libtrmpwi...原创 2020-02-12 17:34:45 · 936 阅读 · 0 评论 -
Windows10,编译zlib
Windows10,编译zlib 。一、下载zlib 我下载的第一个,US(zlib.net).我下载的是zlib-1.2.11,下载完解压出来即可。下边就开始编译吧。(包括动态库和静态库两种)二、编译1、打开VS2010的命令窗口,以管理员身份运行2、切换到zlib/contrib/masmx86, 运行bld_ml32.bat。 如果是64位,请切换到zlib/c...原创 2020-02-11 21:59:36 · 4946 阅读 · 3 评论 -
FFmpeg初探(一)
ffmpeg程序的使用(ffmpeg.exe,ffplay.exe,ffprobe.exe)本章主要介绍一下ffmpeg工程包含的三个exe的使用方法。ffmpeg的官方网站是:http://ffmpeg.org/编译好的windows可用版本的下载地址(官网中可以连接到这个网站,和官方网站保持步):http://ffmpeg.zeranoe.com/builds/该网站中的FF...转载 2020-02-15 17:35:35 · 670 阅读 · 0 评论