/// <summary> /// Adds audio to a video file. /// </summary> /// <param name="source">Source video file.</param> /// <param name="audio">Source audio file.</param> /// <param name="output">Output video file.</param> /// <param name="stopAtShortest">Indicates if the encoding should stop at the shortest input file.</param> /// <returns>Success state</returns> public VideoInfo ReplaceAudio(VideoInfo source, FileInfo audio, FileInfo output, bool stopAtShortest = false) { FFMpegHelper.ConversionExceptionCheck(source.ToFileInfo(), output); FFMpegHelper.InputsExistExceptionCheck(audio); FFMpegHelper.ConversionSizeExceptionCheck(source); FFMpegHelper.ExtensionExceptionCheck(output, source.Extension); var args = ArgumentsStringifier.Input(source) + ArgumentsStringifier.Input(audio) + ArgumentsStringifier.Copy(Channel.Video) + ArgumentsStringifier.Audio(AudioCodec.Aac, AudioQuality.Hd) + ArgumentsStringifier.FinalizeAtShortestInput(stopAtShortest) + ArgumentsStringifier.Output(output); if (!RunProcess(args, output)) { throw new FFMpegException(FFMpegExceptionType.Operation, "Could not replace the video audio."); } return(new VideoInfo(output)); }
/// <summary> /// Adds a poster image to an audio file. /// </summary> /// <param name="image">Source image file.</param> /// <param name="audio">Source audio file.</param> /// <param name="output">Output video file.</param> /// <returns></returns> public VideoInfo PosterWithAudio(FileInfo image, FileInfo audio, FileInfo output) { FFMpegHelper.InputsExistExceptionCheck(image, audio); FFMpegHelper.ExtensionExceptionCheck(output, FileExtension.Mp4); FFMpegHelper.ConversionSizeExceptionCheck(Image.FromFile(image.FullName)); var args = ArgumentsStringifier.Loop(1) + ArgumentsStringifier.Input(image) + ArgumentsStringifier.Input(audio) + ArgumentsStringifier.Video(VideoCodec.LibX264, 2400) + ArgumentsStringifier.Audio(AudioCodec.Aac, AudioQuality.Normal) + ArgumentsStringifier.FinalizeAtShortestInput(true) + ArgumentsStringifier.Output(output); if (!RunProcess(args, output)) { throw new FFMpegException(FFMpegExceptionType.Operation, "An error occured while adding the audio file to the image."); } return(new VideoInfo(output)); }