ffmpeg rtsp解码缓冲区太小

2024-01-18

我在 Android 上使用 ffmpeg 解码 rtsp,当图像快速更新或高分辨率时,我很快就会看到像素化:

经过谷歌搜索,我发现它可能与UDP缓冲区大小有关。然后我在 ffmpeg/libavformat/udp.c 中使用以下参数重新编译了 ffmpeg 库

#define UDP_TX_BUF_SIZE 327680
#define UDP_MAX_PKT_SIZE 655360

它似乎有所改善,但在某些时候仍然开始失败。知道我应该增加哪个缓冲区以及如何增加吗?


对于我的问题(http://libav-users.943685.n4.nabble.com/UDP-Stream-Read-Pixelation-Macroblock-Corruption-td4655270.html http://libav-users.943685.n4.nabble.com/UDP-Stream-Read-Pixelation-Macroblock-Corruption-td4655270.html),我试图从其他人设置的多播 UDP 流中捕获。因为我没有能力弄乱源代码,所以我最终从使用 libav 切换到使用 libvlc 作为包装器,并且它工作得很好。以下是对我有用的总结:

流.h:

#include <vlc/vlc.h>
#include <vlc/libvlc.h>

struct ctx {
   uchar* frame;
};

流.cpp:

void* lock(void* data, void** p_pixels){
  struct ctx* ctx = (struct ctx*)data;
  *p_pixels = ctx->frame;
  return NULL;
}

void unlock(void* data, void* id, void* const* p_pixels){
  struct ctx* ctx = (struct ctx*)data;
  uchar* pixels = (uchar*)*p_pixels;
  assert(id == NULL);
}

主要.cpp:

struct ctx* context = (struct ctx*)malloc(sizeof(*context));
const char* const vlc_args[] = {"-vvv",
                                 "-q",
                                 "--no-audio"};
libvlc_media_t* media = NULL;
libvlc_media_player_t* media_player = NULL;
libvlc_instance_t* instance = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);

