Ejemplo n.º 1
0
        public void GetMjpegStringWithNumFrameMoreDurationTest()
        {
            //Arrange
            const string sourceFilePath      = "source file path";
            const string destinationPath     = "my path";
            const string destinationFileName = "my file";

            string destinationFilePath = Path.Combine(destinationPath, destinationFileName);
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
            {
                VideoDuration = (int)serviceConfigurator.ScreenshotTime.TotalMilliseconds - 1,
                VideoWidth    = 4096,
                VideoHeight   = 2304
            };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var stringBuilder   = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            string ffmpegStr = "-i \"{0}\" -f image2 -ss {1} -frames:v 1 -y \"{2}.jpg\"";

            ffmpegStr = String.Format(ffmpegStr,
                                      sourceFilePath,
                                      0,
                                      destinationFilePath);

            //Act
            string str = stringBuilder.GetStringForScreenshot();

            //Assert
            Assert.AreEqual(ffmpegStr, str);
        }
Ejemplo n.º 2
0
        public VideoMediaInfo GetMetadata(string filePath)
        {
            var metadata = new VideoMediaInfo();

            Open(filePath);

            metadata.AudioBitRate  = GetIntValue(MediaInfoParams.AudioBps);
            metadata.AudioChannels = GetIntValue(MediaInfoParams.AudioChannel);
            metadata.VideoDuration = GetIntValue(MediaInfoParams.Duration);
            metadata.VideoHeight   = GetIntValue(MediaInfoParams.VideHeight);
            metadata.VideoWidth    = GetIntValue(MediaInfoParams.VideoWidth);
            metadata.VideoBitRate  = GetIntValue(MediaInfoParams.VideoBps);
            //

            metadata.GeneralFileSize = GetLongValue(MediaInfoParams.FileSize);
            //

            metadata.VideoFrameRate = GetDoubleValue(MediaInfoParams.VideoFps);
            //

            metadata.AudioFormat            = _mediaInfo.Option(MediaInfoParams.Option, MediaInfoParams.AudioCodec);
            metadata.AudioFormatProfile     = _mediaInfo.Option(MediaInfoParams.Option, MediaInfoParams.AudioProfile);
            metadata.GeneralFormat          = _mediaInfo.Option(MediaInfoParams.Option, MediaInfoParams.Container);
            metadata.VideoFormat            = _mediaInfo.Option(MediaInfoParams.Option, MediaInfoParams.VideoCodec);
            metadata.VideoFormatSettingsGOP = _mediaInfo.Option(MediaInfoParams.Option, MediaInfoParams.VideoKeyFrame);
            //

            SetVideoFormatProfile(metadata);
            //

            Close();

            return(metadata);
        }
        public void GetMetadataErroVideoProfileTest()
        {
            //Arrange
            const string filePath     = "my file path";
            const string videoProfile = "profile";
            const string profileLevel = "level";
            int          count        = 0;
            var          testValues   = new[] { null, videoProfile, String.Format("{0}{1}{2}", videoProfile, "@", profileLevel), String.Format("{0}{1}", videoProfile, "@L") };

            _mockMediaInfo.Setup((m) => m.Open(It.IsAny <string>())).Returns(1);
            _mockMediaInfo.Setup(SetupMediaInfoParam(MediaInfoParams.VideoFormatProfile)).Returns <string, string>((s1, s2) =>
            {
                string str = testValues[count];
                count++;
                return(str);
            });

            //Act
            VideoMediaInfo metadata1 = _metadataInfo.GetMetadata(filePath);
            VideoMediaInfo metadata2 = _metadataInfo.GetMetadata(filePath);
            VideoMediaInfo metadata3 = _metadataInfo.GetMetadata(filePath);
            VideoMediaInfo metadata4 = _metadataInfo.GetMetadata(filePath);

            //Assert
            Assert.AreEqual(null, metadata1.VideoFormatProfile);
            Assert.AreEqual(videoProfile, metadata2.VideoFormatProfile);
            Assert.AreEqual(videoProfile, metadata3.VideoFormatProfile);
            Assert.AreEqual(videoProfile, metadata4.VideoFormatProfile);
        }
Ejemplo n.º 4
0
        public void AdjustVideoKeyFrameSuccessTest()
        {
            //Arrange
            var serviceConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);
            int myKeyFrame          = serviceConfigurator.MaxKeyFrame - 1;

            var metadataKeyFrame0 = new VideoMediaInfo
            {
                VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MinKeyFrame - 1)
            };
            var metadataKeyFrameMore60 = new VideoMediaInfo
            {
                VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame + 1)
            };
            var metadataKeyFrame = new VideoMediaInfo
            {
                VideoFormatSettingsGOP = String.Format("M=1, N={0}", myKeyFrame)
            };

            var metadataService1 = new MetadataService(serviceConfigurator, metadataKeyFrame0);
            var metadataService2 = new MetadataService(serviceConfigurator, metadataKeyFrameMore60);
            var metadataService3 = new MetadataService(serviceConfigurator, metadataKeyFrame);

            //Act;
            int keyFrame0      = metadataService1.AdjustKeyFrame();
            int keyFrameMore60 = metadataService2.AdjustKeyFrame();
            int keyFrame       = metadataService3.AdjustKeyFrame();

            //Assert
            Assert.AreEqual(serviceConfigurator.KeyFrame, keyFrame0);
            Assert.AreEqual(serviceConfigurator.KeyFrame, keyFrameMore60);
            Assert.AreEqual(myKeyFrame, keyFrame);
        }
Ejemplo n.º 5
0
        public void CheckCorrectAudioValueListTest()
        {
            //Arrange
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
            {
                AudioBitRate       = serviceConfigurator.AudioBps720P1Channel,
                AudioChannels      = (int)AudioChannel.One,
                AudioFormat        = "AAC",
                AudioFormatProfile = "LC",
                VideoWidth         = 4096,
                VideoHeight        = 2304
            };

            var metadataService = new MetadataService(serviceConfigurator, metadata);

            //Act
            metadataService.AdjustAudioBps();
            metadataService.AdjustAudioCodec();
            metadataService.AdjustAudioProfile();

            //Assert
            Assert.IsTrue(metadataService.CorrectAudioValueList.All((b) => b.Value));
        }
Ejemplo n.º 6
0
        public void AdjustContainerTest()
        {
            //Arrange
            const string myContainer         = "myContainer";
            const string anotherContainer    = "anotherContainer";
            var          serviceConfigurator = new MetadataServiceConfigurator(myContainer, null, null, null, null);

            var metadata1 = new VideoMediaInfo
            {
                GeneralFormat = myContainer
            };
            var metadata2 = new VideoMediaInfo
            {
                GeneralFormat = anotherContainer
            };
            var metadataWithoutContainer = new VideoMediaInfo
            {
                GeneralFormat = null
            };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadataWithoutContainer);

            //Act
            string container1 = metadataService1.AdjustContainer();
            string container2 = metadataService2.AdjustContainer();

            //Act & Assert
            CustomAssert.IsThrown <MediaFormatException>(() => metadataService3.AdjustContainer());

            //Assert
            Assert.AreEqual(myContainer, container1);
            Assert.AreEqual(myContainer, container2);
        }
Ejemplo n.º 7
0
        public void CheckCorrectVideoValueListTest()
        {
            //Arrange
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
            {
                AudioBitRate           = serviceConfigurator.AudioBps720P1Channel,
                AudioChannels          = (int)AudioChannel.One,
                AudioFormat            = serviceConfigurator.AudioCodec.Codec,
                AudioFormatProfile     = serviceConfigurator.AudioCodec.DefaultProfile,
                VideoBitRate           = serviceConfigurator.VideoBps1920X1080,
                VideoFormat            = serviceConfigurator.VideoCodec.Codec,
                VideoFormatProfile     = serviceConfigurator.VideoCodec.DefaultProfile,
                VideoFrameRate         = serviceConfigurator.MaxFps - 1,
                VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.KeyFrame),
                VideoWidth             = 4096,
                VideoHeight            = 2304
            };

            var metadataService = new MetadataService(serviceConfigurator, metadata);

            //Act
            metadataService.AdjustVideoWidth();
            metadataService.AdjustVideoHeight();
            metadataService.AdjustKeyFrame();
            metadataService.AdjustVideoBps();
            metadataService.AdjustVideoCodec();
            metadataService.AdjustVideoFps();
            metadataService.AdjustVideoProfile();

            //Assert
            Assert.IsTrue(metadataService.CorrectVideoValueList.All((b) => b.Value));
        }
