直播主题

Ver*_*lst 14 javascript php java android

这可能是很多人会为谁在即时串流intrested人的intresting主题您的设备 一个网络服务器.(初级Android/Java)我终于找到了一种如何从我的设备的相机直播到我的网络服务器(网站)的方法.在wifi网络上需要大约.在wifi网络上显示1帧/秒,它也适用于EDGE/3G网络.在这个主题/问题中,我想讨论新的技术,改进,关于直播的想法,因为我将与你分享我的(代码也很受欢迎.)

我的代码使用setOneShotPreviewCallback()重复从摄像头预览中获取快照,以调用onPreviewFrame().帧以YUV格式传送,因此raw2jpg()将其转换为jpeg编码器的32位ARGB.NV21是YUV平面格式.

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

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

现在,我对您的想法,改进以及您想要添加/询问的其他内容非常感兴趣.以下是我的一些问题:

1)带音频直播的最佳方法是什么?视频录制或我的方法+录音?

2)你将如何处理视频记录流?

3)您如何将音频流式传输到网络服务器?(主要目标)(使用Java,PHP和JavaScript)

4)我还计划向我添加典型的实时流媒体特征,例如当一个名人出现时,你可以在实时流媒体时显示他的名字,或者只是将你的sd目录中的图像添加到你的直播中.你也会解码它并覆盖图像,或者以某种方式将图像放在你的直播中吗?

这个主题主要针对问题,所以请对这里的一些人提供一些很好的帮助.因此我添加了50(woot!)代表的赏金.

真诚的,XverhelstX

wal*_*lta 8

令我感到震惊的是,http发布可能不是一个很好的方式来实时将视频流传输到您的服务器.其他人一直在玩直播,他们使用套接字将实时视频流和音频流广播到他们的服务器.

我觉得这很有趣 - 这是一个链接.

http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system

但该家伙还发布了部分代码示例 -

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();
Run Code Online (Sandbox Code Playgroud)

我不知道的很酷的部分是ParcelFileDescriptor - 它在android文件系统上创建了一个实际上是套接字管道的文件 - 因此写入文件的任何内容都会通过Web广播到远程服务器.套接字是执行此类操作的正确方法,因为它们允许您连续发送数据,直到您的录制完成,而无需反复重新发送标头.

我认为这种技术的酷炫之处在于他实际上从MediaRecorder(它将成为一个编码的视频流)获取输出并将其通过套接字泵送到他的服务器.然后他可以简单地保存通过套接字进入的数据.没有逐帧,没有处理(Android SDK不会很好地暴露SDK中的编码器,而且它们的性能非常强).

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


ren*_*nes 5

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

关于音频。我将发送的音频流分离出来,然后根据我们当前显示的视频帧,将它们与视频流同步。

基本上,我会尽力使流式传输尽可能接近真实视频流式传输的工作方式。也许您可以研究ffmpeg,ffmpeg拥有rtsp服务器,如果您可以为android构建rtsp服务器,则可以大大简化您的工作。