media = libvlc_media_new_location(instance, "udp://@123.123.123.123:1000");
media_player = libvlc_media_player_new(instance);
libvlc_media_player_set_media(media_player, media);
libvlc_media_release(media);
context->frame = new uchar[height * width * 3];
libvlc_video_set_callbacks(media_player, lock, unlock, NULL, context);
libvlc_video_set_format(media_player, "RV24", VIDEOWIDTH, VIDEOHEIGHT, VIDEOWIDTH * 3);
libvlc_media_player_play(media_player);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg rtsp解码缓冲区太小 的相关文章

  • 如何在 Flutter 中为 Button 添加渐变?

    有没有办法改变ElevatedButton背景颜色渐变 如果没有一些小瑕疵或问题 例如缺少涟漪效应 不需要的边框 不尊重主题的内容 上述所有解决方案都无法真正发挥作用minWidth对于按钮 The 下面的解决方案没有上述问题 关键部分是使
  • 如何在没有 SyncAdapter 的 Android 上实现帐户

    我正在利用内置帐户系统 使用 AccountManager API 为 Android 应用程序实现一个登录系统 在 Android 2 2 上一切都很好 但在 Android 2 1 上不包含 SyncAdapter 会导致帐户设置屏幕中
  • JKS、BKS 和 PKCS12 文件格式

    我正在设置一个无头服务器 该服务器使用用户提供的数据 JS CSS HTML 密钥库 为 Android 构建 Phonegap 混合应用程序 我想进行一些基本的客户端检查 以确保上传的密钥库有效 对于 JKS 文件 我发现可以通过确保提供
  • 启动画面反应本机后出现白屏

    编辑 似乎是因为 MainActivity 加载太重而生成白屏 我设法首先使用本机启动屏幕来解决 然后在本机被杀死后立即基于下一个插件的 js 实现 我做了一些修改完美匹配两个启动画面https github com crazycodebo
  • Android 视图展开动画

    我正在尝试编辑这些来源 https github com gabrielemariotti androiddev tree master AnimationTest创建一个适用于我所有视图的简单函数 Override public void
  • Android ACTION_DATE_CHANGED 广播

    我有 Nexus S 当我在手机上手动更改日期时 ACTION DATE CHANGED 并不总是被广播 如果我将日期从 2014 年 2 月 13 日更改为 2014 年 2 月 14 日 我还没有获得 ACTION DATE CHANG
  • 找不到 RecyclerView 类 android.support.v7.recyclerview.R$styleable

    我在我的应用程序上使用 RecyclerView 但在运行时应用程序崩溃并且我的 logcat 读取 java lang RuntimeException Unable to start activity ComponentInfo com
  • 可以混淆/加密 SharedPreferences 文件吗?

    因此 我对混淆应用程序的 SharedPreferences xml 文件很感兴趣 就像 Android LVL 混淆其许可证 cahce 数据一样 这是可以想象的吗 大量的谷歌挖掘几乎没有产生任何可能解决我的问题的结果 我当然不是密码学家
  • Android 中的 XmlPullParser 陷入困境

    经过多个小时的搜索和调试后 我仍然停留在同一个地方 并且 Eclipse 没有帮助我 我试图解析这个 RSS 提要 http fr espnf1 com rss motorsport story feeds 0 xml type 2 这很简
  • 尝试使用掩码裁剪位图会抛出 IllegalArgumentException:

    我正在使用以下代码 public void cropSelection Bitmap bitmap annotationBitmap copy annotationBitmap getConfig true Canvas canvas ne
  • 如何使用RecyclerView.State保存RecyclerView滚动位置?

    我有一个关于 Android 的问题RecyclerView State http developer android com reference android support v7 widget RecyclerView State h
  • 无法调整 Android React Native 模块中线性布局子项的大小

    完整代码在这里 https github com sbaar ResizableLLRN 这里有关于 java 中正确行为和 React Native 中错误行为的视频 https drive google com file d 0Bxl2
  • Android Youtube API 可用吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有适用于 Android 的 YouTube API 吗 如果不是 除了通过网络浏览器之外 如何从 Yo
  • android sqlite 如果不存在则创建表

    创建新表时遇到一点问题 当我使用 CREATE TABLE 命令时 我的新表按应有的方式形成 但是当我退出活动时 应用程序崩溃 并且我在 logcat 中得到一个表已存在 如果我使用 CREATE TABLE IF NOT EXISTS 则
  • 我可以在导航组件中使用多个 NavHostFragment 吗?

    如果您难以理解以下段落 请查看我制作的流程图 我目前正在制作一个带有 3 个顶级目的地的笔记应用程序 顶级目标之一 NotesList 显示用户创建的注释列表 NotesList 有一个过滤器按钮 可显示带有 FilterMenu 目标的底
  • Webview 中的 Java 空指针异常

    我试图搜索这个问题 但这个错误看起来与这个错误 https stackoverflow com questions 21866459 android nullpointerexception on webview 我的 google pla
  • 从 Activity 调用选项卡式片段方法

    我有一项活动由三个片段组成 这些片段使用使用 PagerAdapter 的操作栏选项卡 我想要做的是从主活动访问活动选项卡式片段中的方法 我已经尝试了下面的代码 但这只是将片段返回为空 所以我猜它无法在选项卡中找到它 NPListFragm
  • Android 图标与徽标

    The
  • Android 可扩展 GridView 就像 Google 图像一样

    我想创建可扩展的 GridView 其行为类似于 Google 图像页面 我想知道如何实现这样的功能 当我单击其中一张图像时 页面会展开并显示图片的详细信息 Android 中是否可以做类似的事情 Images grid Expanded
  • 我的 apk 文件在模拟器中的位置

    我在 eclipse android 中编写了一个小程序 现在我安装并运行我的程序 它是一个 apk 现在我想知道我的 apk 文件在哪里 我什至想将它 拉 到我的系统中 是否可以 如果是这样请帮助我 如果您只想将 apk 安装在手机或类似

