Yah*_*had 9 android video-streaming
我想要的是broadcast一个Android摄像头视频到远程位置,任何人都可以在他们的手机或网站上观看该视频.我已成功通过unicast电脑上的vlc播放器.我想red5服务器Adobe media server,ffmpeg服务器,但都在帕子.他们每个人只能broadcast从预先录制的文件中播放视频,但不能从任何直播视频中播放视频.任何人都可以建议我做什么.
我读过(我认为甚至在stackoverflow上)你可以为MediaRecorder提供TCP-Connection的FileHandle.然后,您可以监听该连接,读取数据,将其打包并重新发送为RTSP/RTP-Stream.
如果我碰巧找到原帖,我会在这里引用它.
编辑:
最初的帖子是:来自Android的流媒体视频
关于Filedescriptor的部分来自: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)
但是,这仅通过线路发送视频文件数据.您可以保存它然后播放.但如上所述,它还不是一个流.
更新: 您甚至不必在第一步使用TCP套接字.我只是绊倒了"LocalSocket"(1),它还为你提供了一个FileHandle来提供MediaRecorder.那些本地套接字是"AF_LOCAL/UNIX域流套接字".请参阅http://developer.android.com/reference/android/net/LocalSocket.html
我今天没有尝试过以上所有这些,但很快就会这样做.所以也许我可以在不久的将来获得更多的帮助:)
(1)出于安全考虑,LocalSocket不适用于较新的Android版本!请参阅2015-11-25更新.
更新2: 刚刚在Android Sources中看到了"OUTPUT_FORMAT_RTP_AVP".但它是隐藏的:(所以我想它将在Android的未来API版本中可用 .https://github.com/android/platform_frameworks_base/blob/master/media/java/android/media/MediaRecorder.java第219行:
public static final int OUTPUT_FORMAT_RTP_AVP = 7;
Run Code Online (Sandbox Code Playgroud)
我没有试过通过提供硬编码来欺骗隐藏7......如果有人这样做,请在这里发表评论!
更新2015-11-25
我刚刚进入了libstreaming:https://github.com/fyhertz/libstreaming 我没有深入研究它,但似乎从这个项目中有很多关于从Android流式传输的知识(如果不仅仅是使用它) .我在那里读到LocalSocket解决方案对于较新的Android版本无效 :(但它们提供了另一种选择:ParcelFileDescriptor.
| 归档时间: |
|
| 查看次数: |
5709 次 |
| 最近记录: |