-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathProgram.cs
More file actions
26 lines (21 loc) · 777 Bytes
/
Program.cs
File metadata and controls
26 lines (21 loc) · 777 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using FFmpeg.Wrapper;
// https://github.com/FFmpeg/FFmpeg/blob/master/doc/examples/remux.c
if (args.Length < 2) {
Console.WriteLine("Usage: Remux <input path> <output path>");
return;
}
using var demuxer = new MediaDemuxer(args[0]);
using var remuxer = new MediaMuxer(args[1]);
var srcStreams = demuxer.Streams.OrderBy(s => s.Index).ToArray();
var dstStreams = new MediaStream[srcStreams.Length];
foreach (var srcStream in srcStreams) {
dstStreams[srcStream.Index] = remuxer.AddStream(srcStream);
}
remuxer.Open();
using var packet = new MediaPacket();
while (demuxer.Read(packet)) {
var index = packet.StreamIndex;
packet.RescaleTS(srcStreams[index].TimeBase, dstStreams[index].TimeBase);
packet.BytePosition = -1;
remuxer.Write(packet);
}