Skip to content

Creating New Files from Multiple Sources Without Reencoding

Video Edit SDK .Net VideoEditCore

Introduction

When developing multimedia applications, you may need to combine content from different files. This guide demonstrates how to merge streams from multiple video and audio sources into a single output file without quality loss from reencoding.

Benefits of Working with Multiple Sources

  • Preserve original quality of all source files
  • Combine audio tracks from different sources
  • Add background music to video files
  • Create multilingual content with different audio tracks
  • Save processing time by avoiding unnecessary reencoding

Step-by-Step Implementation

1. Initialize the Streams Collection

First, create a list to hold all the stream references:

var streams = new List();

2. Add Video Stream

Add a video stream from your first source file. The ID "v" designates this as the video component:

streams.Add(new FFMPEGStream
{
                Filename = "c:\\samples\\!video.avi",
                ID = "v"
});

3. Add Primary Audio Stream

Incorporate an audio stream from an MP3 file. The ID "a" identifies this as an audio component:

streams.Add(new FFMPEGStream
{
                Filename = "c:\\samples\\!sophie.mp3",
                ID = "a"
});

4. Add Additional Audio Streams

You can add more audio streams from other video files. Again, use the ID "a" to specify this as an audio component:

streams.Add(new FFMPEGStream
{
                Filename = "c:\\samples\\!video2.avi",
                ID = "a"
});

5. Process and Generate Output

Finally, combine all streams into a single output file. Setting the second parameter to "true" ensures the output duration matches the shortest stream, preventing playback issues:

VideoEdit1.FastEdit_MuxStreams(streams, true, outputFile);

Important Technical Considerations

When combining streams from multiple sources, keep in mind:

  • Source formats must be compatible with the output container format
  • Audio codec compatibility should be verified beforehand
  • Stream synchronization may require additional configuration in complex scenarios
  • Some players may have issues if stream durations vary significantly

Required Dependencies

To implement this functionality, you'll need to reference:

  • SDK redist
  • FFMPEG redist x86 x64

For more information on deploying these dependencies to end users, see our deployment guide.

Further Resources

Visit our GitHub repository for additional code samples and implementation examples.