java - 保存 FLV 流

标签 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 媒体播放器中打开该文件,并被告知:

No suitable decoder module: VLC does not support the audio or video format "undf".

Unfortunately there is no way for you to fix this.

然后我想,也许这并不是真正的 FLV 文件,而这就是我的责任。所以我使用了普通的十六进制编辑器。在 HexEditor 中打开文件会提供以下信息:

FLV 元数据上 期间 宽度 高度 视频数据率 帧率 视频编解码器 音频数据率 音频采样率 音频样本大小 立体声 音频编解码器 编码器 拉夫52.10.6.0 文件大小....

我应该尝试以不同的方式保存这些数据吗?是否存在我没​​有看到的转换/编解码器问题?

最佳答案

您正在使用ReaderWriter,它们旨在读取字节并将其转换为字符,以读取二进制文件由字节组成。从字节到字符的转换会损坏数据。您应该改用 InputStreamOutputStream

关于java - 保存 FLV 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21319905/

相关文章:

java - 如何修复 ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY

ffmpeg - 如果给定 M3U8 播放列表,如何按需创建 TS 片段

python - 无法使用 vlc 的 python 绑定(bind)运行以下代码

python - 在 Kivy 中嵌入 youtube 视频

lua - 在需要 luac 32 位的情况下编译 VLC 失败

macos - 有没有办法用 AppleScript 在 VLC 中打开文件?

java - 在java中读取具有可变数据类型的CSV

java - 尝试在 Eclipse 中对 Java 服务器使用序列化时出现 Android Studio Classnotfound 异常

java - Java判断两个日期是否在同一天

android - 生成 Proguarded 签名 APK 问题?