如何重新创建MP4文件

时间:2018-03-02 07:30:32

标签: ffmpeg

我正在尝试更换在相对受限制的环境中播放的MP4文件,因此我尝试创建一个尽可能接近当前视频文件的视频文件,以确保它能够正常工作。 ffprobe有这个:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2016-12-07T20:39:51.000000Z
    encoder         : HandBrake 0.9.9 2013051800
  Duration: 00:00:11.01, start: 0.000000, bitrate: 4789 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1080x1920 [SAR 1:1 DAR 9:16], 4648 kb/s, 24 fps, 24 tbr, 90k tbn, 180k tbc (default)

我不知道如何指定mp42mp42isomavc1。其余的我有一些想法:-vf支持setsarsetdar-pix_fmt yuv420p-framerate 24

1 个答案:

答案 0 :(得分:0)

假设您从视频输入开始并且分辨率并不重要,请使用

ffmpeg -i source -vf setsar=1,format=yuv420p -r 24 \
       -c:v libx264 -profile:v main -video_track_timescale 90k \
       -color_primaries 1 -color_trc 1 -colorspace 1 -color_range 1 \
       -brand mp42 -movflags +faststart out.mp4

FFmpeg不允许用户手动设置minor_version。编码时,编码器将选择编解码器时基tbc,不建议手动设置它。颜色属性设置为与您给定的输入匹配,但如果您的源具有不同的属性,并且您不使用过滤器转换它们,则这些属性将为false。当然,您的解码器可能会忽略这些容器级别标志并仅检查比特流。

如果您的输入帧速率不是24,那么ffmpeg将丢弃/复制帧以满足输出速率。除非您的输入具有播放器不支持的帧速率,否则最好跳过-r选项。