之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程中总是遇到各种错误。尝试了很久依然没有成功。

然后在网上看见另外一篇教程:VS2015编译FFMPEG。方法很简答,并且成功编译了X64位的FFmpeg。特此记录:转自:http://blog.csdn.net/gongxp123456/article/details/52879976

系统环境:Windows 10 64位
  需要安装的软件和工具:
  Visual Studio 2015 With Update 3
  MSYS2
  YASM
  一、VS2015
  安装VS2015时,选择Git。
  
  二、msys2
  1、到这里下载:
  http://msys2.github.io. 选择第二个:msys2-x86_64-20160921.exe
  下载后,安装默认安装到C:\ msys64
  2.安装后,到msys2窗口执行,安装编译程序: pacman -S make gcc diffutils
  3. 重命名C:\msys64\usr\bin\link.exe 为C: \msys64\usr\bin\link.bak, 避免和MSVC 的link.exe抵触。
  三、YASM
  1. YASM下载地址:http://yasm.tortall.net/Download.html,下载其64位版本Win64 .exe (64 位 Windows 通用)。
  2、下载后,将下载回来的yasm-1.3.0-win64.exe 改名为yaml.exe,并放置于 MSYS2 安装目录中。就是放置到c:\msys64\usr\bin\ 中。
  四,ffmpeg
下载最新版本ffmpeg,本文是在2016.10.21下载,如果速度太慢,可以FQ后再执行:
  进入windows命令行,在C:\FFMPEG目录下执行:
  git clone git://source.ffmpeg.org/ffmpeg.git
  四,编译ffmpeg
  1、使用VC2015编辑C:\msys64\msys2_shell.cmd,将其中的:
  rem set MSYS2_PATH_TYPE=inherit
  “rem”注释删除掉,成为:
  set MSYS2_PATH_TYPE=inherit
  2、到开始菜单,执行“Visual Studio 2015-> VS2015 x64 本机工具命令提示符”,在命令窗口下,CD \msys64,执行:msys2_shell.cmd -mingw64
  3、在启动的 MSYS2 终端中分别运行一下命令观察各便于工具组件是否被正确找到:
  
  5、修改msys2窗口代码页为GBK,避免编译时显示乱码:
  
  4、编译ffmpeg
  在msys2窗口:
  cd /
  cd /ffmpeg
  cd /ffmgeg
  进入下载ffmpeg目录中
  ./configure  --toolchain=msvc  --arch=x86  --enable-yasm  --enable-asm --enable-shared  --disable-static
  make
  make install
  这样以后,编译生产的执行文件ffmpeg.exe和DLL文件在目录C:\msys64\usr\local\bin中,开发头文件在C:\msys64\usr\local\include中。
 
最后记录一下问题:编译FFmpeg是为了解决解码实时流丢包的问题,想要修改缓冲区的大小,但是修改源码之后编译新的FFmpeg后依然丢包严重。
后来发现,FFmpeg留有修改缓冲区大小的接口,可以在代码中直接修改。

 最近新提出了一个问题,解码的时候传入一个错误的rtsp流地址,会怎么样?结果测试发现会卡死在avformat_open_input里,一直不返回。
后来在网上查发现,avformat_open_input是阻塞的,但是可以设置超时,设置的方法:
av_dict_set(&dic, "stimeout", "2000000", 0);
注意!是stimeout,网上有些写的是timeout,不行的,写timeout,无论是传入正确的rtsp流地址还是错误的,都会返回无法连接的。改成stimeout就正确了。

VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时的更多相关文章

  1. 修改socket缓冲区大小

    #include <stdio.h>#include <sys/time.h>#include <sys/types.h>#include <sys/sock ...

  2. vs2015编译时CS1056 C# Unexpected character解决办法

    https://stackoverflow.com/questions/42932577/error-cs1056-unexpected-character-running-the-msbuild-o ...

  3. 修改FFMpeg源码—捕获丢包

    概述 最近我们项目有一个需求就是解决客户端播放RTSP视频流花屏的问题,一般来说丢包就会引起花屏,导致客户端花屏的因素又有很多,比如说: 相机到服务器丢包 服务器到客户端丢包 等等... 其中服务器到 ...

  4. 解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet

    软件: 1.流媒体服务器EasyDarwin-windows-8.1.0-1901141151 2.ffmpeg-20181001-dcbd89e-win64-static 3.直播源:rtsp:// ...

  5. Netty_UDP丢包解决

    程序背景 程序是Java编写,基于Netty框架写的客户端及服务端. 现象 客户端大数据量持续发UDP数据,作为UDP服务器出现了部分数据频繁丢失触发程序自身重传逻辑. 通过GC日志对比发现丢包的时间 ...

  6. 出现丢包解决方法(ping: sendmsg: Operation not permitted)

    故障排查: 早上突然收到nagios服务器check_icmp的报警,报警显示一台网站服务器的内网网络有问题.因为那台服务器挂载了内网的NFS,因此内网的网络就采用nagios的check_icmp来 ...

  7. TCP传输协议中如何解决丢包问题

    TCP在不可靠的网络上实现可靠的传输,必然会有丢包.TCP是一个“流”协议,一个详细的包将会被TCP拆分为好几个包上传,也是将会把小的封裝成大的上传,这就是说TCP粘包和拆包难题. 但是许多人有不同的 ...

  8. 使用 VS2015 编译并调试 ffmpeg

    导读 ffmpeg 是音频处理方面非常强大非常有名的开源项目了,然而如 雷神 所说,“FFMPEG 难度比较大,却没有一个循序渐进,由简单到复杂的教程.现在网上的有关FFMPEG的教程多半难度比较大, ...

  9. vs2015编译ffmpeg 出现错误rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 ___iob_func

    vs2015编译ffmpeg(版本3.0.2)引用外部库文件librtmp出现以下错误: rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp__st ...

随机推荐

  1. Luogu P3227 [HNOI2013]切糕 最小割

    首先推荐一个写的很好的题解,个人水平有限只能写流水账,还请见谅. 经典的最小割模型,很多人都说这个题是水题,但我还是被卡了=_= 技巧:加边表示限制 在没有距离\(<=d\)的限制时候,我们对每 ...

  2. 前端神器之jquery

    jquery介绍 jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. ...

  3. Django admin修改密码

    django的admin用户被我多动症一样的测试,给密码弄丢了,需要重置. 从数据库重置的可能性为0,因为django对于密码有保护策略.考虑从运行程序的地方进行重置: 1.在程序的文件夹下,执行这样 ...

  4. matlab运行出现“变量似乎会随着迭代次数改变而变化,请预分配内存,以提高运行速度”问题

    这句话大致意思就是: b = 0;for i = 1:3    a(i) = b;end是说变量的长度是变化的,经常在循环里出现,比如上面这个例子,这样会影响计算速度,最好的办法是预先定义a的长度,比 ...

  5. Element老司机开车了

    orm Select选择器   坑: 1.选择器视图层一直渲染最后一个元素(value-key作为唯一标识符是关键)2.视图不更新,没有在data函数中声明变量,或者其他地方重置了已经声明过得变量 o ...

  6. CEYE平台的使用

    0x01 CEYE 是什么 CEYE是一个用来检测带外(Out-of-Band)流量的监控平台,如DNS查询和HTTP请求.它可以帮助安全研究人员在测试漏洞时收集信息(例如SSRF / XXE / R ...

  7. 【听大佬rqy分享有感】

    rqy,一个神奇的名字,一个神奇的物种. 初三自学高等数学,无师自通:获得了大大小小的oi奖项:是也一直是山东省信息学的“红太阳”:今天听了他的分享,真的很有帮助. 1.  不必太较真:遇到不会的高数 ...

  8. 在badboy中添加检查点并且参数化

    在badboy中添加检查点(使用百度搜索来举例): 1.打开badboy,在输入框中输入www.baidu.com,单击键盘回车键或者点击输入框右边的按钮进入百度页面: 2.在百度搜索框中输入搜索字, ...

  9. SQL 两个表有关联,通过其中一个表的列,更新另一个表的列。

    换了工作又开始写SQL了. update dic_rate_package set post_next_day=t.post_next_day from dic_package t inner joi ...

  10. Beta冲刺(1/7)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(1/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 团队完成测试答辩 整理博客 复习接口 接下来的 ...