From 5b9b91d6e8375aa4fab2979756be83b8da34e1ac Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sun, 22 Dec 2019 15:01:49 +0100 Subject: [PATCH] Add try-with-resources blocks to free up the HLS playlist file handle --- .../ctbrec/recorder/PlaylistGenerator.java | 36 ++++++++++--------- .../recorder/download/hls/HlsDownload.java | 18 +++++----- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/common/src/main/java/ctbrec/recorder/PlaylistGenerator.java b/common/src/main/java/ctbrec/recorder/PlaylistGenerator.java index 7656df2d..2050eb87 100644 --- a/common/src/main/java/ctbrec/recorder/PlaylistGenerator.java +++ b/common/src/main/java/ctbrec/recorder/PlaylistGenerator.java @@ -135,23 +135,25 @@ public class PlaylistGenerator { public void validate(File recDir) throws IOException, ParseException, PlaylistException { File playlist = new File(recDir, "playlist.m3u8"); if(playlist.exists()) { - PlaylistParser playlistParser = new PlaylistParser(new FileInputStream(playlist), Format.EXT_M3U, Encoding.UTF_8, ParsingMode.LENIENT); - Playlist m3u = playlistParser.parse(); - MediaPlaylist mediaPlaylist = m3u.getMediaPlaylist(); - int playlistSize = mediaPlaylist.getTracks().size(); - File[] segments = recDir.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return name.endsWith(".ts"); - } - }); - if(segments.length == 0) { - throw new InvalidPlaylistException("No segments found. Playlist is empty"); - } else if(segments.length != playlistSize) { - throw new InvalidPlaylistException("Playlist size and amount of segments differ (" + segments.length + " != " + playlistSize + ")"); - } else { - LOG.debug("Generated playlist looks good"); - } + try(FileInputStream fin = new FileInputStream(playlist)) { + PlaylistParser playlistParser = new PlaylistParser(fin, Format.EXT_M3U, Encoding.UTF_8, ParsingMode.LENIENT); + Playlist m3u = playlistParser.parse(); + MediaPlaylist mediaPlaylist = m3u.getMediaPlaylist(); + int playlistSize = mediaPlaylist.getTracks().size(); + File[] segments = recDir.listFiles(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return name.endsWith(".ts"); + } + }); + if(segments.length == 0) { + throw new InvalidPlaylistException("No segments found. Playlist is empty"); + } else if(segments.length != playlistSize) { + throw new InvalidPlaylistException("Playlist size and amount of segments differ (" + segments.length + " != " + playlistSize + ")"); + } else { + LOG.debug("Generated playlist looks good"); + } + } } else { throw new FileNotFoundException(playlist.getAbsolutePath() + " does not exist"); } diff --git a/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java b/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java index 336b03d2..e287c260 100644 --- a/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java +++ b/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java @@ -332,14 +332,16 @@ public class HlsDownload extends AbstractHlsDownload { private double getPlaylistLength(File playlist) throws IOException, ParseException, PlaylistException { if (playlist.exists()) { - PlaylistParser playlistParser = new PlaylistParser(new FileInputStream(playlist), Format.EXT_M3U, Encoding.UTF_8, ParsingMode.LENIENT); - Playlist m3u = playlistParser.parse(); - MediaPlaylist mediaPlaylist = m3u.getMediaPlaylist(); - double length = 0; - for (TrackData trackData : mediaPlaylist.getTracks()) { - length += trackData.getTrackInfo().duration; - } - return length; + try(FileInputStream fin = new FileInputStream(playlist)) { + PlaylistParser playlistParser = new PlaylistParser(fin, Format.EXT_M3U, Encoding.UTF_8, ParsingMode.LENIENT); + Playlist m3u = playlistParser.parse(); + MediaPlaylist mediaPlaylist = m3u.getMediaPlaylist(); + double length = 0; + for (TrackData trackData : mediaPlaylist.getTracks()) { + length += trackData.getTrackInfo().duration; + } + return length; + } } else { throw new FileNotFoundException(playlist.getAbsolutePath() + " does not exist"); }