Articles of stream

流媒体中的Android MediaRecorder

它可以“流式传输”MediaRecorder的结果吗? 我能看到的唯一方法是接收FileDescriptor的mediaRecorder.setOutputFile。 所以我可以将结果写入文件或通过套接字发送到接收器。 我尝试了第二种解决方案,但结果video已损坏,因为在流中不是“可搜索的”。 想法是使用android设备的相机将结果发布到Red5。

VLC RTSP直播到Android

对于我的应用程序,我必须从一个decklink卡流向Android应用程序(我必须是一个实时流,所以HLS或RTSP似乎是很好的解决方案,因为我的应用程序针对Android 3+)。 我使用decklink sdk重新编译了VLC,我能够通过网络直播到另一台PC(但它只能在60秒内使用RTSP)。 这是我尝试过的: HTTP流: ./vlc -vvv decklink:// –sout ‘#transcode{vcodec=mp4v,acodec=mpga,vb=56,ab=24,channels=1} :standard{access=http{use-key-frames},mux=ts,dst=:3001/stream.mpeg}’ 它适用于Android VLC 0.0.11,但仅适用于WiFi,不适用于3G。 我无法使用VideoView在我的应用程序中播放它。 这是我使用的代码和相应的错误消息: String url = “http://134.246.63.169:5554/stream.mpeg”; VideoView videoView = (VideoView) this.findViewById(R.id.videoView); videoView.setVideoURI(Uri.parse(url)); videoView.setMediaController(new MediaController(this)); videoView.requestFocus(); videoView.start(); 错误消息: 04-08 15:26:46.272: D/MediaPlayer(16349): Couldn’t open file on client side, trying server side 04-08 15:26:46.272: V/ChromiumHTTPDataSource(7680): connect on behalf of uid 1080867789 04-08 15:26:46.272: […]

Android:同时录制和流媒体

这不是一个真正的问题,因为它是我尝试解决我所遇到的最具挑战性function之一的所有尝试。 我使用libstreaming库将实时video流式传输到Wowza Server ,我需要在SD卡内同时录制它。 为了从社区中收集新的想法,我将在下面展示我的所有尝试。 将libstreaming流中的字节复制到mp4文件 发展 我们在libstreaming库中创建了一个拦截,将所有发送的字节复制到mp4文件中。 Libstreaming通过LocalSocket将字节发送到Wowza服务器。 它使用MediaRecorder访问摄像头和设备的麦克风,并将输出文件设置为LocalSocket的输入流。 我们要做的是围绕从InputStream扩展的输入流创建一个包装器,并在其中创建一个File输出流。 因此,每当libstreaming通过LocaSocket的输入流执行读取时,我们都会将所有数据复制到输出流,尝试创建有效的MP4文件。 障碍 当我们尝试读取文件时,它已损坏。 我们意识到MP4文件中缺少元信息。 特别是moovprimefaces。 我们试图延迟关闭流媒体,以便有时间发送这个标题(这仍然是一个猜测),但它没有用。 为了测试这些数据的一致性,我们使用付费软件尝试恢复video,包括标题。 它变得可玩了,但它主要是绿屏。 所以这成了一个不值得信赖的解决方案。 我们还尝试使用“untrunc”,一个免费的开源命令行程序,它甚至无法启动恢复,因为没有moovprimefaces。 使用编译到android的ffmpeg访问摄像头 发展 FFMPEG有一个带有java接口的gradle插件,可以在Android应用程序中使用它。 我们认为我们可以通过命令行访问摄像机(可能在“/ dev / video0”中)并将其发送到媒体服务器。 障碍 我们在尝试访问摄像头时收到错误“Permission Denied”。 解决方法是使设备具有访问权限,但它会使手机失去保修范围,并且可能会破坏它们。 使用ffmpeg编译到android结合MediaRecorder 发展 我们尝试通过MediaRecorder使FFMPEG流成为手机内部录制的mp4文件 障碍 FFMPEG无法传输尚未完成录制的MP4文件。 使用libfing编译到android的ffmpeg 发展 Libstreaming使用LocalServerSocket作为应用程序和服务器之间的连接,因此我们认为可以使用与LocalServerSocket本地地址连接的ffmpeg将流直接复制到SD卡内的本地文件。 在流式传输开始后,我们还运行了ffmpeg命令以开始将数据记录到文件中。 使用ffmpeg,我们相信它会以正确的方式创建一个MP4文件,这意味着包含了moov atom头。 障碍 创建的“地址”不能通过命令行读取,作为手机内的本地地址。 因此副本是不可能的。 使用OpenCV 发展 OpenCV是一个开源的跨平台库,为计算机视觉实验和应用程序提供构建块。 它提供用于捕获,处理和呈现图像数据的高级接口。 它有自己的API与设备摄像头连接,所以我们开始研究它,看它是否具有同时流和记录的必要function。 障碍 我们发现库并没有真正定义为这样做,而是更像图像数学操作。 我们甚至得到了使用libstreaming的建议(我们已经这样做了)。 使用Kickflip […]

将video从iPhone或Android流式传输到RTMP

有没有办法使用Red5将video从iPhone或Android流式传输到RTMP服务器? 我通过互联网搜索,只有2个应用程序,成功地做到这一点(UStream,Qik)他们关闭源代码的问题所以,如果有人可以帮我find一些代码片段,使这成为可能?

