Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 直播话题_Java_Php_Javascript_Android - Fatal编程技术网

Java 直播话题

Java 直播话题,java,php,javascript,android,Java,Php,Javascript,Android,这可能是一个非常有趣的话题,对于那些对从您的设备到Web服务器的流媒体感兴趣的人来说。(主要Android/Java) 我终于找到了一种方法,可以从我的设备的摄像头到我的Web服务器(网站)进行直播。在wifi网络上,在wifi网络上显示大约需要1帧/秒,在EDGE/3G网络上也可以使用。在这个主题/问题中,我想讨论有关直播的新技术、改进和想法,我将与您分享我的想法(代码也很感谢) 我的代码使用setOneShotPreviewCallback()调用onPreviewFrame()从相机预览中

这可能是一个非常有趣的话题,对于那些对从您的设备Web服务器的流媒体感兴趣的人来说。(主要Android/Java) 我终于找到了一种方法,可以从我的设备的摄像头到我的Web服务器(网站)进行直播。在wifi网络上,在wifi网络上显示大约需要1帧/秒,在EDGE/3G网络上也可以使用。在这个主题/问题中,我想讨论有关直播的新技术、改进和想法,我将与您分享我的想法(代码也很感谢)

我的代码使用setOneShotPreviewCallback()调用onPreviewFrame()从相机预览中重复拍摄快照。帧以YUV格式交付,因此raw2jpg()将其转换为jpeg编码器的32位ARGB。NV21是一种YUV平面格式

应用程序调用getPicture(),并在专用字节数组mCurrentFrame中生成图像的jpeg数据,然后返回该数组

在此之后,byteArray mCurrentFrame将进行Base64编码,并通过HTTP POST方法将其与Base64的字符串值和自己的ID代码一起发送到我的Web服务器,这样人们就不能再向其发送另一个图像。在Web服务器上,它再次被解码并放入文件test.jpg中。PHP和Javascript正在Web服务器上运行。PHP获取POST方法,JavaScript每750秒重新加载一次图像。这就是它的工作原理

现在我对你的想法、改进和其他你想补充/要求的东西非常感兴趣以下是我的一些问题:

1) 音频直播的最佳方法是什么?录像还是我的方法+录音

2) 您将如何处理视频录制流

3) 如何将音频流传输到Web服务器?(主要目标)(使用Java、PHP和JavaScript)

4) 我还计划将典型的流媒体直播功能添加到I中,例如,当名人出现时,您可以在流媒体直播时显示他的姓名,或者只需将sd目录中的图像添加到您的流媒体直播中。您是否也会解码并覆盖图像,或者以某种方式将图像放入livestream

这个主题主要是用来提问的,所以请注意,这可能会对这里的一些人有很大的帮助。因此,我增加了50(呜呜!)代表的悬赏

真诚地,
XverhelstX

注意:我不是安卓开发者

从你所说的来看,你似乎只是拍了一张快照,而不是真正的流媒体。如果您担心带宽,请使用较低的分辨率。我不确定在安卓系统中到底如何做到这一点

我认为,如果有内置的流媒体类,你将能够获得视频流和音频流。不要进行任何本地转码(您的raw2jpg()算作转码),因为它可能会使用太多的处理能力。只需获取流,压缩它,并将其发送到服务器


编辑:

一些链接让你开始

  • 这就把安卓手机变成了IP摄像头。你可以仔细研究代码,找出他们是如何控制摄像机流的
  • 关于这个话题

您每次都发送一个完整的快照?为什么不尝试使用一些视频压缩技术,比如每次发送压缩版本(可能是diff或类似的版本)时,不发送完整的图像,然后在服务器上根据上一个图像和刚接收到的数据创建图像。我认为所有的视频编解码器都能做到这一点,你可以试着看一些开放的编解码器规范来获得一些想法

关于音频。我会分开发送音频流,然后根据我们现在显示的视频帧将其与视频流同步


基本上,我会尝试让我的流媒体尽可能接近真实的视频流的工作方式。也许你可以研究一下ffmpeg,ffmpeg有一个rtsp服务器,如果你能为安卓系统构建一个rtsp服务器,那么你的工作就会简化很多。

我觉得http发布可能不是一个向服务器进行视频流直播的好方法。其他人一直在玩实时流媒体,他们使用一个插座向他们的服务器播放实时视频流和音频流

我觉得这很吸引人,这里有一个链接

但这家伙也发布了部分代码示例-

String hostname = "your.host.name";
int port = 1234;

Socket socket = new Socket(InetAddress.getByName(hostname), port);

ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);

MediaRecorder recorder = new MediaRecorder();

// Additional MediaRecorder setup (output format ... etc.) omitted

recorder.setOutputFile(pfd.getFileDescriptor());

recorder.prepare();

recorder.start();
我不知道的最酷的部分是ParcelFileDescriptor,它在android文件系统上创建了一个文件,实际上是一个到套接字的管道,因此写入该文件的任何内容都会通过web广播到远程服务器。套接字也是做这类事情的正确方法,因为它们允许您连续发送数据,直到录制完成,而无需反复发送标题

我认为这项技术的酷之处在于,他实际上是从MediaRecorder(这将是一个编码视频流)获取输出,然后通过一个套接字将其传输到他的服务器。然后,他可以简单地保存通过套接字传入的数据。没有逐帧,没有处理(Android SDK没有很好地公开SDK中的编码器,而且它们的性能非常高)

人们报告说它有效,但我还没有测试。无论如何,希望这是有帮助的

1) 音频直播的最佳方法是什么?录像还是我的方法+录音

这取决于你对“最佳”的看法。如果你在寻找资源,而不是质量,那么你的方法真的很好。
否则,您应该使用本机流媒体机制,或者实施视频流媒体技术来流媒体和编码视频。

3) 如何将音频流传输到Web服务器?(主要目标)(使用Java、PHP和JavaScript)

我建议您坚持使用MediaRecorder,因为它确实能很好地完成您的工作。还想找