Ejemplo n.º 8
0
        public void AdjustVideoFpsSuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1 = new VideoMediaInfo
            {
                VideoFrameRate = 29.970
            };

            var metadata2 = new VideoMediaInfo
            {
                VideoFrameRate = metadataConfigurator.MinFps - 1
            };

            var metadata3 = new VideoMediaInfo
            {
                VideoFrameRate = metadataConfigurator.MaxFps + 1
            };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata1);
            var metadataService2 = new MetadataService(metadataConfigurator, metadata2);
            var metadataService3 = new MetadataService(metadataConfigurator, metadata3);

            //Act
            double adjustedFps1 = metadataService1.AdjustVideoFps();

            //Act & Assert
            CustomAssert.IsThrown <MediaFormatException>(() => metadataService2.AdjustVideoFps());
            CustomAssert.IsThrown <MediaFormatException>(() => metadataService3.AdjustVideoFps());

            //Assert
            Assert.AreEqual(metadata1.VideoFrameRate, adjustedFps1);
        }
Ejemplo n.º 9
0
        private void StartScreenshot(MetadataServiceConfigurator serviceConfigurator, string[] filePathes)
        {
            int    count        = 0;
            double avgEncodeFps = 0;
            var    errorVideos  = new List <string>();
            var    allSw        = new Stopwatch();
            var    decodeSw     = new Stopwatch();

            foreach (string filePath in filePathes)
            {
                allSw.Restart();
                Trace.WriteLine(String.Format("\n-------------Start decode file: {0}-------------\n", filePath));

                try
                {
                    string         destinationFileName = GetDestinationFileName(filePath);
                    var            mediaInfo           = new MediaInfoWrapper();
                    var            metadataInfo        = new VideoMetadataInfo(mediaInfo);
                    VideoMediaInfo metadata            = metadataInfo.GetMetadata(filePath);
                    var            metadataService     = new MetadataService(serviceConfigurator, metadata);
                    var            stringBuilder       = new FfmpegService(metadataService, filePath, _destinationPath, destinationFileName);
                    var            ffmpeg       = new Ffmpeg(stringBuilder);
                    string         ffmpegString = stringBuilder.GetStringForScreenshot();

                    WriteFileInfo(ffmpegString, metadata);

                    decodeSw.Restart();
                    ffmpeg.StartScreenshotProcess();
                    allSw.Stop();
                    decodeSw.Stop();
                    WriteFinishProcess(decodeSw.Elapsed, allSw.Elapsed, ffmpeg.EncodeFps);

                    avgEncodeFps += ffmpeg.EncodeFps;
                    count++;
                }
                catch (MediaFormatException ex)
                {
                    string errorMessage = String.Format("Error File:\t\t{0}.\nError Param:\t\t{1}", filePath, ex.Message);
                    Trace.WriteLine(errorMessage);
                    errorVideos.Add(errorMessage);
                }
                catch (ExternalProcessException ex)
                {
                    string errorMessage = String.Format("Error File:\t\t{0}.\nFfmpeg return:\t\t{1}\n{2}", filePath, ex.Result, ex.Arguments);
                    Trace.WriteLine(errorMessage);
                    errorVideos.Add(errorMessage);
                }
                finally
                {
                    Trace.WriteLine(String.Format("\n-------------Finish decode file: {0}-------------\n", filePath));
                }
            }

            avgEncodeFps = avgEncodeFps / count;
            WriteFinishInfo(avgEncodeFps, count, errorVideos);
        }
Ejemplo n.º 10
0
        private void SetVideoFormatProfile(VideoMediaInfo metadata)
        {
            string val = _mediaInfo.Option(MediaInfoParams.Option, MediaInfoParams.VideoFormatProfile);

            if (val == null)
            {
                return;
            }

            string[] splitStr = Regex.Split(val, "@");
            metadata.VideoFormatProfile = splitStr[0];
        }
Ejemplo n.º 11
0
        public void GetMp4StringFromIncorrectMetadataTest()
        {
            //Arrange
            const string sourceFilePath      = "source file path";
            const string destinationPath     = "my path";
            const string destinationFileName = "my file";

            string destinationFilePath = Path.Combine(destinationPath, destinationFileName);
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();
            var metadata = new VideoMediaInfo
            {
                GeneralFormat          = "MPEG-PS",
                AudioBitRate           = serviceConfigurator.AudioBps720P1Channel + 1,
                AudioChannels          = (int)AudioChannel.One,
                AudioFormat            = "AC-3",
                AudioFormatProfile     = null,
                VideoBitRate           = serviceConfigurator.VideoBps1920X1080 + 1,
                VideoFormat            = "MPEG Video",
                VideoFrameRate         = serviceConfigurator.MaxFps - 1,
                VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame + 1),
                VideoFormatProfile     = "High",
                VideoWidth             = 4096,
                VideoHeight            = 2304,
            };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var stringBuilder   = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            string ffmpegStr = "-i \"{0}\" -f {1} -vcodec {2} -b:v {3} -r {4} -g {5} -s {6}x{7} -profile {8} -acodec {9} -b:a {10} -quality good -cpu-used 0 -threads {11} -y \"{12}.{13}\"";

            ffmpegStr = String.Format(ffmpegStr,
                                      sourceFilePath,
                                      metadataService.ContainerForFfmpeg,
                                      metadataService.VideoCodecLib,
                                      serviceConfigurator.VideoBps1920X1080,
                                      serviceConfigurator.MaxFps - 1,
                                      serviceConfigurator.KeyFrame,
                                      metadata.VideoWidth,
                                      metadata.VideoHeight,
                                      serviceConfigurator.VideoCodec.DefaultProfile,
                                      metadataService.AudioCodecLib,
                                      serviceConfigurator.AudioBps720P1Channel,
                                      Environment.ProcessorCount,
                                      destinationFilePath,
                                      serviceConfigurator.FfmpegContainer);

            //Act
            string str = stringBuilder.GetStringForEncoder();

            //Assert
            Assert.AreEqual(ffmpegStr, str, true);
        }
Ejemplo n.º 12
0
        public void GetMp4StringFromIncorrectMetadataTest()
        {
            //Arrange
            const string sourceFilePath = "source file path";
            const string destinationPath = "my path";
            const string destinationFileName = "my file";

            string destinationFilePath = Path.Combine(destinationPath, destinationFileName);
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();
            var metadata = new VideoMediaInfo
                {
                    GeneralFormat = "MPEG-PS",
                    AudioBitRate = serviceConfigurator.AudioBps720P1Channel + 1,
                    AudioChannels = (int) AudioChannel.One,
                    AudioFormat = "AC-3",
                    AudioFormatProfile = null,
                    VideoBitRate = serviceConfigurator.VideoBps1920X1080 + 1,
                    VideoFormat = "MPEG Video",
                    VideoFrameRate = serviceConfigurator.MaxFps - 1,
                    VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame + 1),
                    VideoFormatProfile = "High",
                    VideoWidth = 4096,
                    VideoHeight = 2304,
                };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var stringBuilder = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            string ffmpegStr = "-i \"{0}\" -f {1} -vcodec {2} -b:v {3} -r {4} -g {5} -s {6}x{7} -profile {8} -acodec {9} -b:a {10} -quality good -cpu-used 0 -threads {11} -y \"{12}.{13}\"";
            ffmpegStr = String.Format(ffmpegStr,
                                      sourceFilePath,
                                      metadataService.ContainerForFfmpeg,
                                      metadataService.VideoCodecLib,
                                      serviceConfigurator.VideoBps1920X1080,
                                      serviceConfigurator.MaxFps - 1,
                                      serviceConfigurator.KeyFrame,
                                      metadata.VideoWidth,
                                      metadata.VideoHeight,
                                      serviceConfigurator.VideoCodec.DefaultProfile,
                                      metadataService.AudioCodecLib,
                                      serviceConfigurator.AudioBps720P1Channel,
                                      Environment.ProcessorCount,
                                      destinationFilePath,
                                      serviceConfigurator.FfmpegContainer);

            //Act
            string str = stringBuilder.GetStringForEncoder();

            //Assert
            Assert.AreEqual(ffmpegStr, str, true);
        }
Ejemplo n.º 13
0
        public void AdjustVideoProfileTest()
        {
            //Arrange
            const string myCodec        = "myCodec";
            const string anotherProfile = "anotherProfile";
            const string firstProfile   = "firstProfile";
            const string secondProfile  = "secondProfile";

            var videoCodec = new CodecData(myCodec, null, firstProfile, secondProfile);

            var serviceConfigurator = new MetadataServiceConfigurator(null, null, videoCodec, null, null);

            var metadata1 = new VideoMediaInfo
            {
                VideoFormat        = myCodec,
                VideoFormatProfile = firstProfile
            };
            var metadata2 = new VideoMediaInfo
            {
                VideoFormat        = myCodec,
                VideoFormatProfile = secondProfile
            };
            var metadata3 = new VideoMediaInfo
            {
                VideoFormat        = myCodec,
                VideoFormatProfile = anotherProfile
            };
            var metadataWithoutCodec = new VideoMediaInfo
            {
                VideoFormat        = myCodec,
                VideoFormatProfile = null
            };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadata3);
            var metadataService4 = new MetadataService(serviceConfigurator, metadataWithoutCodec);

            //Act
            string profile1 = metadataService1.AdjustVideoProfile();
            string profile2 = metadataService2.AdjustVideoProfile();
            string profile3 = metadataService3.AdjustVideoProfile();
            string profile4 = metadataService4.AdjustVideoProfile();

            //Assert
            Assert.AreEqual(firstProfile, profile1);
            Assert.AreEqual(secondProfile, profile2);
            Assert.AreEqual(firstProfile, profile3);
            Assert.AreEqual(firstProfile, profile4);
        }
