public void GenerateDash_WithLiveStreamingProfile_ProducesCorrectDashEncodeResult() { string outputFilename = "outputlive"; var options = new H264EncodeOptions { AdditionalMP4BoxFlags = new List <string>() { "-profile \"dashavc264:live\"", "-bs-switching no" } }; DEnc.Encoder encoder = new DEnc.Encoder(ffmpegPath, ffprobePath, mp4boxPath); DashConfig config = new DashConfig("testfile.ogg", RunPath, SubtitleQualities, outputFilename) { Options = options }; try { encodeResult = encoder.GenerateDash(config); Assert.NotNull(encodeResult.DashFilePath); Assert.NotNull(encodeResult.DashFileContent); } finally { foreach (var file in Directory.EnumerateFiles(RunPath, $"{outputFilename}_*")) { File.Delete(Path.Combine(RunPath, file)); } } }
public void GenerateDash_WithCancellationToken_ThrowsOperationCanceledException() { var tokenSource = new CancellationTokenSource(500); DEnc.Encoder encoder = new DEnc.Encoder(ffmpegPath, ffprobePath, mp4boxPath); DashConfig config = new DashConfig(testFileName, RunPath, Qualities, "output"); Assert.Throws <OperationCanceledException>(() => encodeResult = encoder.GenerateDash(config, cancel: tokenSource.Token)); }
public void GenerateDash_NormalEncode_ProducesCorrectDashEncodeResult() { DEnc.Encoder encoder = new DEnc.Encoder(ffmpegPath, ffprobePath, mp4boxPath); DashConfig config = new DashConfig(testFileName, RunPath, Qualities, "output"); encodeResult = encoder.GenerateDash(config); Assert.NotNull(encodeResult.DashFilePath); Assert.NotNull(encodeResult.DashFileContent); Assert.NotNull(encodeResult.MediaFiles); Assert.Equal(4, encodeResult.MediaFiles.Count()); }
public void GenerateDash_WithManySubtitleLanguages_ProducesSubtitleFiles() { DEnc.Encoder encoder = new DEnc.Encoder(ffmpegPath, ffprobePath, mp4boxPath); encoder.EnableStreamCopying = true; DashConfig config = new DashConfig(multiLanguageTestFileName, RunPath, MultiLanguageQualities, "outputlang"); encodeResult = encoder.GenerateDash(config); Assert.NotNull(encodeResult.DashFilePath); Assert.NotNull(encodeResult.DashFileContent); Assert.NotNull(encodeResult.MediaFiles); Assert.Equal("avc1.640028", encodeResult.DashFileContent.Period[0].AdaptationSet[0].Representation[0].Codecs); Assert.True(encodeResult.DashFileContent.Period[0].AdaptationSet.Where(x => x.Lang == "jpn" && x.MaxFrameRate == null).SingleOrDefault().Representation.Count() == 1); Assert.True(encodeResult.DashFileContent.Period[0].AdaptationSet.Where(x => x.Lang == "eng" && x.MaxFrameRate == null).Count() == 2); }
public void GenerateDash_WithManySubtitles_ProducesSubtitleFiles() { DEnc.Encoder encoder = new DEnc.Encoder(ffmpegPath, ffprobePath, mp4boxPath); encoder.EnableStreamCopying = true; DashConfig config = new DashConfig(subtitleTestFileName, RunPath, SubtitleQualities, "outputmulti"); encodeResult = encoder.GenerateDash(config); Assert.NotNull(encodeResult.DashFilePath); Assert.NotNull(encodeResult.DashFileContent); Assert.NotNull(encodeResult.MediaFiles); Assert.Equal(15, encodeResult.MediaFiles.Count()); Assert.Contains("outputmulti_audio_default_1_dashinit.mp4", encodeResult.MediaFiles); Assert.Contains("outputmulti_subtitle_eng_2.vtt", encodeResult.MediaFiles); Assert.Contains("outputmulti_subtitle_und_10.vtt", encodeResult.MediaFiles); Assert.Contains("outputmulti_subtitle_eng_12.vtt", encodeResult.MediaFiles); }