title: How to encode H.264 video using FFmpeg C API and then open the output with a media player?
body: <p>I'm trying to encode a H.264 video with the FFMPEG C API.
  I have successfully compiled and executed the <a href="http://ffmpeg.org/doxygen/trunk/doc_2examples_2decoding_encoding_8c-example.html" rel="nofollow">decoding/encoding example</a> provided by FFMPEG.</p>
  
  <p>The problem I'm facing is that the .mpg file (encoded with AV_CODEC_ID_MPEG1VIDEO) the example creates works. Windows creates a thumbnail and everything. On the other hand the .h264 (encoded with AV_CODEC_ID_H264) file does not. When I try to play the file in VLC the play/pause button just flickers, no thumbnail in windows, no nothing.</p>
  
  <p>During encoding libx264 reports the following:</p>
  
  <pre><code>[libx264 @ 004b81a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
  [libx264 @ 004b81a0] profile High, level 1.3
  [libx264 @ 004b81a0] frame I:3     Avg QP:26.79  size:  2116
  [libx264 @ 004b81a0] frame P:12    Avg QP:26.60  size:   789
  [libx264 @ 004b81a0] frame B:10    Avg QP:31.39  size:   499
  [libx264 @ 004b81a0] consecutive B-frames: 20.0% 80.0%
  [libx264 @ 004b81a0] mb I  I16..4: 78.3% 11.6% 10.1%
  [libx264 @ 004b81a0] mb P  I16..4: 77.4%  0.6%  0.1%  P16..4: 20.3%  0.7%  0.9%  0.0%  0.0%    skip: 0.0%
  [libx264 @ 004b81a0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  9.4%  0.2%  0.0%  direct:11.0%  skip:79.4%  L0:25.4% L1:35.4% BI:39.2%
  [libx264 @ 004b81a0] final ratefactor: 17.03
  [libx264 @ 004b81a0] 8x8 transform intra:3.4% inter:31.3%
  [libx264 @ 004b81a0] direct mvs  spatial:0.0% temporal:100.0%
  [libx264 @ 004b81a0] coded y,uvDC,uvAC intra: 4.4% 35.8% 1.6% inter: 1.3% 34.5% 9.5%
  [libx264 @ 004b81a0] i16 v,h,dc,p:  0%  0%  0% 100%
  [libx264 @ 004b81a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  7% 20% 17% 49%  0%  0%  0%  1%  6%
  [libx264 @ 004b81a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14%  7% 18% 45%  2%  7%  2%  3%  2%
  [libx264 @ 004b81a0] i8c dc,h,v,p:  2%  6%  4% 88%
  [libx264 @ 004b81a0] Weighted P-Frames: Y:0.0% UV:0.0%
  [libx264 @ 004b81a0] ref P L0: 95.6%  1.6%  2.2%  0.5%  0.2%
  [libx264 @ 004b81a0] ref B L0: 67.5% 28.5%  3.2%  0.8%
  [libx264 @ 004b81a0] kb/s:166.45
  </code></pre>
  
  <p>"ffprobe.exe test.h264 -show_streams" returns</p>
  
  <pre><code>[STREAM]
  index=0
  codec_name=h264
  codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
  profile=High
  codec_type=video
  codec_time_base=1/50
  codec_tag_string=[0][0][0][0]
  codec_tag=0x0000
  width=352
  height=288
  has_b_frames=1
  sample_aspect_ratio=0:1
  display_aspect_ratio=0:1
  pix_fmt=yuv420p
  level=13
  timecode=N/A
  id=N/A
  r_frame_rate=50/2
  avg_frame_rate=25/1
  time_base=1/1200000
  start_pts=N/A
  start_time=N/A
  duration_ts=N/A
  duration=N/A
  bit_rate=N/A
  nb_frames=N/A
  nb_read_frames=N/A
  nb_read_packets=N/A
  DISPOSITION:default=0
  DISPOSITION:dub=0
  DISPOSITION:original=0
  DISPOSITION:comment=0
  DISPOSITION:lyrics=0
  DISPOSITION:karaoke=0
  DISPOSITION:forced=0
  DISPOSITION:hearing_impaired=0
  DISPOSITION:visual_impaired=0
  DISPOSITION:clean_effects=0
  DISPOSITION:attached_pic=0
  [/STREAM]
  </code></pre>
  
  <p>There you can see:</p>
  
  <pre><code>start_time=N/A
  duration_ts=N/A
  duration=N/A
  </code></pre>
  
  <p>I have tried countless changes to the AVCodecContext and multitude of parameters options to av_opt_set function. Still no luck getting a working H.264 video. I have even tried different builds of FFmpeg. No luck.</p>
  
  <p>I'm using the "FFmpeg git-0fb64da 32-bit Dev" build from Zeranoe and MinGw 4.7.2</p>