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; } }