我目前正在访问流媒体h264文件,并希望将其保存为切片帧的功能。但是,我在保存/打开.flv文件时遇到问题
当指向地址栏中的URL时 - 我被告知它是一个x-flv文件。
然后我尝试执行以下操作来保存流的一部分。
URL url = new URL("http://foo.bar.com/foo/bar");
HttpURLConnection conn = (HttpURLConnection) url
.openConnection(proxy);
conn.setRequestMethod("GET");
File f = new File("C:\\tmpArea\\tmp.flv");
FileWriter fr = new FileWriter(f);
bw = new BufferedWriter(fr);
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output = "";
int i = 0;
while (((output = br.readLine()) != null) && i < 100000) {
bw.write(output);
i++;
}
执行此操作后,我尝试在VLC Media Player中打开文件,并告知:
没有合适的解码器模块:VLC不支持音频或视频格式“undf”。
很遗憾,你无法解决这个问题。
然后我想,也许它不是真正的FLV文件,那就在我身上。所以我使用了磨机十六进制编辑器。在HexEditor中打开文件可以获得以下信息:
FLV 调用onMetaData 持续时间 宽度 高度 videodatarate 帧率 videocodecid audiodatarate audiosamplerate audiosamplesize 立体声 audiocodecid 编码器 Lavf52.10.6.0 文件大小....
我应该尝试另外一种方法来保存这些数据吗?是否存在我没有看到的转换/编解码器问题?
答案 0 :(得分:1)
您正在使用Reader
和Writer
来读取字节并将其转换为字符,以读取由字节组成的二进制文件。从字节到字符的转换将破坏数据。您应该使用InputStream
和OutputStream
代替。