我想用Java中的UDP DatagramPacket將從磁盤讀取的視頻文件傳輸到接收器。UDP上的視頻文件包 - 增量讀取和流
要點如下:雖然將要發送的文件是從磁盤中讀取,我應該以爲我不知道該文件的大小。總文件需要逐步讀取,並且文件的數據報包應具有不同的大小。
總之,我認爲我是一個流媒體視頻直播到接收器不知道我有多少數據將完全需要發送,並在何種速率的數據將得到生成。
現在,我有一次讀取磁盤上的文件,並轉換成數據包的數據包使用UDP套接字發送代碼。但我不知道如何在不知道原始文件大小的情況下對文件進行打包,並逐漸讀取模擬實時視頻流的文件。
上得到這個想法使用Java將是非常有用的實現任何輸入。一旦我得到這個基本的東西的工作,我需要實現一個實時文件傳輸協議。
發信人:
File file = new File("/crazy.mp4");
FileInputStream fis = new FileInputStream(file);
DatagramPacket pack;
int size = 0;
byte[] buffer = new byte[((int) file.length())];
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.BIG_ENDIAN);
while (true) {
size = fis.read(buffer);
pack = new DatagramPacket(buffer, buffer.length, address,
packet.getPort());
socket.send(pack);
}
接收機:
File file = new File("/crazyRecv.mp4");
FileOutputStream fos = new FileOutputStream(file);
DatagramPacket rpacket = new DatagramPacket(buffer, buffer.length);
while (true) {
socket.receive(rpacket);
fos.write(rpacket.getData(), 0, rpacket.getLength());
}
感謝。
告訴我們你的代碼。 – Raptor 2013-04-11 04:33:16
@Shivan:請檢查問題的修改版本的代碼片段 – arun 2013-04-11 04:41:42