Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ffmpeg convert from H.264 (High 4:4:4 Profile) to H.264 (Main Profile)

How can I convert a video from H.264 (High 4:4:4 Profile) to H.264 (Main Profile) using ffmpeg?

I can't do that with this command: ffmpeg -i 1/25359.mp4 -profile:v main out.mp4.

That'd return an error:

...
That'd return an error:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1/25359.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.101
  Duration: 00:00:06.08, start: 0.000000, bitrate: 1059 kb/s
    Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 351x297, 1057 kb/s, 12.50 fps, 12.50 tbr, 12800 tbn, 25 tbc (default)
    Metadata:
      handler_name    : VideoHandler
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
x264 [error]: main profile doesn't support 4:4:4
[libx264 @ 0x8fa9640] Error setting profile main.
[libx264 @ 0x8fa9640] Possible profiles: baseline main high high10 high422 high444
Output #0, mp4, to '1/24545.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.101
    Stream #0:0(und): Video: h264, none, q=2-31, 128 kb/s, 12.50 fps (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc56.60.100 libx264
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
like image 524
Milad Avatar asked Jun 22 '16 11:06

Milad


People also ask

How do I change my codec to H 264?

At the bottom, open drop-down menu beside Output Format and choose the desired output format from the Video tab. Then, to the video resolution, click the edit icon to open the Setting window. Here choose H264 from Encoder tab under the Video option and click Create.

What does CRF mean FFMpeg?

The Constant Rate Factor or CRF is an option available in the libx264 encoder to set our desired output quality. It enables us to specify a target value that maps to a specific quality by adjusting the bitrates automatically based on the input video.

Which H 264 profile should I use?

264/AVC Profiles. The baseline profile is the simplest profile, and must be supported by all decoders. It may be useful for real-time applications such as video conferencing, where the encoder and decoder must run quickly. The main profile is widely used.


2 Answers

Your source video has full-sized chroma planes - as indicated by the latter two 4s in YUV444P - and main profile doesn't support that format, so you'll have to select a pixel format like YUV 4:2:0

ffmpeg -i 1/25359.mp4 -vf "scale=2*trunc(iw/2):-2,setsar=1" -profile:v main -pix_fmt yuv420p out.mp4
like image 54
Gyan Avatar answered Sep 30 '22 12:09

Gyan


The former answer was right, but I think the following answer was exactly what the asker want.

ffmpeg -i 1/25359.mp4 -profile:v main -pix_fmt yuv420p out.mp4
  • -profile:v: means which mode you want to encode video, there are some options here
  • -pix_fmt: yuv420p was allright for old videos.
like image 29
FantasyJXF Avatar answered Sep 30 '22 10:09

FantasyJXF