Android MediaRecorder setOutPutFile() 使用 Socket 进行流式传输

2023-12-25

我正在开发一个 Android 应用程序,它应该能够将视频流式传输到网络上的本地服务器,而无需将其存储在 SD 卡上。

为此,我在 C# 中制作了简单的套接字应用程序,用于监听特定的 IP:PORT

在Android部分,我设置了setOutputFile()使用套接字连接到此 IP:PORT。

该应用程序在 Android 手机上完美启动,但它不显示预览,当我开始录制时,它毫无例外地退出。它也不向网络发送任何数据流。

当我设置setOutPutFile()到SD卡,它工作完美并且还可以录制视频。

对于服务器部分,当我将数据从任何其他应用程序(从 PC)发送到同一 IP:PORT 时,它会收到数据。

简而言之,我想使用套接字在PC和Android之间建立通信通道进行流式传输。

这是我的安卓代码:

 Socket soc=new Socket("192.168.1.3",8210);
 ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(soc);
 ...
 ...
 // other Recorder setup steps
 ...
 ...
 Recorder.setOutputFile(pfd.getFileDescriptor()); // working fine for sdcard
 Recorder.setPreviewDisplay(holder.getSurface());
 Recorder.prepare();

这是我的服务器应用程序,它是用 C# 编写并在 PC 上运行的:

 socketForServer = new TcpClient("192.168.1.3", 8210);
 NetworkStream networkStream = socketForServer.GetStream();
 byte[] rData = new byte[1024];
 networkStream.Read(rData, 0, 1024);
 ...
 ...
 // process rData
 ...
 ...

我无法理解这里发生的问题。我的方向正确吗?


我的服务器代码有问题。

我不得不使用TcpListener代替TcpClient.

以下是正确的代码:

TcpListener listener = new TcpListener(ipAddress, 8210);
Socket s = listener.AcceptSocket();
NetworkStream ns = new NetworkStream(s);
.
.
.
//reading the data from stream
.
.
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android MediaRecorder setOutPutFile() 使用 Socket 进行流式传输 的相关文章

随机推荐

  • Android 获取 Wifi 连接状态

    我目前正在使用NetworkRequest and NetworkCallback方法 谷歌官方推荐 获取Wifi连接状态 并且部分有效 我期待着onUnavailable 将在以下情况下被调用 close app gt turn off
  • Android - 创建可调整大小的视图

    我目前正在开发一个具有可移动和可调整大小视图的仪表板 我现在遇到的问题是我想通过触摸手势调整视图大小 因此 我想到了一个点 将其添加到选择视图中 可以拖动该点来调整所选视图的大小 这与 Android 主屏幕上的调整大小过程类似 即使经过长
  • 如何更改复选框、滑块、单选按钮和选择组件的强调色

    我想更改复选框 滑块 单选按钮和选择组件的强调色 有什么简单的方法可以做到这一点吗 您可以使用新的accent color财产 如果您正在使用Chrome 版本 93 https www chromestatus com feature 4
  • Symfony2 验证器约束 GreaterThan 其他属性

    我的验证是在 yaml 文件中定义的 如下所示 src My Bundle Resources config validation yml My Bundle Model Foo properties id NotBlank groups
  • Codeigniter 会话数据,它们只是 cookie 吗?

    我将在我的登录系统中使用 Codeigniter 的会话数据 但首先我想了解它们 所以我阅读了用户指南 据我了解 Codeigniter 的会话数据是just饼干 这是真的 这意味着如果用户禁用 cookie 他将无法使用 Codeigni
  • 从整数列表中,获取最接近给定值的数字

    给定一个整数列表 我想找到哪个数字最接近我在输入中给出的数字 gt gt gt myList 4 1 88 44 3 gt gt gt myNumber 5 gt gt gt takeClosest myList myNumber 4 有什
  • pytorch.empty 函数中未初始化的数据是什么

    我正在经历pytorch教程并遇到了pytorch empty功能 有人提到空可以用于未初始化的数据 但是 当我打印它时 我得到了一个值 这和有什么区别pytorch rand它还生成数据 我知道 rand 生成 0 到 1 之间的值 下面
  • “System.MissingMemberException:无法找到服务器工厂”启动 Microsoft.Owin 在 TeamCity 中自托管

    当 Teamcity 运行启动自托管 Web 应用程序的集成测试时 测试失败并显示错误 System MissingMemberException The server factory could not be located for th
  • 在 Jenkins 声明性管道中使用 waitForQualityGate

    Jenkins 2 50 中声明性管道中的以下 SonarQube 6 3 分析阶段失败 并在控制台日志中显示此错误 http pastebin com t2ja23vC http pastebin com t2ja23vC 进一步来说 此
  • Asp.Net Core 2.0+ 中模型验证之前的模型标准化

    我在用着自动模型验证 https blogs msdn microsoft com webdev 2018 02 02 asp net core 2 1 roadmap 参见 更好的输入处理 保持我的控制器干净 所以 HttpPost Pr
  • C# 到 C++ 数组?

    我提供了一个库 我知道它使用 C 我这样导入DLL DllImport pst private static extern int pst get sensor ref PSTSensor sensor PSTSensor 是一个结构体 在
  • Android如何对JSONObjects的JSONArray进行排序

    我制作了一个 jsonobjects 的 jsonarray 现在我需要根据 jsonobjects 中的值对 JSONArray 进行排序 以前我对自定义对象的 ArrayList 进行排序 如下所示 比较器 public class K
  • 函数的推导

    假设我们有一个这样的类模板 template
  • D3D11VA/CUDA 与 NV12 表面的互操作性问题

    我正在尝试构建一个转码管道 其中使用 D3D11VA 对视频进行解码 然后将其引入 CUDA 可以选择使用 CUDA 内核进行修改和 或分析 最后使用 NVENC 进行编码 使用 CUDA NVENC 互操作 想法是在 GPU 上完成所有操
  • 如何防止 Razor 在使用嵌套显示模板时向输入添加前缀?

    当我使用嵌套显示模板并通过 HTML 帮助程序添加输入元素时 Razor 引擎会向字段名称添加前缀 我确实理解这样做是为了保证页面级别输入名称的唯一性 并在回发时重建整个模型 然而 我有许多执行临时操作的小表单 并且我既不需要名称唯一性 也
  • 有效 Java hashCode() 实现中的位移位

    我想知道是否有人可以详细解释一下 int l l gt gt gt 32 在以下 hashcode 实现中执行操作 由 eclipse 生成 但与有效 Java 相同 private int i private char c private
  • 实例化 redBlackTree 模板时出错

    我在用字符实例化 RedBlackTree 容器时遇到问题 但它可以与整数一起使用 import std stdio import std container void main auto r1 redBlackTree int works
  • 设置浏览器本机视频控件的样式

    是否可以跨浏览器设置浏览器本机视频的控件样式 例如来自 HTML5 视频标记的视频 我不明白这是否可能 除了本文 http dev opera com articles view custom html5 video player with
  • 告诉 scipy.optimize.minimize 失败

    我使用 scipy optimize minimize 对目标函数进行无限制优化 该函数接收几个参数并基于这些参数运行复杂的数值模拟 这种模拟并不总是收敛 在这种情况下 我使目标函数返回 inf 在某些情况下 在其他情况下返回 NaN 我认
  • Android MediaRecorder setOutPutFile() 使用 Socket 进行流式传输

    我正在开发一个 Android 应用程序 它应该能够将视频流式传输到网络上的本地服务器 而无需将其存储在 SD 卡上 为此 我在 C 中制作了简单的套接字应用程序 用于监听特定的 IP PORT 在Android部分 我设置了setOutp