###前提・実現したいこと
mp4ファイルをInputStreamで一定バイトごとに分割し読み取り、ファイル出力したい。
###発生している問題・エラーメッセージ
出力された各ファイルの内、1つ目に分割されたファイル以外のmp4が再生できない。
■関連の質問URL
受け取ったInputStreamをReadメソッドで一定のバイト数毎に読み込みアップロードしたい
↑こちらで頂いたご回答を参考に、データ分割には成功しました。
###該当のソースコード
public class InputStreamSplit { public static void main(String[] args) { File file = new File("C:/testdata.mp4"); try { InputStream inputStream; inputStream = new FileInputStream(file); splitAndOutput(inputStream); } catch (Exception e1) { e1.printStackTrace(); } } public static void splitAndOutput(InputStream in) throws IOException { int offset; int bytesRead; byte[] data = new byte[5242880];// バッファ boolean next; int outerLoop = 0; int innerLoop = 0; String renban = ""; do { offset = 0; // offsetのリセット Arrays.fill(data, (byte)0); next = false; while ((bytesRead = in.read(data, offset, data.length - offset)) != -1) { offset += bytesRead; innerLoop++; if (offset >= data.length) { System.out.println(data.length); next = true; break; } } if (offset >= 1) { ByteArrayInputStream bais = new ByteArrayInputStream(data, 0, offset); // ByteArrayInputStream bais = new ByteArrayInputStream(data); renban = String.format("%03d", outerLoop); FileOutputStream fos = new FileOutputStream("C:/output"+renban+".mp4"); fos.write(data); bais.close(); fos.close(); } outerLoop++; } while(next); } }
初心者のため、メソッドの利用法など、そもそも間違っているかもしれません。
誤りの箇所、修正方法など、もし分かりましたらご指摘いただきたいです。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/23 06:20