Android – 在我自己的项目中包含原生StageFrightfunction

我目前正在开发一种应用程序,它需要记录音频,将其编码为AAC,对其进行流式传输,并在反向中执行相同的操作 – 接收流,解码AAC和播放音频。 我使用MediaRecorder成功录制了AAC(包装在MP4容器中),并使用AudioRecord类成功上传了音频。 但是,我需要能够在流式传输时对音频进行编码,但这些类似乎都没有帮助我这样做。 我研究了一下,发现大多数有这个问题的人最终都使用像ffmpeg这样的本地库。 但我想知道,因为Android已经包含StageFright ,它具有可以进行编码和解码的本机代码(例如, AAC编码和AAC解码 ),有没有办法在我的应用程序上使用这个本机代码? 我怎样才能做到这一点? 如果我只需要用他们的本机代码实现一些JNI类,那就太好了。 另外,因为它是一个Android库,所以不会出现许可问题(如果我错了,请纠正我)。

使用RTP从Android到PC的相机流媒体

我想编写一个Android应用程序,用于将相机流式传输到PC(H.263,MPEG_4)。 我发现了一些库:sipandroid,jlibrtp。 SIPandroid:RTP数据包是流式传输的(wireshark在PC上很好地捕获它),但是VLC无法播放它。 Jlibrtp:API很阴暗,使用VLC无法正确播放流。 可能是对这些库进行了一些调整(使其适用于相机流),还是有一些其他库具有干净的API和样本? 感谢您的回答。

VLC RTSP直播到Android

对于我的应用程序,我必须从decklink卡stream到Android应用程序(我必须是一个实时stream,所以无论是HLS或RTSP似乎是很好的解决scheme,因为我的应用程序的目标是Android 3+)。 我使用decklink sdk重新编译了VLC,并且能够通过networking直播到另一台电脑(但是它与RTSP只能工作60秒)。 这是我试过的: HTTPstream: ./vlc -vvv decklink:// –sout '#transcode{vcodec=mp4v,acodec=mpga,vb=56,ab=24,channels=1} :standard{access=http{use-key-frames},mux=ts,dst=:3001/stream.mpeg}' 它是在Android VLC 0.0.11,但只在WiFi,而不是在3G。 而且我无法使用VideoView在我的应用程序中播放它。 这是我使用的代码和相应的错误消息: String url = "http://134.246.63.169:5554/stream.mpeg"; VideoView videoView = (VideoView) this.findViewById(R.id.videoView); videoView.setVideoURI(Uri.parse(url)); videoView.setMediaController(new MediaController(this)); videoView.requestFocus(); videoView.start(); 错误消息: 04-08 15:26:46.272: D/MediaPlayer(16349): Couldn't open file on client side, trying server side 04-08 15:26:46.272: V/ChromiumHTTPDataSource(7680): connect on behalf of uid 1080867789 04-08 15:26:46.272: […]

Xamarin.Android pdf生成器

最近我一直在Xamarin.Android工作。 我需要使用PDF生成器通过电子邮件发送报告。 我已经遇到以下博客 。 我真的不知道要把什么放在FileStream fs = new FileStream (???????); 除此之外,我想在屏幕上打开或看到这个pdf。 using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using System.IO; using XamiTextSharpLGPL; using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp; namespace PDFAapp { [Activity (Label = "PDFAapp", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { int […]

使用Android MediaPlayer进行stream式传输 – 捕获错误和缓冲

我无法使MediaPlayer在从HTTP URL进行stream式传输时具有弹性。 如果我开始播放文件,但是放弃了连接(例如飞行模式), MediaPlayer#OnErrorListener生成what=1, extra=-17 ,然后不久之后生成what=-38, extra=0 。 没有任何文档可以在API中看到,除了extra是“通常依赖于实现”。 我正在使用HTC Hero(好吧,这是T-Mobile英国的G2 Touch)。 其他人是否也得到相同的价值观,并认为这些价值观意味着联系消失了吗? 当连接重新出现时,如何恢复最佳状态? (保存当前的偏好,每5秒重试一次?) 如何知道设备何时决定开始播放正在缓冲的内容 – 是否有callback(除了轮询isPlaying() )? 另外,我不完全确定onBufferingUpdate提供了什么。 我使用了40分钟的播客MP3 (64kbps bitrate) – 缓冲区分别为1%,2%,3%。 当我寻找大约30分钟时,显示75%,然后当我回到起点回到5%时,这个callback的目的是什么,而不是显示什么是caching? 最后 – 有没有什么方法可以将stream式传输到MP3 ?

Android InputStream丢弃前两个字节(已修改的BluetoothChat)

我已经使用BluetoothChat示例中的代码来发送和接收来自Bluetooth Scale的字节数据。 秤从设备接收命令,然后发回一个字节数组。 {2,198,48,48,48,48,199,3}在我们的通信协议中,2 = STX,198 =分组开始,199 =分组结束,3 = ETX。 所有的工作都很好,除了下面的代码在BluetoothChatService.java奇怪的反应,它会丢弃前两个字节。 /** * This thread runs during a connection with a remote device. * It handles all incoming and outgoing transmissions. */ private class ConnectedThread extends Thread { private final BluetoothSocket mmSocket; private final InputStream mmInStream; private final OutputStream mmOutStream; public ConnectedThread(BluetoothSocket socket, String socketType) […]