Ejemplo n.º 14
0
        public void AdjustAudioProfileTest()
        {
            //Arrange
            const string myCodec1       = "myCodec1";
            const string myCodec2       = "myCodec2";
            const string anotherProfile = "anotherProfile";
            const string firstProfile   = "firstProfile";

            var audioCodec = new CodecData(myCodec1, null, firstProfile);

            var serviceConfigurator = new MetadataServiceConfigurator(null, null, null, audioCodec, new CodecData(myCodec2, null));

            var metadata1 = new VideoMediaInfo
            {
                AudioFormat        = myCodec1,
                AudioFormatProfile = firstProfile
            };
            var metadata2 = new VideoMediaInfo
            {
                AudioFormat        = myCodec1,
                AudioFormatProfile = anotherProfile
            };
            var metadata3 = new VideoMediaInfo
            {
                AudioFormat        = myCodec2,
                AudioFormatProfile = anotherProfile
            };
            var metadataWithoutProfile = new VideoMediaInfo
            {
                AudioFormat        = myCodec1,
                AudioFormatProfile = null
            };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadata3);
            var metadataService4 = new MetadataService(serviceConfigurator, metadataWithoutProfile);

            //Act
            string profile1 = metadataService1.AdjustAudioProfile();
            string profile2 = metadataService2.AdjustAudioProfile();
            string profile3 = metadataService3.AdjustAudioProfile();
            string profile4 = metadataService4.AdjustAudioProfile();

            //Assert
            Assert.AreEqual(firstProfile, profile1);
            Assert.AreEqual(firstProfile, profile2);
            Assert.AreEqual(anotherProfile, profile3);
            Assert.AreEqual(firstProfile, profile4);
        }
Ejemplo n.º 15
0
        private void StartNewEncode(string[] filePathes)
        {
            int count       = 0;
            var errorVideos = new List <string>();
            var allSw       = new Stopwatch();
            var decodeSw    = new Stopwatch();

            foreach (string filePath in filePathes)
            {
                allSw.Restart();
                Trace.WriteLine(String.Format("\n-------------Start decode file: {0}-------------\n", filePath));

                try
                {
                    var            mediaInfo    = new MediaInfoWrapper();
                    var            metadataInfo = new VideoMetadataInfo(mediaInfo);
                    VideoMediaInfo metadata     = metadataInfo.GetMetadata(filePath);
                    var            encoder      = new Encoder();

                    WriteFileInfo("N O T H I N G", metadata);

                    decodeSw.Restart();
                    encoder.EncodeVideo(metadata, filePath, _destinationPath);
                    allSw.Stop();
                    decodeSw.Stop();
                    WriteFinishProcess(decodeSw.Elapsed, allSw.Elapsed, 0);
                    count++;
                }
                catch (MediaFormatException ex)
                {
                    string errorMessage = String.Format("Error File:\t\t{0}.\nError Param:\t\t{1}", filePath, ex.Message);
                    Trace.WriteLine(String.Format("\n{0}", errorMessage));
                    errorVideos.Add(errorMessage);
                }
                catch (ExternalProcessException ex)
                {
                    string errorMessage = String.Format("Error File:\t\t{0}.\nFfmpeg return:\t\t{1}\n{2}", filePath, ex.Result, ex.Arguments);
                    Trace.WriteLine(errorMessage);
                    errorVideos.Add(errorMessage);
                }
                finally
                {
                    Trace.WriteLine(String.Format("\n-------------Finish decode file: {0}-------------\n", filePath));
                }
            }

            WriteFinishInfo(0, count, errorVideos);
        }
Ejemplo n.º 16
0
        public void GetMetadataTest()
        {
            //Arrange
            const string h264Profile = "Main";
            const string h264Level   = "3.1";

            const int          width              = 100;
            const int          height             = 100;
            const string       videoContainer     = "MP4";
            const string       videoCodec         = "AVC";
            const string       audioCodec         = "MPEG Audio";
            const int          videoBps           = 63997;
            const string       videoKeyFrame      = "M=1, N=30";
            const double       videoFps           = 25.001;
            const int          audioBps           = 63997;
            string             videoFormatProfile = String.Format("{0}@L{1}", h264Profile, h264Level);
            const long         fileSize           = 1293887332;
            const int          duration           = 13454643;
            const AudioChannel audioChannel       = AudioChannel.Six;
            const string       audioProfile       = "Layer 3";

            const string filePath = "myFile";

            SetupAllMediaInfoParams(width, height, videoContainer, videoCodec, videoBps, videoKeyFrame, videoFps, audioCodec, audioBps, fileSize, duration, audioChannel, audioProfile,
                                    videoFormatProfile);
            _mockMediaInfo.Setup(m => m.Open(It.IsAny <string>())).Returns(1);

            //Act
            VideoMediaInfo metadata = _metadataInfo.GetMetadata(filePath);

            //Assert
            Assert.AreEqual(width, metadata.VideoWidth);
            Assert.AreEqual(height, metadata.VideoHeight);
            Assert.AreEqual(videoContainer, metadata.GeneralFormat);
            Assert.AreEqual(videoCodec, metadata.VideoFormat);
            Assert.AreEqual(audioCodec, metadata.AudioFormat);
            Assert.AreEqual(videoBps, metadata.VideoBitRate);
            Assert.AreEqual(videoKeyFrame, metadata.VideoFormatSettingsGOP);
            Assert.AreEqual(videoFps, metadata.VideoFrameRate);
            Assert.AreEqual(audioBps, metadata.AudioBitRate);
            Assert.AreEqual(h264Profile, metadata.VideoFormatProfile);
            Assert.AreEqual(fileSize, metadata.GeneralFileSize);
            Assert.AreEqual(duration, metadata.VideoDuration);
            Assert.AreEqual((int)audioChannel, metadata.AudioChannels);
            Assert.AreEqual(audioProfile, metadata.AudioFormatProfile);
        }
Ejemplo n.º 17
0
        public void AdjustAudioCodecTest()
        {
            //Arrange
            const string myCodec1     = "myCodec1";
            const string myCodec2     = "myCodec2";
            const string anotherCodec = "anotherCodec";

            var audioCodec = new CodecData(myCodec1, null);

            var serviceConfigurator = new MetadataServiceConfigurator(null, null, null, audioCodec, new CodecData(myCodec2, null));

            var metadata1 = new VideoMediaInfo
            {
                AudioFormat = myCodec1
            };
            var metadata2 = new VideoMediaInfo
            {
                AudioFormat = myCodec2
            };
            var metadata3 = new VideoMediaInfo
            {
                AudioFormat = anotherCodec
            };
            var metadataWithoutCodec = new VideoMediaInfo
            {
                AudioFormat = null
            };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadata3);
            var metadataService4 = new MetadataService(serviceConfigurator, metadataWithoutCodec);

            //Act
            string codec1 = metadataService1.AdjustAudioCodec();
            string codec2 = metadataService2.AdjustAudioCodec();
            string codec3 = metadataService3.AdjustAudioCodec();
            string codec4 = metadataService4.AdjustAudioCodec();

            //Assert
            Assert.AreEqual(myCodec1, codec1);
            Assert.AreEqual(myCodec2, codec2);
            Assert.AreEqual(myCodec1, codec3);
            Assert.AreEqual(null, codec4);
        }
Ejemplo n.º 18
0
        public void CheckCorrectContainerTest()
        {
            //Arrange
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
            {
                GeneralFormat = serviceConfigurator.Container
            };

            var metadataService = new MetadataService(serviceConfigurator, metadata);

            //Act
            metadataService.AdjustContainer();

            //Assert
            Assert.IsTrue(metadataService.CorrectContainer);
        }
Ejemplo n.º 19
0
        public void AdjustWidthVideoSuccessTest()
        {
            //Arrange
            const int width = 35;
            var       metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata = new VideoMediaInfo
            {
                VideoWidth = width * metadataConfigurator.VideoSizeMul
            };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedwidth = metadataService.AdjustVideoWidth();

            //Assert
            Assert.AreEqual(metadata.VideoWidth, adjustedwidth);
        }
Ejemplo n.º 20
0
        public void AdjustHeightVideoSuccessTest()
        {
            //Arrange
            const int height = 23;
            var       metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata = new VideoMediaInfo
            {
                VideoHeight = height * metadataConfigurator.VideoSizeMul
            };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedHeight = metadataService.AdjustVideoHeight();

            //Assert
            Assert.AreEqual(metadata.VideoHeight, adjustedHeight);
        }
