0

I need to convert flv video into mp4 video, so I used this command:

ffmpeg -i input.flv -c -vcodec libx264 -acodec copy output.mp4

But output video has little bit worse video quality, how can I fix it?

MP4 info (output):

  • video: 472kb/s bitrate, 680*480, 24 FPS
  • audio: 112kb/s bitrate, 44.1 kHz, mpeg audio, stereo

FLV info (input):

  • video: 1500kb/s bitrate, 680*480, 24 FPS
  • audio: 112kb/s bitrate, 44.1 kHz, mpeg audio, stereo

UPDATE:

I tried with -crf 18 and this is result (colors of output are more bright and look at that yellow line on the cap, on the output image that yellow line contains something like noise).

Input:

INPUT

Output:

OUTPUT

10
  • Add -crf 20 .. – Gyan Jun 12 '18 at 9:09
  • @Gyan why 20? 23 is default, right? And 0 is lossless, so why no 0? – tomsk Jun 12 '18 at 9:11
  • 0 output isn't compatible with most players. Low CRF offers diminishing returns. 18 is considered visually lossless, but you don't need to try that first. – Gyan Jun 12 '18 at 9:20
  • @Gyan What is wrong with this command ffmpeg -i input.flv -crf 20 -c -vcodec libx264 -acodec copy -copyts output.mp4? I get an error: Unable to find a suitable output format for 'libx264' – tomsk Jun 12 '18 at 9:53
  • Remove -c. Unless you have specific needs, remove -copyts as well. – Gyan Jun 12 '18 at 10:20
1

Lossy codecs such as x264 degrade the image quality by design, if you don't want to lose image quality you either have to use a lossless codec or better yet, not re-encode at all.

I assume the source material is either H.264 or MPEG-2, so the best solution in your case would be to simply copy all the streams into the new container:

ffmpeg -i input.flv -c copy output.mp4

Here's the command for using x264's lossless mode if you have to re-encode for whatever reason:

ffmpeg -i input.flv -c:a copy -c:v libx264 -crf 0 output.mp4
0

Please higher your -minrate, -maxrate, -bufsize and study its codec. Download the Better container for video codec and audio codec separately. encode the codec in these containers but follow these steps:

1. Download the audio and video separately. you can do this by adding -vn and -an on the output command line. -vn means 'no video' while -an means 'no audio'. After that, study the codec of video or audio, and encode it to its better container... Here are the best container for modern codecs.

"Audio/Video codec"

*AAC/H264 is better on (TS)
*OPUS is better on (MKV)
*VP9 is better on (AVI)

2. After downloading the video/audio separately, you need to merge them together of course. Please include your said -minrate, -maxrate, and -bufsize. Don't forget to study your codecs and join them together with these containers:

"Merging"

*Mixing VP9 and OPUS is better on (MKV)
*Mixing H264 and AAC is better on (MOV)
*otherwise most incompatible codec is better on (MKV)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.