随机推荐

  • 使用键:值对填充选择框?

    我正在使用 jQuery 并让服务器代码返回以下值 0 SELECT ONE 1 VALUE1 2 VALUE2 etc 如何将其填充到选择框中 var 0 SELECT ONE 1 VALUE1 2 VALUE2 targetSelect
  • ArrayAdapter:按索引删除

    我有一个 ListView 其中填充了新闻服务器概要 只是故事列表 和一个用于修改该 ListView 的 arrayAdapter 我可以通过 remove Object 函数删除项目 但是如果有多个 Object 实例怎么办 remov
  • VssUnauthorizedException VS30063 您无权访问突然抛出错误

    我有以下使用 VSTS 客户端 API 的代码 该代码可以正常工作 但现在返回错误 Microsoft VisualStudio Services Common VssUnauthorizedException VS30063 您无权访问h
  • 卡夫卡偏移量管理

    我们正在使用 Kafka 0 10 我在网上 和文档中 看到了一些相互矛盾的信息 这些信息涉及当enable auto commit 为 TRUE 时如何在 kafka 中管理偏移量 检索消息的同一个 poll 方法是否也按配置的时间间隔处
  • 在 NumPy 中使用字符串作为数组索引

    我正在通过 GUI 处理 python 中的大型数值数组 我想将切片功能公开给 GUI 中的文本框 这样我就可以轻松选择用于手头计算的数组部分 我想做的简单例子 arr array 0 10 20 30 40 50 60 70 80 90
  • 如何确定 Android 应用程序是否使用可信执行环境 (TEE) 和安全元件 (SE)?

    我已经解决了问题One https stackoverflow com questions 61225795 how to check whether android phone supports tee 64422042 64422042
  • 如何在 Mongoose/Node.js 中同时保存多个文档?

    目前我使用保存来添加单个文档 假设我有一个文档数组 我希望将其存储为单个对象 有没有一种方法可以通过单个函数调用将它们全部添加 然后在完成后获得单个回调 我可以单独添加所有文档 但管理回调以计算一切何时完成将是有问题的 Mongoose 现
  • Laravel VueJs:“router-view”不渲染组件

    我知道这个网站上有这样的问题 但它们并不能解决我的问题 因此这里出现了这个问题 在我的 Laravel 5 3 和 VueJs 应用程序中 Vue 的根实例位于app js文件指向App vue and in App vue我有router
  • 在 Google App Engine 上返回空列表在开发服务器上和部署时的行为有所不同

    我创建了一个返回项目列表的端点 当列表为空时 我希望在 JSON 中看到一个空列表 但列表字段被省略了 这不是开发服务器上发生的情况 Ex ApiMethod name udinic path udinic public List
  • 如何给盒子一个圆形描边?

    这就是我最终给我的jetpack Compose盒子一个圆角形状的方式 Box modifier Modifier size 32 dp clip CircleShape border BorderStroke 2 dp Color Red
  • Child_process 和 Worker Threads 有什么区别?

    我试图理解ThreadingNodeJS 及其工作原理 目前我的理解是 Cluster 构建在 Child process 之上 但 TCP 分布在集群之间 最适合分配 平衡传入的 http 请求 但不适合 CPU 密集型任务 通过利用 c
  • iPhone SDK 3.1.3 升级到 iPhone SDK 4 ApplicationWillTerminate 且未调用 dealloc

    我已将 iPhone SDK 从 3 1 2 升级到 4 我在之前版本中开发的应用程序运行良好 但只有一个问题 当我关闭应用程序时 它不会调用应用程序终止并释放任何内容 当我单击主页按钮时 应用程序退出 但当我再次打开它时 它会在我离开的位
  • 在 ASP.NET MVC 中,当使用正确类型的对象渲染页面时,我遇到了不正确的类型错误

    我正在使用 MVC Preview 5 开发一个应用程序 我使用了类型化视图 设置 debug false 后 我发现收到以下形式的错误 模型项目传递到 字典的类型是 blah Models UserAdmin IndexData 但是 这
  • 如何从C++程序调用Linux命令?

    我编写了以下简单的 C 程序 以便学习如何从 C 程序调用 Linux 命令 通过使用系统命令 请告诉我为什么 C 编译器会出现错误 我的程序出了什么问题 更多 exm2 cc include
  • 当位置不是整数时平滑过渡

    我正在尝试显示某种时间线 我的目标是让它顺利刷新 我设法使用 css 变换属性获得比绝对定位更好的东西 但我不太高兴 因为有一些闪烁 特别是当背景很暗时 var background document querySelector backg
  • 位字段是否比屏蔽位并手动提取数据更有效(在计算上)?

    我有许多小数据 我希望能够将它们放入一种更大的数据类型中 假设这是一个日期和时间 最明显的方法是通过像这样的位字段 struct dt unsigned long minute 6 unsigned long hour 5 unsigned
  • WordPress 添加新的用户挂钩

    我想添加一些自定义字段以在 Wordpress 中添加新用户 我正在使用以下钩子 show user profile edit user profile 这些挂钩在编辑个人资料页面上显示新的自定义字段 但我希望新的自定义字段显示在 添加新用
  • delphi 中子类化 TTreeNode 的问题

    我正在编写一个 delphi 2009 应用程序 它在对接面板上使用 TTreeView 我发现如果我对 TTreeNode 进行子类化 我可以在我的应用程序中进行很大的简化 它所在的树视图放置在对接面板上 TInfoTreeNode cl
  • 以编程方式创建 ShapeDrawable

    我试图以编程方式创建一个 ShapeDrawable 但以下代码没有显示任何内容 ImageView image new ImageView context image setLayoutParams new LayoutParams 20
  • ffmpeg rtsp解码缓冲区太小

    我在 Android 上使用 ffmpeg 解码 rtsp 当图像快速更新或高分辨率时 我很快就会看到像素化 经过谷歌搜索 我发现它可能与UDP缓冲区大小有关 然后我在 ffmpeg libavformat udp c 中使用以下参数重新编