Ejemplo n.º 21
0
 private void WriteFileInfo(string ffmpegString, VideoMediaInfo metadata)
 {
     Trace.WriteLine(String.Format("Width:               {0}", metadata.VideoWidth));
     Trace.WriteLine(String.Format("Width:               {0}", metadata.VideoHeight));
     Trace.WriteLine(String.Format("File Size:           {0} kByte", metadata.GeneralFileSize / 1024));
     Trace.WriteLine(String.Format("Container:           {0}", metadata.GeneralFormat));
     Trace.WriteLine(String.Format("Video Codec:         {0}", metadata.VideoFormat));
     Trace.WriteLine(String.Format("Video Profile:       {0}", metadata.VideoFormatProfile));
     Trace.WriteLine(String.Format("Video Bitrate:       {0} kBit/s", metadata.VideoBitRate / 1000));
     Trace.WriteLine(String.Format("Audio Codec:         {0}", metadata.AudioFormat));
     Trace.WriteLine(String.Format("Audio Profile:       {0}", metadata.AudioFormatProfile));
     Trace.WriteLine(String.Format("Audio Channel(s):    {0}", metadata.AudioChannels));
     Trace.WriteLine(String.Format("Audio Bitrate:       {0} kBit/s", metadata.AudioBitRate / 1000));
     Trace.WriteLine(String.Format("Duration:            {0}", TimeSpan.FromMilliseconds(metadata.VideoDuration)));
     Trace.WriteLine(String.Format("Video FPS:           {0}", metadata.VideoFrameRate));
     Trace.WriteLine(String.Format("Video Key Frame:     {0}", metadata.VideoFormatSettingsGOP));
     Trace.WriteLine(String.Format("Ffmpeg String:       {0}", ffmpegString));
 }
Ejemplo n.º 22
0
        public void GetMp4StringFromMetadataWithMp2Test()
        {
            //Arrange
            const string sourceFilePath      = "source file path";
            const string destinationPath     = "my path";
            const string destinationFileName = "my file";

            string destinationFilePath = Path.Combine(destinationPath, destinationFileName);
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();
            var metadata = new VideoMediaInfo
            {
                GeneralFormat          = "MPEG-4",
                AudioBitRate           = 152000,
                AudioChannels          = (int)AudioChannel.Two,
                AudioFormat            = "MPEG Audio",
                AudioFormatProfile     = "Layer 2",
                VideoBitRate           = 2500000,
                VideoFormat            = "AVC",
                VideoFrameRate         = 24,
                VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame),
                VideoFormatProfile     = "Baseline",
                VideoWidth             = 4096,
                VideoHeight            = 2304
            };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var stringBuilder   = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            string ffmpegStr = "-i \"{0}\" -f mp4 -vcodec copy -acodec {1} -b:a {2} -quality good -cpu-used 0 -threads {3} -y \"{4}.{5}\"";

            ffmpegStr = String.Format(ffmpegStr,
                                      sourceFilePath,
                                      metadataService.AudioCodecLib,
                                      metadata.AudioBitRate,
                                      Environment.ProcessorCount,
                                      destinationFilePath,
                                      serviceConfigurator.FfmpegContainer);

            //Act
            string str = stringBuilder.GetStringForEncoder();

            //Assert
            Assert.AreEqual(ffmpegStr, str, true);
        }
Ejemplo n.º 23
0
        public void AdjustVideoBpsForVideoSizeLessConfigureMaxSizeTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1920X1080X8000 = new VideoMediaInfo
            {
                VideoWidth   = 1920,
                VideoHeight  = 1080,
                VideoBitRate = metadataConfigurator.VideoBps1920X1080
            };
            var metadataService1 = new MetadataService(metadataConfigurator, metadata1920X1080X8000);

            //Act
            int adjBps1920X1080X8000 = metadataService1.AdjustVideoBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.VideoBps1920X1080, adjBps1920X1080X8000);
        }
Ejemplo n.º 24
0
        public void AdjustHeightMoreConfigureMaxHeightTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            metadataConfigurator.MaxHeight = 100 * metadataConfigurator.VideoSizeMul;

            var metadata = new VideoMediaInfo
            {
                VideoHeight = metadataConfigurator.MaxHeight + metadataConfigurator.VideoSizeMul
            };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedHeight = metadataService.AdjustVideoHeight();

            //Assert
            Assert.AreEqual(metadataConfigurator.MaxHeight, adjustedHeight);
        }
Ejemplo n.º 25
0
        public void AdjustVideoBpsForVideoSizeLessConfigureMaxSizeTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1920X1080X8000 = new VideoMediaInfo
                {
                    VideoWidth = 1920,
                    VideoHeight = 1080,
                    VideoBitRate = metadataConfigurator.VideoBps1920X1080
                };
            var metadataService1 = new MetadataService(metadataConfigurator, metadata1920X1080X8000);

            //Act
            int adjBps1920X1080X8000 = metadataService1.AdjustVideoBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.VideoBps1920X1080, adjBps1920X1080X8000);
        }
Ejemplo n.º 26
0
        public void AdjustWidthMoreConfigureMaxWidthTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            metadataConfigurator.MaxWidth = 100 * metadataConfigurator.VideoSizeMul;

            var metadata = new VideoMediaInfo
            {
                VideoWidth = metadataConfigurator.MaxWidth + metadataConfigurator.VideoSizeMul
            };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedwidth = metadataService.AdjustVideoWidth();

            //Assert
            Assert.AreEqual(metadataConfigurator.MaxWidth, adjustedwidth);
        }
Ejemplo n.º 27
0
        public void GetWebMStringFromCorrectMetadataTest()
        {
            //Arrange
            const string sourceFilePath      = "source file path";
            const string destinationPath     = "my path";
            const string destinationFileName = "my file";

            string destinationFilePath = Path.Combine(destinationPath, destinationFileName);
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateWebMMetadataServiceConfigurator();
            var metadata = new VideoMediaInfo
            {
                GeneralFormat          = "WebM",
                AudioBitRate           = 152000,
                AudioChannels          = (int)AudioChannel.Two,
                AudioFormat            = "Vorbis",
                AudioFormatProfile     = null,
                VideoBitRate           = 2500000,
                VideoFormat            = "VP8",
                VideoFrameRate         = 24,
                VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame),
                VideoFormatProfile     = null,
                VideoWidth             = 4096,
                VideoHeight            = 2304
            };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var stringBuilder   = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            string ffmpegStr = "-i \"{0}\" -f webm -vcodec copy -acodec copy -quality good -cpu-used 0 -threads {1} -y \"{2}.{3}\"";

            ffmpegStr = String.Format(ffmpegStr,
                                      sourceFilePath,
                                      Environment.ProcessorCount,
                                      destinationFilePath,
                                      serviceConfigurator.FfmpegContainer);

            //Act
            string str = stringBuilder.GetStringForEncoder();

            //Assert
            Assert.AreEqual(ffmpegStr, str, true);
        }
Ejemplo n.º 28
0
        public void AdjustAudioBpsForVideoSizeLessConfigureMaxSizeTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata128Bps = new VideoMediaInfo
            {
                VideoWidth    = 1920,
                VideoHeight   = 1080,
                AudioChannels = (int)AudioChannel.One,
                AudioBitRate  = metadataConfigurator.AudioBps720P1Channel
            };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata128Bps);

            //Act
            int adjBps = metadataService1.AdjustAudioBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.AudioBps720P1Channel, adjBps);
        }
Ejemplo n.º 29
0
        public void AdjustAudioBpsFor854X480And640X360AndLessX6ChannelSuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata64Bps = new VideoMediaInfo
            {
                VideoWidth    = 640,
                VideoHeight   = 360,
                AudioChannels = (int)AudioChannel.Six,
                AudioBitRate  = metadataConfigurator.AudioBps360P6Channel
            };
            var metadataMore64Bps = new VideoMediaInfo
            {
                VideoWidth    = 640,
                VideoHeight   = 360,
                AudioChannels = (int)AudioChannel.Six,
                AudioBitRate  = metadataConfigurator.AudioBps360P6Channel + 1
            };
            var metadataLess64Bps = new VideoMediaInfo
            {
                VideoWidth    = 640,
                VideoHeight   = 360,
                AudioChannels = (int)AudioChannel.Six,
                AudioBitRate  = metadataConfigurator.AudioBps360P6Channel - 1
            };
            var metadataService1 = new MetadataService(metadataConfigurator, metadata64Bps);
            var metadataService2 = new MetadataService(metadataConfigurator, metadataMore64Bps);
            var metadataService3 = new MetadataService(metadataConfigurator, metadataLess64Bps);

            //Act
            int adjBps64Bps     = metadataService1.AdjustAudioBps();
            int adjBpsMore64Bps = metadataService2.AdjustAudioBps();
            int adjBpsLess64Bps = metadataService3.AdjustAudioBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.AudioBps360P6Channel, adjBps64Bps);
            Assert.AreEqual(metadataConfigurator.AudioBps360P6Channel, adjBpsMore64Bps);
            Assert.AreEqual(metadataLess64Bps.AudioBitRate, adjBpsLess64Bps);
        }
