Ejemplo n.º 1
0
        private void NewStreams(Codec[] codecs)
        {
            try {
                foreach (var codec in codecs)
                {
                    var stream = FF.avformat_new_stream(formatContext, codec.codec);
                    if (stream == null)
                    {
                        throw new InvalidOperationException("无法创建流");
                    }
                    FF.avcodec_copy_context(stream->Codec, codec.codecContext).CheckFFmpegCode();
                    stream->Codec->CodecTag = 0;
                    if (outputFormat->Flags.HasFlag(AVFmt.GlobalHeader))
                    {
                        stream->Codec->Flags |= AVCodecFlag.GlobalHeader;
                    }
                    stream->TimeBase = codec.codecContext->TimeBase;
                    FF.avcodec_parameters_from_context(stream->Codecpar, stream->Codec).CheckFFmpegCode();
                }

                FF.avformat_write_header(formatContext, null).CheckFFmpegCode();
            } catch {
                Dispose();
                throw;
            }
        }