如何解决如何通过我的本地网络正确地将音频发送到ExoPlayer客户端
我的目标是将计算机的输出声音流式传输到android智能手机。我有什么?我可以获得计算机的输出声音,并且可以转储到wav文件。在android客户端上,我可以播放Internet广播流或通过其URL存储在远程服务器上的wav文件。
在流式传输计算机的输出声音之前,我想将存储在计算机中的wav文件流式传输到智能手机。我的智能手机可以连接到我的计算机,但是发送一些数据包后,客户端关闭了连接,我听不到任何声音。
我需要有关如何通过本地网络流式播放wav文件的帮助,因此ExoPlayer客户端可以毫无问题地播放该文件,最终我想实时流式传输计算机的输出声音。我乐于接受技巧,阅读资源,代码段以及有关如何执行此操作的博客等任何内容。预先感谢。
C#服务器:
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
IPAddress ipAd = IPAddress.Parse("192.168.1.127");
// use local m/c IP address,and
// use the same in the client
/* Initializes the Listener */
TcpListener myList=new TcpListener(ipAd,8001);
/* Start Listeneting at the specified port */
myList.Start();
Console.WriteLine("The server is running at port 8001...");
Console.WriteLine("The local End point is :" +
myList.LocalEndpoint );
Console.WriteLine("Waiting for a connection.....");
Socket socket=myList.AcceptSocket();
Console.WriteLine("Connection accepted from " + socket.RemoteEndPoint);
using (FileStream fsSource = new FileStream(
@"C:\Users\tnc\Desktop\TestApp\dump.wav",FileMode.Open,FileAccess.Read
)) {
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
long numBytesToRead = fsSource.Length;
while (numBytesToRead > 0)
{
int n = fsSource.Read(buffer,bufferSize);
socket.Send(buffer,n,0);
// Break when the end of the file is reached.
if (n == 0)
break;
numBytesToRead -= bufferSize;
}
}
socket.Close();
myList.Stop();
}
}
}
Android客户端:(我不想放所有源文件,这部分负责播放流音频)
private void initializePlayer() {
player = new SimpleExoPlayer.Builder(this).build();
playerView.setPlayer(player);
// Create a data source factory.
DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory();
// Create a progressive media source pointing to a stream uri.
MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri("http://192.168.1.127:8001"));
// Create a player instance.
SimpleExoPlayer player = new SimpleExoPlayer.Builder(this).build();
// Set the media source to be played.
player.setMediaSource(mediaSource);
player.setPlayWhenReady(true);
// Prepare the player.
player.prepare();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。