Ejemplo n.º 30
0
        public void AdjustAudioBpsFor1920X1080And1280X720X6ChannelSuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata512Bps = new VideoMediaInfo
            {
                VideoWidth    = 1280,
                VideoHeight   = 720,
                AudioChannels = (int)AudioChannel.Six,
                AudioBitRate  = metadataConfigurator.AudioBps720P6Channel
            };
            var metadataMore512Bps = new VideoMediaInfo
            {
                VideoWidth    = 1280,
                VideoHeight   = 720,
                AudioChannels = (int)AudioChannel.Six,
                AudioBitRate  = metadataConfigurator.AudioBps720P6Channel + 1
            };
            var metadataLess512Bps = new VideoMediaInfo
            {
                VideoWidth    = 1280,
                VideoHeight   = 720,
                AudioChannels = (int)AudioChannel.Six,
                AudioBitRate  = metadataConfigurator.AudioBps720P6Channel - 1
            };
            var metadataService1 = new MetadataService(metadataConfigurator, metadata512Bps);
            var metadataService2 = new MetadataService(metadataConfigurator, metadataMore512Bps);
            var metadataService3 = new MetadataService(metadataConfigurator, metadataLess512Bps);

            //Act
            int adjBps512Bps     = metadataService1.AdjustAudioBps();
            int adjBpsMore512Bps = metadataService2.AdjustAudioBps();
            int adjBpsLess512Bps = metadataService3.AdjustAudioBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.AudioBps720P6Channel, adjBps512Bps);
            Assert.AreEqual(metadataConfigurator.AudioBps720P6Channel, adjBpsMore512Bps);
            Assert.AreEqual(metadataLess512Bps.AudioBitRate, adjBpsLess512Bps);
        }
Ejemplo n.º 31
0
        public void AdjustHeightVideoFailTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1 = new VideoMediaInfo
            {
                VideoHeight = 15
            };

            var metadata2 = new VideoMediaInfo
            {
                VideoHeight = -1
            };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata1);
            var metadataService2 = new MetadataService(metadataConfigurator, metadata2);

            //Act & Assert
            CustomAssert.IsThrown <MediaFormatException>(() => metadataService1.AdjustVideoHeight());
            CustomAssert.IsThrown <MediaFormatException>(() => metadataService2.AdjustVideoHeight());
        }
Ejemplo n.º 32
0
        public void AdjustVideoBpsForLess640X360SuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1000Bps = new VideoMediaInfo
            {
                VideoWidth   = 40,
                VideoHeight  = 60,
                VideoBitRate = metadataConfigurator.VideoBps640X360
            };
            var metadataMore1000Bps = new VideoMediaInfo
            {
                VideoWidth   = 40,
                VideoHeight  = 60,
                VideoBitRate = metadataConfigurator.VideoBps640X360 + 1
            };
            var metadataLess1000Bps = new VideoMediaInfo
            {
                VideoWidth   = 40,
                VideoHeight  = 60,
                VideoBitRate = metadataConfigurator.VideoBps640X360 - 1
            };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata1000Bps);
            var metadataService2 = new MetadataService(metadataConfigurator, metadataMore1000Bps);
            var metadataService3 = new MetadataService(metadataConfigurator, metadataLess1000Bps);

            //Act
            int adjBps1000Bps     = metadataService1.AdjustVideoBps();
            int adjBpsMore1000Bps = metadataService2.AdjustVideoBps();
            int adjBpsLess1000Bps = metadataService3.AdjustVideoBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.VideoBps640X360, adjBps1000Bps);
            Assert.AreEqual(metadataConfigurator.VideoBps640X360, adjBpsMore1000Bps);
            Assert.AreEqual(metadataLess1000Bps.VideoBitRate, adjBpsLess1000Bps);
        }
Ejemplo n.º 33
0
        public void AdjustAudioBpsForVideoSizeMoreConfigureMaxSizeTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);
            metadataConfigurator.MaxWidth = 854;
            metadataConfigurator.MaxHeight = 480;

            var metadata128Bps = new VideoMediaInfo
                {
                    VideoWidth = 1920,
                    VideoHeight = 1080,
                    AudioChannels = (int) AudioChannel.One,
                    AudioBitRate = metadataConfigurator.AudioBps720P1Channel
                };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata128Bps);

            //Act
            int adjBps = metadataService1.AdjustAudioBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.AudioBps360P1Channel, adjBps);
        }
Ejemplo n.º 34
0
        public void EncodedVideoMetadataTest()
        {
            //Arrange
            const string sourceFilePath = "source file path";
            const string destinationPath = "my path";
            const string destinationFileName = "my file";

            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();
            var metadata = new VideoMediaInfo
                {
                    GeneralFormat = "MPEG-PS",
                    AudioBitRate = serviceConfigurator.AudioBps720P1Channel + 1,
                    AudioChannels = (int) AudioChannel.One,
                    AudioFormat = "AC-3",
                    AudioFormatProfile = null,
                    VideoBitRate = serviceConfigurator.VideoBps1920X1080 + 1,
                    VideoFormat = "MPEG Video",
                    VideoFrameRate = serviceConfigurator.MaxFps - 1,
                    VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame + 1),
                    VideoFormatProfile = "High",
                    VideoWidth = 4096,
                    VideoHeight = 2304,
                };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var ffmpegService = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            //Act
            ffmpegService.GetStringForEncoder();

            //Assert
            Assert.AreEqual(ffmpegService.EncodedVideoData.Container, serviceConfigurator.Container);
            Assert.AreEqual(ffmpegService.EncodedVideoData.Width, metadata.VideoWidth);
            Assert.AreEqual(ffmpegService.EncodedVideoData.Height, metadata.VideoHeight);
            Assert.AreEqual(ffmpegService.EncodedVideoData.VideoCodec, serviceConfigurator.VideoCodec.Codec);
            Assert.AreEqual(ffmpegService.EncodedVideoData.AudioCodec, serviceConfigurator.AudioCodec.Codec);
        }
Ejemplo n.º 35
0
        public void AdjustAudioBpsFor1920X1080And1280X720X6ChannelSuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata512Bps = new VideoMediaInfo
                {
                    VideoWidth = 1280,
                    VideoHeight = 720,
                    AudioChannels = (int) AudioChannel.Six,
                    AudioBitRate = metadataConfigurator.AudioBps720P6Channel
                };
            var metadataMore512Bps = new VideoMediaInfo
                {
                    VideoWidth = 1280,
                    VideoHeight = 720,
                    AudioChannels = (int) AudioChannel.Six,
                    AudioBitRate = metadataConfigurator.AudioBps720P6Channel + 1
                };
            var metadataLess512Bps = new VideoMediaInfo
                {
                    VideoWidth = 1280,
                    VideoHeight = 720,
                    AudioChannels = (int) AudioChannel.Six,
                    AudioBitRate = metadataConfigurator.AudioBps720P6Channel - 1
                };
            var metadataService1 = new MetadataService(metadataConfigurator, metadata512Bps);
            var metadataService2 = new MetadataService(metadataConfigurator, metadataMore512Bps);
            var metadataService3 = new MetadataService(metadataConfigurator, metadataLess512Bps);

            //Act
            int adjBps512Bps = metadataService1.AdjustAudioBps();
            int adjBpsMore512Bps = metadataService2.AdjustAudioBps();
            int adjBpsLess512Bps = metadataService3.AdjustAudioBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.AudioBps720P6Channel, adjBps512Bps);
            Assert.AreEqual(metadataConfigurator.AudioBps720P6Channel, adjBpsMore512Bps);
            Assert.AreEqual(metadataLess512Bps.AudioBitRate, adjBpsLess512Bps);
        }
Ejemplo n.º 36
0
        public void AdjustVideoBpsForLess640X360SuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1000Bps = new VideoMediaInfo
                {
                    VideoWidth = 40,
                    VideoHeight = 60,
                    VideoBitRate = metadataConfigurator.VideoBps640X360
                };
            var metadataMore1000Bps = new VideoMediaInfo
                {
                    VideoWidth = 40,
                    VideoHeight = 60,
                    VideoBitRate = metadataConfigurator.VideoBps640X360 + 1
                };
            var metadataLess1000Bps = new VideoMediaInfo
                {
                    VideoWidth = 40,
                    VideoHeight = 60,
                    VideoBitRate = metadataConfigurator.VideoBps640X360 - 1
                };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata1000Bps);
            var metadataService2 = new MetadataService(metadataConfigurator, metadataMore1000Bps);
            var metadataService3 = new MetadataService(metadataConfigurator, metadataLess1000Bps);

            //Act
            int adjBps1000Bps = metadataService1.AdjustVideoBps();
            int adjBpsMore1000Bps = metadataService2.AdjustVideoBps();
            int adjBpsLess1000Bps = metadataService3.AdjustVideoBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.VideoBps640X360, adjBps1000Bps);
            Assert.AreEqual(metadataConfigurator.VideoBps640X360, adjBpsMore1000Bps);
            Assert.AreEqual(metadataLess1000Bps.VideoBitRate, adjBpsLess1000Bps);
        }
