<div dir="ltr">Hi all:<div><br></div><div>I've been stucked with this problem for quite a long time, and finally I decide to ask for help here.</div><div><br></div><div>I encode my camera video to MPEG4 ES stream with libav. I could use VLC to play the video, but it doesn't work for quicktime or realplayer.</div>
<div><br></div><div>There must be something wrong with my encoding code. see below:</div><div><br></div><div><div>avcodec_register_all();</div><div><span class="" style="white-space:pre">   </span>AVCodec *codec = NULL;</div>
<div><span class="" style="white-space:pre">    </span></div><div><span class="" style="white-space:pre">   </span>codec = avcodec_find_encoder(CODEC_ID_MPEG4);</div></div><div><div>if (!codec) </div><div><span class="" style="white-space:pre">    </span>{</div>
<div><span class="" style="white-space:pre">            </span>return false;</div><div><span class="" style="white-space:pre">      </span>}</div><div><span class="" style="white-space:pre">  </span>c = avcodec_alloc_context3(codec);</div>
<div><span class="" style="white-space:pre">    </span>if (NULL == c)</div><div><span class="" style="white-space:pre">     </span>{</div><div><span class="" style="white-space:pre">          </span>return false;</div><div><span class="" style="white-space:pre">      </span>}</div>
<div><span class="" style="white-space:pre">            </span>AVDictionary *d = NULL;<span class="" style="white-space:pre">           </span></div><div><span style="white-space:pre"><br></span></div><div><span class="" style="white-space:pre">       </span>c->codec_id = CODEC_ID_MPEG4;</div>
<div><span class="" style="white-space:pre">            </span>c->codec_type = AVMEDIA_TYPE_VIDEO;</div><div><span class="" style="white-space:pre">             </span>c->width = dwDstWidth;</div><div><span class="" style="white-space:pre">          </span>c->height = dwDstHeight;</div>
<div><span class="" style="white-space:pre">            </span>AVRational atemp = {1,dwFps__};</div><div><span class="" style="white-space:pre">            </span>c->time_base = atemp;</div><div><span class="" style="white-space:pre">           </span>c->gop_size = 10;</div>
<div><span class="" style="white-space:pre">            </span>c->max_b_frames=1;</div><div><span style="white-space:pre"><br></span></div><div><span class="" style="white-space:pre">          </span>c->pix_fmt = PIX_FMT_YUV420P;</div>
<div><span class="" style="white-space:pre">            </span>c->bit_rate = 400000;</div><div><span class="" style="white-space:pre">           </span>c->level = 1;//profile-level-id</div></div><div><div><span class="" style="white-space:pre">  </span>if (avcodec_open2(c, codec,&d) < 0) </div>
<div><span class="" style="white-space:pre">    </span>{</div><div><span class="" style="white-space:pre">          </span>avcodec_close(c);</div><div><span class="" style="white-space:pre">          </span>av_free(c);</div><div><span class="" style="white-space:pre">                </span>c = NULL;</div>
<div><span class="" style="white-space:pre">            </span>return false;</div><div><span class="" style="white-space:pre">      </span>}</div><div><span class="" style="white-space:pre">  </span>av_dict_free(&d);</div><div><span class="" style="white-space:pre">      </span>picture= avcodec_alloc_frame();</div>
</div><div>...</div><div>----------------------------------------------------------------------------------</div><div>I wonder if my set of parameraters for encoding mpeg4 video is right? Or some special parameters are needed for quicktime?</div>
<div><br></div><div>Thanks</div><div>Br.Luffy</div><div><br></div><div><br></div></div>