gpt4 book ai didi

java - 录制时流式传输 MediaRecorder 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:54 26 4
gpt4 key购买 nike

我正在尝试实时获取从 A 点(2.1 android 手机)到 B 点(我的服务器)的视频流。我该怎么做?下面详细介绍了我的尝试(有点长,但简洁!)


目标是在不暂停/停止流的情况下,将手机录制的一小时长视频发送到服务器。最多几分钟的延迟不是问题。我已经尝试了三种方法

  1. 线程一个 FileInputStream 从视频的文件描述符目的地
  2. 调用 MediaRecoder.setOutputFile“发送方”套接字的 FD。这个套接字连接到一个LocalSocketServer,其目的地是一个“接收器” socket 。
  3. 打开一个到我的服务器的套接字并且给 setOutputFile 其 FD

不幸的是,两次尝试都失败了。

  1. 每当我时只注册 24 个字节调用 FileInputStream.available(),和实际的字节数在我调用 Recorder.stop() 之后
  2. 给了我这个无用的美丽堆栈跟踪

    错误/AndroidRuntime(18532):由:java.lang.RuntimeException:启动失败引起。错误/AndroidRuntime(18532):在 android.media.MediaRecorder.start( native 方法)错误/AndroidRuntime(18532):在 com.example.demovideo.DemoVideo.initializeCamera(...)...

  3. 同样的错误2

代码 fragment (部分省略)

1)

fileOut = new FileOutputStream(pathToFile);
...
recorder.setOutputFile(fileOut.getFD());
recorder.prepare()
recorder.start()

// in an Async Thread
fileIn = FileInputStream(fileOut.getFD);
while (recording) {
fos.flush();
Log.w("---", "bytesAvailable: " + fileIn.available()); //always returns 24
Thread.sleep(1000);
}

2)

// in a Thread
server = new LocalServerSocket(SOCKET_ADDRESS);
while (true){
receiver = server.accept();
if (receiver != null){
InputStream input = receiver.getInputStream();
... // processing would go here
} }

sender = new LocalSocket();
sender.connect(new LocalSocketAddress(SOCKET_ADDRESS));
recorder.setOutputFile(sender.getFileDescriptor());
...
recorder.prepare();
recorder.start(); // <- error
  1. 正确保存未损坏的视频到sd
  2. 如果我使用就可以工作setOutputFile(pathToFile) 代替。当我运行时,套接字也可以工作sender.getOutputStream().write(message.getBytes());

最佳答案

  1. 我使用这种方法创建了一个从移动设备到服务器的视频流应用程序并且它运行良好。所以这应该是正确的方法。后来当我不再参与该项目时,我收到报告说这种方法不适用于一些较新的手机——最著名的是三星 Galaxy S。问题是这些手机很少刷新视频数据,可能一分钟一次。你用什么手机来测试这个?

  2. & 3. MediaRecorder 是原生库的包装器。我假设这个库想要一个具体的文件来写入而不是管道。在文件系统级别上,文件和管道看起来相同,但不能随机访问管道(寻找)。

关于java - 录制时流式传输 MediaRecorder 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4638478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com