Ejemplo n.º 37
0
        private VideoMediaInfo GetVideoMetadata(int width, int height, string container, string videoCodec, int videoBps, string videoKeyFrame, double videoFps, string audioCodec, int audioBps,
                                                long fileSize, int duration, AudioChannel audioChannel, string audioProfile, string videoFormatProfile = null)
        {
            var metadata = new VideoMediaInfo
                {
                    AudioBitRate = audioBps,
                    AudioFormat = audioCodec,
                    AudioChannels = (int) audioChannel,
                    AudioFormatProfile = audioProfile,
                    GeneralFormat = container,
                    VideoDuration = duration,
                    GeneralFileSize = fileSize,
                    VideoHeight = height,
                    VideoBitRate = videoBps,
                    VideoFormat = videoCodec,
                    VideoFrameRate = videoFps,
                    VideoFormatSettingsGOP = videoKeyFrame,
                    VideoFormatProfile = videoFormatProfile,
                    VideoWidth = width
                };

            return metadata;
        }
Ejemplo n.º 38
0
        public void GetMjpegStringWithNumFrameMoreDurationTest()
        {
            //Arrange
            const string sourceFilePath = "source file path";
            const string destinationPath = "my path";
            const string destinationFileName = "my file";

            string destinationFilePath = Path.Combine(destinationPath, destinationFileName);
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
                {
                    VideoDuration = (int) serviceConfigurator.ScreenshotTime.TotalMilliseconds - 1,
                    VideoWidth = 4096,
                    VideoHeight = 2304
                };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var stringBuilder = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            string ffmpegStr = "-i \"{0}\" -f image2 -ss {1} -frames:v 1 -y \"{2}.jpg\"";
            ffmpegStr = String.Format(ffmpegStr,
                                      sourceFilePath,
                                      0,
                                      destinationFilePath);

            //Act
            string str = stringBuilder.GetStringForScreenshot();

            //Assert
            Assert.AreEqual(ffmpegStr, str);
        }
Ejemplo n.º 39
0
        public void AdjustVideoBpsFor854X480SuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata854X480X2500 = new VideoMediaInfo
                {
                    VideoWidth = 854,
                    VideoHeight = 480,
                    VideoBitRate = metadataConfigurator.VideoBps854X480
                };
            var metadata854X480More2500 = new VideoMediaInfo
                {
                    VideoWidth = 854,
                    VideoHeight = 480,
                    VideoBitRate = metadataConfigurator.VideoBps854X480 + 1
                };
            var metadata854X480Less2500 = new VideoMediaInfo
                {
                    VideoWidth = 854,
                    VideoHeight = 480,
                    VideoBitRate = metadataConfigurator.VideoBps854X480 - 1
                };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata854X480X2500);
            var metadataService2 = new MetadataService(metadataConfigurator, metadata854X480More2500);
            var metadataService3 = new MetadataService(metadataConfigurator, metadata854X480Less2500);

            //Act
            int adjBps854X480X2500 = metadataService1.AdjustVideoBps();
            int adjBps854X480More2500 = metadataService2.AdjustVideoBps();
            int adjBps854X480Less2500 = metadataService3.AdjustVideoBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.VideoBps854X480, adjBps854X480X2500);
            Assert.AreEqual(metadataConfigurator.VideoBps854X480, adjBps854X480More2500);
            Assert.AreEqual(metadata854X480Less2500.VideoBitRate, adjBps854X480Less2500);
        }
Ejemplo n.º 40
0
        public void AdjustWidthMoreConfigureMaxWidthTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);
            metadataConfigurator.MaxWidth = 100*metadataConfigurator.VideoSizeMul;

            var metadata = new VideoMediaInfo
                {
                    VideoWidth = metadataConfigurator.MaxWidth + metadataConfigurator.VideoSizeMul
                };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedwidth = metadataService.AdjustVideoWidth();

            //Assert
            Assert.AreEqual(metadataConfigurator.MaxWidth, adjustedwidth);
        }
Ejemplo n.º 41
0
        public void AdjustScreenshotTimeTest()
        {
            //Arrange
            var serviceConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1 = new VideoMediaInfo
                {
                    VideoDuration = (int) serviceConfigurator.ScreenshotTime.TotalMilliseconds - 1
                };
            var metadata2 = new VideoMediaInfo
                {
                    VideoDuration = (int) serviceConfigurator.ScreenshotTime.TotalMilliseconds + 1
                };
            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);

            //Act
            int time1 = metadataService1.AdjustScreenshotTime();
            int time2 = metadataService2.AdjustScreenshotTime();

            //Assert
            Assert.AreEqual(0, time1);
            Assert.AreEqual(serviceConfigurator.ScreenshotTime.Seconds, time2);
        }
Ejemplo n.º 42
0
        public void AdjustVideoProfileTest()
        {
            //Arrange
            const string myCodec = "myCodec";
            const string anotherProfile = "anotherProfile";
            const string firstProfile = "firstProfile";
            const string secondProfile = "secondProfile";

            var videoCodec = new CodecData(myCodec, null, firstProfile, secondProfile);

            var serviceConfigurator = new MetadataServiceConfigurator(null, null, videoCodec, null, null);

            var metadata1 = new VideoMediaInfo
                {
                    VideoFormat = myCodec,
                    VideoFormatProfile = firstProfile
                };
            var metadata2 = new VideoMediaInfo
                {
                    VideoFormat = myCodec,
                    VideoFormatProfile = secondProfile
                };
            var metadata3 = new VideoMediaInfo
                {
                    VideoFormat = myCodec,
                    VideoFormatProfile = anotherProfile
                };
            var metadataWithoutCodec = new VideoMediaInfo
                {
                    VideoFormat = myCodec,
                    VideoFormatProfile = null
                };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadata3);
            var metadataService4 = new MetadataService(serviceConfigurator, metadataWithoutCodec);

            //Act
            string profile1 = metadataService1.AdjustVideoProfile();
            string profile2 = metadataService2.AdjustVideoProfile();
            string profile3 = metadataService3.AdjustVideoProfile();
            string profile4 = metadataService4.AdjustVideoProfile();

            //Assert
            Assert.AreEqual(firstProfile, profile1);
            Assert.AreEqual(secondProfile, profile2);
            Assert.AreEqual(firstProfile, profile3);
            Assert.AreEqual(firstProfile, profile4);
        }
Ejemplo n.º 43
0
        public void AdjustAudioProfileTest()
        {
            //Arrange
            const string myCodec1 = "myCodec1";
            const string myCodec2 = "myCodec2";
            const string anotherProfile = "anotherProfile";
            const string firstProfile = "firstProfile";

            var audioCodec = new CodecData(myCodec1, null, firstProfile);

            var serviceConfigurator = new MetadataServiceConfigurator(null, null, null, audioCodec, new CodecData(myCodec2, null));

            var metadata1 = new VideoMediaInfo
                {
                    AudioFormat = myCodec1,
                    AudioFormatProfile = firstProfile
                };
            var metadata2 = new VideoMediaInfo
                {
                    AudioFormat = myCodec1,
                    AudioFormatProfile = anotherProfile
                };
            var metadata3 = new VideoMediaInfo
                {
                    AudioFormat = myCodec2,
                    AudioFormatProfile = anotherProfile
                };
            var metadataWithoutProfile = new VideoMediaInfo
                {
                    AudioFormat = myCodec1,
                    AudioFormatProfile = null
                };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadata3);
            var metadataService4 = new MetadataService(serviceConfigurator, metadataWithoutProfile);

            //Act
            string profile1 = metadataService1.AdjustAudioProfile();
            string profile2 = metadataService2.AdjustAudioProfile();
            string profile3 = metadataService3.AdjustAudioProfile();
            string profile4 = metadataService4.AdjustAudioProfile();

            //Assert
            Assert.AreEqual(firstProfile, profile1);
            Assert.AreEqual(firstProfile, profile2);
            Assert.AreEqual(anotherProfile, profile3);
            Assert.AreEqual(firstProfile, profile4);
        }
Ejemplo n.º 44
0
        public void AdjustWidthVideoSuccessTest()
        {
            //Arrange
            const int width = 35;
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata = new VideoMediaInfo
                {
                    VideoWidth = width*metadataConfigurator.VideoSizeMul
                };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedwidth = metadataService.AdjustVideoWidth();

            //Assert
            Assert.AreEqual(metadata.VideoWidth, adjustedwidth);
        }
