如何将rawvideo编解码器流式传输到mp4容器?错误是Could not find tag for codec rawvideo in stream #0, codec not currently supported in container。网址是例如video=Logitech HD Webcam C270,格式是dshow。文件名可以说out.mp4

AVFormatContext* pInputFmtCtx = avformat_alloc_context();
AVInputFormat* inputFormat = av_find_input_format(Format);

avformat_open_input(&pInputFmtCtx, url, inputFormat, null);
if (avformat_find_stream_info(pInputFmtCtx, null) != -1)
   ... find stream index

AVCodec* videoDecoder = avcodec_find_decoder(pInputFmtCtx->streams[_vidStreamIndex]->codecpar->codec_id);

AVCodecContext* videcCodecCtx = avcodec_alloc_context3(videoDecoder);
avcodec_parameters_to_context(videcCodecCtx, videoCodecParams);

avcodec_open2(videcCodecCtx, videoDecoder, null);

// and the output context
AVFormatContext* pOutputFmtCtx = null;
avformat_alloc_output_context2(&pOutputFmtCtx, null, null, fileName);

// iterate over streams of input context and when we find it
AVStream* in_stream = pInputFmtCtx->streams[i];
AVCodecParameters* in_codecpar = in_stream->codecpar;

AVStream* out_stream = avformat_new_stream(pOutputFmtCtx, null);

avcodec_parameters_copy(out_stream->codecpar, in_codecpar);

out_stream->codecpar->codec_tag = 0;

// after that
avio_open(&pOutputFmtCtx->pb, fileName, AVIO_FLAG_WRITE);
avformat_write_header(pOutputFmtCtx, &opts);


如果摄像机流式传输H264,则此方法工作正常,但如果摄像机流式传输原始视频,则不会流式传输到文件并引发错误。我该如何解决?我还没真正了解ffmpeg。

最佳答案

mp4不支持rawvideo。您必须将其编码为其他格式,或使用支持该格式的容器。

10-06 14:28