仅供参考
发送端:
public class UdpSend {
static String destAddressStr = "224.0.0.1";
static int destPortInt = 9998;
static int TTLTime = 4;
private final static String mPath = "/sdcard/video/live.ts";
public static void start() throws Exception {
new Thread() {
@Override
public void run() {
Log.i(MainActivity.TAG, "UdpSend--start");
MulticastSocket multiSocket=null;
try {
InetAddress destAddress = InetAddress.getByName(destAddressStr);
if (!destAddress.isMulticastAddress()) {//检测该地址是否是多播地址
Log.e(MainActivity.TAG, "UdpSend--start not multiple cast address!!");
// throw new Exception("地址不是多播地址");
}
multiSocket = new MulticastSocket();
multiSocket.setTimeToLive(TTLTime);
byte[] buffer = new byte[4092];
DatagramPacket dp = new DatagramPacket(buffer, buffer.length, destAddress, destPortInt);
InputStream inputStream = new FileInputStream(mPath);
int len;
while ((len = inputStream.read(buffer)) != -1) {
Log.i(MainActivity.TAG, "UdpSend--start len=" + len);
dp.setData(buffer);
multiSocket.send(dp);
sleep(1);
}
multiSocket.send(dp);
} catch (IOException |InterruptedException e) {
e.printStackTrace();
} finally {
if (multiSocket!=null)
multiSocket.close();
}
}
}.start();
}
}
播放端:
public static String ADDRESS = "udp://@224.0.0.1:9998";
public void startUdp(Context context){
try {
UdpSend.start();
mMediaPlayer.reset();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
// 设置需要播放的视频
mMediaPlayer.setDataSource(context.getApplicationContext(), Uri.parse(ADDRESS));
// 把视频画面输出到SurfaceView
SurfaceHolder holder = mSurfaceView.getHolder();
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
// 播放
mMediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
}