Ejemplo n.º 45
0
        public void AdjustContainerTest()
        {
            //Arrange
            const string myContainer = "myContainer";
            const string anotherContainer = "anotherContainer";
            var serviceConfigurator = new MetadataServiceConfigurator(myContainer, null, null, null, null);

            var metadata1 = new VideoMediaInfo
                {
                    GeneralFormat = myContainer
                };
            var metadata2 = new VideoMediaInfo
                {
                    GeneralFormat = anotherContainer
                };
            var metadataWithoutContainer = new VideoMediaInfo
                {
                    GeneralFormat = null
                };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadataWithoutContainer);

            //Act
            string container1 = metadataService1.AdjustContainer();
            string container2 = metadataService2.AdjustContainer();

            //Act & Assert
            CustomAssert.IsThrown<MediaFormatException>(() => metadataService3.AdjustContainer());

            //Assert
            Assert.AreEqual(myContainer, container1);
            Assert.AreEqual(myContainer, container2);
        }
Ejemplo n.º 46
0
        public void AdjustHeightMoreConfigureMaxHeightTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);
            metadataConfigurator.MaxHeight = 100*metadataConfigurator.VideoSizeMul;

            var metadata = new VideoMediaInfo
                {
                    VideoHeight = metadataConfigurator.MaxHeight + metadataConfigurator.VideoSizeMul
                };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedHeight = metadataService.AdjustVideoHeight();

            //Assert
            Assert.AreEqual(metadataConfigurator.MaxHeight, adjustedHeight);
        }
Ejemplo n.º 47
0
        public void CheckCorrectContainerTest()
        {
            //Arrange
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
                {
                    GeneralFormat = serviceConfigurator.Container
                };

            var metadataService = new MetadataService(serviceConfigurator, metadata);

            //Act
            metadataService.AdjustContainer();

            //Assert
            Assert.IsTrue(metadataService.CorrectContainer);
        }
Ejemplo n.º 48
0
        public void CheckCorrectAudioValueListTest()
        {
            //Arrange
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
                {
                    AudioBitRate = serviceConfigurator.AudioBps720P1Channel,
                    AudioChannels = (int) AudioChannel.One,
                    AudioFormat = "AAC",
                    AudioFormatProfile = "LC",
                    VideoWidth = 4096,
                    VideoHeight = 2304
                };

            var metadataService = new MetadataService(serviceConfigurator, metadata);

            //Act
            metadataService.AdjustAudioBps();
            metadataService.AdjustAudioCodec();
            metadataService.AdjustAudioProfile();

            //Assert
            Assert.IsTrue(metadataService.CorrectAudioValueList.All((b) => b.Value));
        }
Ejemplo n.º 49
0
        public void AdjustAudioBpsFor854X480And640X360AndLessX6ChannelSuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata64Bps = new VideoMediaInfo
                {
                    VideoWidth = 640,
                    VideoHeight = 360,
                    AudioChannels = (int) AudioChannel.Six,
                    AudioBitRate = metadataConfigurator.AudioBps360P6Channel
                };
            var metadataMore64Bps = new VideoMediaInfo
                {
                    VideoWidth = 640,
                    VideoHeight = 360,
                    AudioChannels = (int) AudioChannel.Six,
                    AudioBitRate = metadataConfigurator.AudioBps360P6Channel + 1
                };
            var metadataLess64Bps = new VideoMediaInfo
                {
                    VideoWidth = 640,
                    VideoHeight = 360,
                    AudioChannels = (int) AudioChannel.Six,
                    AudioBitRate = metadataConfigurator.AudioBps360P6Channel - 1
                };
            var metadataService1 = new MetadataService(metadataConfigurator, metadata64Bps);
            var metadataService2 = new MetadataService(metadataConfigurator, metadataMore64Bps);
            var metadataService3 = new MetadataService(metadataConfigurator, metadataLess64Bps);

            //Act
            int adjBps64Bps = metadataService1.AdjustAudioBps();
            int adjBpsMore64Bps = metadataService2.AdjustAudioBps();
            int adjBpsLess64Bps = metadataService3.AdjustAudioBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.AudioBps360P6Channel, adjBps64Bps);
            Assert.AreEqual(metadataConfigurator.AudioBps360P6Channel, adjBpsMore64Bps);
            Assert.AreEqual(metadataLess64Bps.AudioBitRate, adjBpsLess64Bps);
        }
Ejemplo n.º 50
0
 private void WriteFileInfo(string ffmpegString, VideoMediaInfo metadata)
 {
     Trace.WriteLine(String.Format("Width:               {0}", metadata.VideoWidth));
     Trace.WriteLine(String.Format("Width:               {0}", metadata.VideoHeight));
     Trace.WriteLine(String.Format("File Size:           {0} kByte", metadata.GeneralFileSize/1024));
     Trace.WriteLine(String.Format("Container:           {0}", metadata.GeneralFormat));
     Trace.WriteLine(String.Format("Video Codec:         {0}", metadata.VideoFormat));
     Trace.WriteLine(String.Format("Video Profile:       {0}", metadata.VideoFormatProfile));
     Trace.WriteLine(String.Format("Video Bitrate:       {0} kBit/s", metadata.VideoBitRate/1000));
     Trace.WriteLine(String.Format("Audio Codec:         {0}", metadata.AudioFormat));
     Trace.WriteLine(String.Format("Audio Profile:       {0}", metadata.AudioFormatProfile));
     Trace.WriteLine(String.Format("Audio Channel(s):    {0}", metadata.AudioChannels));
     Trace.WriteLine(String.Format("Audio Bitrate:       {0} kBit/s", metadata.AudioBitRate/1000));
     Trace.WriteLine(String.Format("Duration:            {0}", TimeSpan.FromMilliseconds(metadata.VideoDuration)));
     Trace.WriteLine(String.Format("Video FPS:           {0}", metadata.VideoFrameRate));
     Trace.WriteLine(String.Format("Video Key Frame:     {0}", metadata.VideoFormatSettingsGOP));
     Trace.WriteLine(String.Format("Ffmpeg String:       {0}", ffmpegString));
 }
Ejemplo n.º 51
0
        public void AdjustVideoKeyFrameSuccessTest()
        {
            //Arrange
            var serviceConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);
            int myKeyFrame = serviceConfigurator.MaxKeyFrame - 1;

            var metadataKeyFrame0 = new VideoMediaInfo
                {
                    VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MinKeyFrame - 1)
                };
            var metadataKeyFrameMore60 = new VideoMediaInfo
                {
                    VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame + 1)
                };
            var metadataKeyFrame = new VideoMediaInfo
                {
                    VideoFormatSettingsGOP = String.Format("M=1, N={0}", myKeyFrame)
                };

            var metadataService1 = new MetadataService(serviceConfigurator, metadataKeyFrame0);
            var metadataService2 = new MetadataService(serviceConfigurator, metadataKeyFrameMore60);
            var metadataService3 = new MetadataService(serviceConfigurator, metadataKeyFrame);

            //Act;
            int keyFrame0 = metadataService1.AdjustKeyFrame();
            int keyFrameMore60 = metadataService2.AdjustKeyFrame();
            int keyFrame = metadataService3.AdjustKeyFrame();

            //Assert
            Assert.AreEqual(serviceConfigurator.KeyFrame, keyFrame0);
            Assert.AreEqual(serviceConfigurator.KeyFrame, keyFrameMore60);
            Assert.AreEqual(myKeyFrame, keyFrame);
        }
Ejemplo n.º 52
0
        public void CheckCorrectVideoValueListTest()
        {
            //Arrange
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();

            var metadata = new VideoMediaInfo
                {
                    AudioBitRate = serviceConfigurator.AudioBps720P1Channel,
                    AudioChannels = (int) AudioChannel.One,
                    AudioFormat = serviceConfigurator.AudioCodec.Codec,
                    AudioFormatProfile = serviceConfigurator.AudioCodec.DefaultProfile,
                    VideoBitRate = serviceConfigurator.VideoBps1920X1080,
                    VideoFormat = serviceConfigurator.VideoCodec.Codec,
                    VideoFormatProfile = serviceConfigurator.VideoCodec.DefaultProfile,
                    VideoFrameRate = serviceConfigurator.MaxFps - 1,
                    VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.KeyFrame),
                    VideoWidth = 4096,
                    VideoHeight = 2304
                };

            var metadataService = new MetadataService(serviceConfigurator, metadata);

            //Act
            metadataService.AdjustVideoWidth();
            metadataService.AdjustVideoHeight();
            metadataService.AdjustKeyFrame();
            metadataService.AdjustVideoBps();
            metadataService.AdjustVideoCodec();
            metadataService.AdjustVideoFps();
            metadataService.AdjustVideoProfile();

            //Assert
            Assert.IsTrue(metadataService.CorrectVideoValueList.All((b) => b.Value));
        }
