title: flv reencode to mp4 for iphone/ipod via ffmpeg and x264 (quality issue)
body: <p>There are a lot of questions on this topic, and I've read most of them and most of the google search results I could come up with.</p>
  
  <p>When I use FFMPEG to convert a FLV to a iphone3 compatble MP4 file, it just doesn't preserver enough of the quality.  Yes, I've worked the hell out of <code>-sameq</code> and <code>-b</code> and <code>-bt</code> settings, text just isn't readable.</p>
  
  <p>Next I tried to split the video out and process it directly, using these instructions:
  <a href="https://sites.google.com/site/linuxencoding/x264-encoding-guide" rel="nofollow">https://sites.google.com/site/linuxencoding/x264-encoding-guide</a></p>
  
  <p>The problem is myplayer (via ffmpeg) was not able to determine the duration of the FLV (even though the metadata was set).</p>
  
  <p>(I assume) Because of that unknown duration, when I create the MP4 file, the resulting x264 file plays through super-fast while the audio plays at the normal rate.</p>
  
  <pre><code>user@server:/tmp# mplayer -nosound -benchmark -sws 9 -vf dsize=640:480:0,scale=0:0,expand=640:480 -vo yuv4mpeg:file=&gt;(x264 --demuxer y4m --crf 0 --preset slow --threads auto --output output.264 - 2&gt;x264.log) 'input.flv'
  MPlayer 1.0rc4-4.4.5 (C) 2000-2010 MPlayer Team
  mplayer: could not connect to socket
  mplayer: No such file or directory
  Failed to open LIRC support. You will not be able to use your remote control.
  
  Playing input.flv.
  libavformat file format detected.
  [flv @ 0x1202460]Estimating duration from bitrate, this may be inaccurate
  [lavf] stream 0: video (vp6f), -vid 0
  [lavf] stream 1: audio (nellymoser), -aid 0
  VIDEO:  [VP6F]  1680x992  0bpp  1000.000 fps   33.4 kbps ( 4.1 kbyte/s)
  Clip info:
   audiocodecid: 6
   audiodatarate: 86
   audiosamplerate: 44100
   audiosamplesize: 16
   audiosize: 6097005
   canSeekToEnd: true
   datasize: 8609138
   duration: 567
   framerate: 2
   hasAudio: true
   hasCuePoints: false
   hasKeyframes: true
   hasMetadata: true
   hasVideo: true
   height: 992
   lasttimestamp: 567
   metadatacreator: flvtool++ (Facebook, Motion project, dweatherford)
   stereo: false
   totalframes: 1043
   videocodecid: 4
   videodatarate: 33
   videosize: 2316256
   width: 1680
  Using (default) progressive frame mode.Opening video filter: [expand w=640 h=480]
  Expand: 640 x 480, -1 ; -1, osd: 0, aspect: 0.000000, round: 1
  Opening video filter: [scale w=0 h=0]
  Opening video filter: [dsize=640:480:0]
  ==========================================================================
  Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
  Selected video codec: [ffvp6f] vfm: ffmpeg (FFmpeg VP6 Flash)
  ==========================================================================
  Audio: no sound
  Starting playback...
  Movie-Aspect is undefined - no prescaling applied.
  [swscaler @ 0x7f0c738b9620]Lanczos scaler, from yuv420p to yuv420p using MMX2
  VO: [yuv4mpeg] 640x480 =&gt; 641x480 Planar YV12
  </code></pre>
  
  <p>I have also tried specifying FPS, but no change in results</p>
  
  <pre><code>user@server:/tmp# mplayer -nosound -fps 25-benchmark -sws 9 -vf dsize=640:480:0,scale=0:0,expand=640:480 -vo yuv4mpeg:file=&gt;(x264 --demuxer y4m --fps 25 --crf 0 --preset slow --threads auto --output output.264 - 2&gt;x264.log) 'input.flv'
  </code></pre>
  
  <p>Can someone tell me how to either:</p>
  
  <ol>
  <li>fix my split A/V processing/timing/duration issues? </li>
  <li>improve the
  quality of the FFMPEG conversion of FLV to iphone3 compatible
  format?</li>
  </ol>