FFmpeg(C / libav)VPX到mpeg2视频流无法在VLC中重现

时间:2017-09-15 22:23:38

标签: c ffmpeg libavcodec libavformat

我目前正在尝试将VPX(VP8 / VP9)视频转码为mpeg2视频,然后使用mpegts通过UDP传输。

我已经初始化了所有上下文和流,只要我将其流式传输到ffplay它就可以工作,如果我将流发送到VLC或其他播放器,接收器只显示第一帧而不执行任何其他操作。如果我通过命令行执行相同的操作,它可以完美地运行 - ffmpeg -re -i video.webm -an -f mpegts udp://127.0.0.1:8080

我的输出背景:

this->output_codec_ctx_->codec_type    = AVMEDIA_TYPE_VIDEO; // Set media type
this->output_codec_ctx_->pix_fmt       = AV_PIX_FMT_YUV420P; // Set stream pixel format
this->output_codec_ctx_->time_base.den = ceil(av_q2d(input_stream->r_frame_rate));     // Add the real video framerate. Eg.: 29.9
this->output_codec_ctx_->time_base.num = 1;                  // Numerator of the framerate. Eg.: num/29.9
this->output_codec_ctx_->width         = input_stream->codecpar->width;  // Video width
this->output_codec_ctx_->height        = input_stream->codecpar->height; // Video height
this->output_codec_ctx_->bit_rate      = 400000; // Video quality
this->output_codec_ctx_->gop_size      = 12;
this->output_codec_ctx_->max_b_frames  = 2;
this->output_codec_ctx_->framerate     = this->input_codec_ctx_->framerate;
this->output_codec_ctx_->sample_aspect_ratio     = this->input_codec_ctx_->sample_aspect_ratio;

我的av_dump:

Output #0, mpegts, to 'udp://127.0.0.1:20010':
  Metadata:
    encoder         : Lavf57.72.101
    Stream #0:0: Video: mpeg2video (Main), 1 reference frame, yuv420p, 480x640 (0x0), q=2-31, 400 kb/s, SAR 1:1 DAR 3:4, 24 fps, 24 tbr, 90k tbn

FFMPEG av_dump:

Output #0, mpegts, to 'udp://127.0.0.1:20010':
  Metadata:
    title           : Tears of Steel
    encoder         : Lavf57.72.101
    Stream #0:0: Video: mpeg2video (Main), yuv420p, 480x640 [SAR 1:1 DAR 3:4], q=2-31, 200 kb/s, 24 fps, 90k tbn, 24 tbc (default)
    Metadata:
      encoder         : Lavc57.96.101 mpeg2video
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1

关于我可能做错的任何想法?

0 个答案:

没有答案