Ejemplo n.º 53
0
        public void AdjustVideoCodecTest()
        {
            //Arrange
            const string anotherCodecName = "anotherCodec";
            const string myCodecName = "myCodec";
            var myCodec = new CodecData(myCodecName, null);

            var serviceConfigurator = new MetadataServiceConfigurator(null, null, myCodec, null, null);

            var metadata1 = new VideoMediaInfo
                {
                    VideoFormat = myCodecName
                };
            var metadata2 = new VideoMediaInfo
                {
                    VideoFormat = anotherCodecName
                };
            var metadataWithoutCodec = new VideoMediaInfo
                {
                    VideoFormat = null
                };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadataWithoutCodec);

            //Act
            string codec1 = metadataService1.AdjustVideoCodec();
            string codec2 = metadataService2.AdjustVideoCodec();

            //Act & Assert
            CustomAssert.IsThrown<MediaFormatException>(() => metadataService3.AdjustContainer());

            //Assert
            Assert.AreEqual(myCodecName, codec1);
            Assert.AreEqual(myCodecName, codec2);
        }
Ejemplo n.º 54
0
        public void AdjustHeightVideoFailTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1 = new VideoMediaInfo
                {
                    VideoHeight = 15
                };

            var metadata2 = new VideoMediaInfo
                {
                    VideoHeight = -1
                };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata1);
            var metadataService2 = new MetadataService(metadataConfigurator, metadata2);

            //Act & Assert
            CustomAssert.IsThrown<MediaFormatException>(() => metadataService1.AdjustVideoHeight());
            CustomAssert.IsThrown<MediaFormatException>(() => metadataService2.AdjustVideoHeight());
        }
Ejemplo n.º 55
0
        public void AdjustAudioCodecTest()
        {
            //Arrange
            const string myCodec1 = "myCodec1";
            const string myCodec2 = "myCodec2";
            const string anotherCodec = "anotherCodec";

            var audioCodec = new CodecData(myCodec1, null);

            var serviceConfigurator = new MetadataServiceConfigurator(null, null, null, audioCodec, new CodecData(myCodec2, null));

            var metadata1 = new VideoMediaInfo
                {
                    AudioFormat = myCodec1
                };
            var metadata2 = new VideoMediaInfo
                {
                    AudioFormat = myCodec2
                };
            var metadata3 = new VideoMediaInfo
                {
                    AudioFormat = anotherCodec
                };
            var metadataWithoutCodec = new VideoMediaInfo
                {
                    AudioFormat = null
                };

            var metadataService1 = new MetadataService(serviceConfigurator, metadata1);
            var metadataService2 = new MetadataService(serviceConfigurator, metadata2);
            var metadataService3 = new MetadataService(serviceConfigurator, metadata3);
            var metadataService4 = new MetadataService(serviceConfigurator, metadataWithoutCodec);

            //Act
            string codec1 = metadataService1.AdjustAudioCodec();
            string codec2 = metadataService2.AdjustAudioCodec();
            string codec3 = metadataService3.AdjustAudioCodec();
            string codec4 = metadataService4.AdjustAudioCodec();

            //Assert
            Assert.AreEqual(myCodec1, codec1);
            Assert.AreEqual(myCodec2, codec2);
            Assert.AreEqual(myCodec1, codec3);
            Assert.AreEqual(null, codec4);
        }
Ejemplo n.º 56
0
        public void AdjustHeighhMultiply16Test()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1 = new VideoMediaInfo
                {
                    VideoHeight = 100
                };
            var metadata2 = new VideoMediaInfo
                {
                    VideoHeight = 89
                };
            var metadataService1 = new MetadataService(metadataConfigurator, metadata1);
            var metadataService2 = new MetadataService(metadataConfigurator, metadata2);

            //Act
            int adjustedwidth1 = metadataService1.AdjustVideoHeight();
            int adjustedwidth2 = metadataService2.AdjustVideoHeight();

            //Assert
            Assert.AreEqual(96, adjustedwidth1);
            Assert.AreEqual(80, adjustedwidth2);
        }
Ejemplo n.º 57
0
        public void GetMp4StringWithoutAudioTest()
        {
            //Arrange
            const string sourceFilePath = "source file path";
            const string destinationPath = "my path";
            const string destinationFileName = "my file";

            string destinationFilePath = Path.Combine(destinationPath, destinationFileName);
            MetadataServiceConfigurator serviceConfigurator = Factory.CreateMp4MetadataServiceConfigurator();
            var metadata = new VideoMediaInfo
                {
                    GeneralFormat = "MPEG-4",
                    AudioBitRate = 0,
                    AudioChannels = (int) AudioChannel.None,
                    AudioFormat = null,
                    AudioFormatProfile = null,
                    VideoBitRate = 2500000,
                    VideoFormat = "AVC",
                    VideoFrameRate = 24,
                    VideoFormatSettingsGOP = String.Format("M=1, N={0}", serviceConfigurator.MaxKeyFrame),
                    VideoFormatProfile = "Baseline",
                    VideoWidth = 4096,
                    VideoHeight = 2304
                };

            var metadataService = new MetadataService(serviceConfigurator, metadata);
            var stringBuilder = new FfmpegService(metadataService, sourceFilePath, destinationPath, destinationFileName);

            string ffmpegStr = "-i \"{0}\" -f mp4 -vcodec copy -quality good -cpu-used 0 -threads {1} -y \"{2}.{3}\"";
            ffmpegStr = String.Format(ffmpegStr,
                                      sourceFilePath,
                                      Environment.ProcessorCount,
                                      destinationFilePath,
                                      serviceConfigurator.FfmpegContainer);

            //Act
            string str = stringBuilder.GetStringForEncoder();

            //Assert
            Assert.AreEqual(ffmpegStr, str, true);
        }
Ejemplo n.º 58
0
        public void AdjustVideoFpsSuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1 = new VideoMediaInfo
                {
                    VideoFrameRate = 29.970
                };

            var metadata2 = new VideoMediaInfo
                {
                    VideoFrameRate = metadataConfigurator.MinFps - 1
                };

            var metadata3 = new VideoMediaInfo
                {
                    VideoFrameRate = metadataConfigurator.MaxFps + 1
                };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata1);
            var metadataService2 = new MetadataService(metadataConfigurator, metadata2);
            var metadataService3 = new MetadataService(metadataConfigurator, metadata3);

            //Act
            double adjustedFps1 = metadataService1.AdjustVideoFps();

            //Act & Assert
            CustomAssert.IsThrown<MediaFormatException>(() => metadataService2.AdjustVideoFps());
            CustomAssert.IsThrown<MediaFormatException>(() => metadataService3.AdjustVideoFps());

            //Assert
            Assert.AreEqual(metadata1.VideoFrameRate, adjustedFps1);
        }
Ejemplo n.º 59
0
        public void AdjustHeightVideoSuccessTest()
        {
            //Arrange
            const int height = 23;
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata = new VideoMediaInfo
                {
                    VideoHeight = height*metadataConfigurator.VideoSizeMul
                };
            var metadataService = new MetadataService(metadataConfigurator, metadata);

            //Act
            int adjustedHeight = metadataService.AdjustVideoHeight();

            //Assert
            Assert.AreEqual(metadata.VideoHeight, adjustedHeight);
        }
Ejemplo n.º 60
0
        public void AdjustVideoBpsFor1280X720SuccessTest()
        {
            //Arrange
            var metadataConfigurator = new MetadataServiceConfigurator(null, null, null, null, null);

            var metadata1280X720X5000 = new VideoMediaInfo
                {
                    VideoWidth = 1280,
                    VideoHeight = 720,
                    VideoBitRate = metadataConfigurator.VideoBps1280X720
                };
            var metadata1280X720More5000 = new VideoMediaInfo
                {
                    VideoWidth = 1280,
                    VideoHeight = 720,
                    VideoBitRate = metadataConfigurator.VideoBps1280X720 + 1
                };
            var metadata1280X720Less5000 = new VideoMediaInfo
                {
                    VideoWidth = 1280,
                    VideoHeight = 720,
                    VideoBitRate = metadataConfigurator.VideoBps1280X720 - 1
                };

            var metadataService1 = new MetadataService(metadataConfigurator, metadata1280X720X5000);
            var metadataService2 = new MetadataService(metadataConfigurator, metadata1280X720More5000);
            var metadataService3 = new MetadataService(metadataConfigurator, metadata1280X720Less5000);

            //Act
            int adjBps1280X720X5000 = metadataService1.AdjustVideoBps();
            int adjBps1280X720More5000 = metadataService2.AdjustVideoBps();
            int adjBps1280X720Less5000 = metadataService3.AdjustVideoBps();

            //Assert
            Assert.AreEqual(metadataConfigurator.VideoBps1280X720, adjBps1280X720X5000);
            Assert.AreEqual(metadataConfigurator.VideoBps1280X720, adjBps1280X720More5000);
            Assert.AreEqual(metadata1280X720Less5000.VideoBitRate, adjBps1280X720Less5000);
        }