Articles of stream

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) […]

android mediaplayerstream在线mp3文件

我有android应用程序streammp3文件,播放器中播放此文件,但问题是mediaPlayer.prepare(); 需要很长时间的缓冲区和应用程序冻结,所以我试图使用prepareAsync(); //但是使用这个function我不能让玩家播放下一个文件 只是在线单个文件,如果我需要播放另一个文件,我应该closures重新启动活动时 玩结束不玩下,这是我的代码 我很抱歉我的英文不好 这是我的代码任何帮助,请 public void playMp3(String _link) { mediaPlayer.setOnPreparedListener(new OnPreparedListener() { public void onPrepared(MediaPlayer mp) { if(!mediaPlayer.isPlaying()){ mediaPlayer.start(); Progressbar.setVisibility(View.INVISIBLE); play.setVisibility(View.GONE); stop.setVisibility(View.VISIBLE); songProgressBar.setProgress(0); songProgressBar.setMax(100); } updateProgressBar(); } }); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub mediaPlayer.reset(); songProgressBar.setProgress(0); songProgressBar.setSecondaryProgress(0); play.setVisibility(View.VISIBLE); stop.setVisibility(View.GONE); link = "http://server11.mp3quran.net/hawashi/002.mp3"; playMp3(link); } […]

Android设备作为A2DPconfiguration文件的接收者

基本上,我现在想要做的是使用Android设备作为A2DP接收器,当配对build立时,android会播放从发送器接收到的声音。 我担心,如果我使用STPconfiguration文件,可能会导致stream式传输延迟。 所以,我想使用A2DP,但这是可能的使用Android设备作为A2DP的接收器? 以及如何做到这一点?

如何通过蓝牙读取所有字节?

我有一个应用程序,使用蓝牙从其他设备接收一些数据(字节)。 一切进展顺利,但是我一起收到所有字节的小问题。 收到字节后,我会在Toast上显示它们,以便testing它们。 当其他设备一起发送10个字节(例如:“ABCDEFGHIJ”)时,程序将只读取第一个字节“A”,并显示在Toast上,然后进入第二次迭代,读取另外9个字节,并显示“ BCDEFGHIJ“在吐司上。 这是我的代码: byte[] buffer = new byte[1024]; // Read 1K character at a time. int bytes = 0; // Number of bytes. while(true) { try { // Read from the InputStream. bytes = bInStream.read(buffer); // Send the obtained bytes to the MainActivity. mainActivityHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer).sendToTarget(); } catch(IOException e) { connectionLost(); […]

如何在Android上解锁InputStream.read()?

我有一个线程在一个循环中调用InputStream的read()方法。 当没有更多字节要读取时,数据stream将被阻塞,直到新的数据到达。 如果我从另一个线程的InputStream调用close() ,则stream被closures,但被阻塞的read()调用仍然被阻塞。 我会假设read()方法现在应该返回值为-1来表示stream的结束,但它不。 相反,它会持续阻塞数分钟,直到发生tcp超时。 如何取消阻止close()调用? 编辑: 显然,当阻塞read()调用对应的stream或套接字是close() 'd时,常规JRE将立即抛出SocketException 。 我正在使用的Android Java运行时不会。 对于Android环境的解决scheme的任何提示将不胜感激。