https://github.com/twometer/csvideo
C# Library for writing video files using FFmpeg with audio support
https://github.com/twometer/csvideo
csharp ffmpeg video-processing
Last synced: 10 months ago
JSON representation
C# Library for writing video files using FFmpeg with audio support
- Host: GitHub
- URL: https://github.com/twometer/csvideo
- Owner: Twometer
- License: apache-2.0
- Created: 2020-01-29T14:29:49.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-25T15:14:28.000Z (about 6 years ago)
- Last Synced: 2025-08-01T05:58:51.017Z (11 months ago)
- Topics: csharp, ffmpeg, video-processing
- Language: C#
- Size: 30.3 KB
- Stars: 11
- Watchers: 4
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CSVideo
[](https://www.nuget.org/packages/CSVideo) 
CSVideo is a C# Library for writing video files using FFmpeg.
I was searching for a good C# video writing library for a long time, and the only one
that could output a modern formats (H264 etc.) was Accord.FFmpeg. The framework however
requires a lot of extra libraries, and the video file writer is glitchy and does not work with audio.
This project aims to provide a lightweight and easy-to-use FFmpeg video writing library without
any of these problems.
## Design
One of the design goals for this library is an easy-to-use API. Part of this is not only a simple set of
exposed functions, but also the chosen default configuration. In contrast to libraries like Accord, the
default configuration for this library outputs high-quality audio and video in 1920x1080 resolution. However,
you can also change the configuration to your liking, if you want something more special.
## Usage
To use this library, you need the FFmpeg library files. I tested it with the libraries supplied by FFmpeg.AutoGen (v4.2),
which you can download from [here](https://github.com/Ruslan-B/FFmpeg.AutoGen/tree/master/FFmpeg/bin/x64), but you can
also try the latest version from the FFmpeg site. Once you have these libraries, you can use CSVideo as follows:
```csharp
FFmpegLoader.Load(@"C:\the\ffmpeg\folder");
using (var writer = new VideoWriter(OutputPath))
{
writer.Open();
while (true)
{
if (writer.WriteVideo)
{
// Write a video frame
writer.WriteVideoFrame(bitmap);
}
else
{
// Write an audio frame
writer.WriteAudioFrame(audioData);
}
}
}
```
For a more complete example, see the CSVideo.Example project.
## Audio Support
Supports mono and stereo floating-point audio samples, for example from a CSCore stream. The default is stereo, so
for mono streams you have to set `writer.Channels = 1`. It only supports mono and stereo, any different number of
channels will lead to an exception
## Credits
Thanks to [FFmpeg.AutoGen by Ruslan-B](https://github.com/Ruslan-B/FFmpeg.AutoGen) for the very nice C# FFmpeg wrapper
## Contributing
You can help me make CSVideo the go-to solution for video manipulation in C# by reporting bugs
in the GitHub issue tracker, or submitting pull requests. I appreciate every improvement to this repository.