如何重新创建MP4文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重新创建MP4文件相关的知识,希望对你有一定的参考价值。

我正在尝试替换在相对受限的环境中播放的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

答案

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

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选项。

以上是关于如何重新创建MP4文件的主要内容,如果未能解决你的问题,请参考以下文章

OnDetach/onAttach 片段重新创建片段活动

如何在不下载整个片段的情况下使用媒体源缓冲区和分段 mp4 在特定时间启动视频?

用于创建单个 .m4s 片段的 Java mp4parser — 无效的 moov 框

如何防止在方向更改时重新创建片段寻呼机中的片段?

MPEG-DASH 和分段 mp4

如何避免 FragmentManager 重新创建片段?