保存FLV流

时间:2014-01-23 21:40:00

标签: java video-streaming vlc flv codec

我目前正在访问流媒体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 文件大小....

我应该尝试另外一种方法来保存这些数据吗?是否存在我没​​有看到的转换/编解码器问题?

1 个答案:

答案 0 :(得分:1)

您正在使用ReaderWriter来读取字节并将其转换为字符,以读取由字节组成的二进制文件。从字节到字符的转换将破坏数据。您应该使用InputStreamOutputStream代替。