简体   繁体   中英

flv reencode to mp4 for iphone/ipod via ffmpeg and x264 (quality issue)

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.

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 -sameq and -b and -bt settings, text just isn't readable.

Next I tried to split the video out and process it directly, using these instructions: https://sites.google.com/site/linuxencoding/x264-encoding-guide

The problem is myplayer (via ffmpeg) was not able to determine the duration of the FLV (even though the metadata was set).

(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.

user@server:/tmp# mplayer -nosound -benchmark -sws 9 -vf dsize=640:480:0,scale=0:0,expand=640:480 -vo yuv4mpeg:file=>(x264 --demuxer y4m --crf 0 --preset slow --threads auto --output output.264 - 2>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 => 641x480 Planar YV12

I have also tried specifying FPS, but no change in results

user@server:/tmp# mplayer -nosound -fps 25-benchmark -sws 9 -vf dsize=640:480:0,scale=0:0,expand=640:480 -vo yuv4mpeg:file=>(x264 --demuxer y4m --fps 25 --crf 0 --preset slow --threads auto --output output.264 - 2>x264.log) 'input.flv'

Can someone tell me how to either:

  1. fix my split A/V processing/timing/duration issues?
  2. improve the quality of the FFMPEG conversion of FLV to iphone3 compatible format?

我建议尝试进行手中断(http://handbrake.fr/),我认为它可以对flvs以及我尝试过的几乎所有其他文件格式进行编码,而且我从来没有遇到任何质量问题。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM