From ffbb07f2959071484405c4fe94dc5c8eedc5fe44 Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 4 Mar 2020 13:15:39 +0100 Subject: [PATCH] Make the ipod format output compatible with non seekable output stream (pipe).#36 --- src/libs/av/impl/AvInfo.cpp | 2 ++ src/libs/av/impl/AvTranscoder.cpp | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/libs/av/impl/AvInfo.cpp b/src/libs/av/impl/AvInfo.cpp index e9b1bd8c..b8fc392a 100644 --- a/src/libs/av/impl/AvInfo.cpp +++ b/src/libs/av/impl/AvInfo.cpp @@ -235,6 +235,8 @@ guessMediaFileFormat(const std::filesystem::path& file) if (!format || !format->name) return {}; + LMS_LOG(AV, DEBUG) << "File '" << file.string() << "', formats = '" << format->name << "'"; + auto formats {StringUtils::splitString(format->name, ",")}; if (formats.size() > 1) LMS_LOG(AV, INFO) << "File '" << file.string() << "' reported several formats: '" << format->name << "'"; diff --git a/src/libs/av/impl/AvTranscoder.cpp b/src/libs/av/impl/AvTranscoder.cpp index f98b3771..b9f82ad3 100644 --- a/src/libs/av/impl/AvTranscoder.cpp +++ b/src/libs/av/impl/AvTranscoder.cpp @@ -162,6 +162,13 @@ Transcoder::start() args.emplace_back("-f"); args.emplace_back(mediaFileFormat->format); + // Workaround for ipod streams: make it compatible with non seekable output + if (mediaFileFormat->format == "ipod") + { + args.emplace_back("-movflags"); + args.emplace_back("frag_keyframe"); + } + _outputMimeType = mediaFileFormat->mimeType; }