使用ffmpeg从h264中删除帧速率/持续时间元数据



我需要一个没有帧速率和持续时间元数据的H264编码视频,因为这些元数据是在外部存储和计算的。

这就是我使用的:

ffmpeg -r 30 -f image2 -i xyz -c:v libx264 -f h264 1579516080101.h264

这是mediainfo返回的内容:

General
Complete name                            : 1579516080101.h264
Format                                   : AVC
Format/Info                              : Advanced Video Codec
File size                                : 866 KiB
Duration                                 : 1 s 0 ms
Overall bit rate                         : 7 096 kb/s
Video
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4
Format settings                          : CABAC / 4 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 4 frames
Duration                                 : 1 s 0 ms
Bit rate                                 : 7 096 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 30.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.114
Stream size                              : 866 KiB (100%)

如何删除这些条目?我尝试过-map_metadata -1,并且没有设置帧速率,但结果只是使用了默认的帧速率25。

感谢

我可以通过修改ffmpeg源代码并重新编译来解决这个问题

需要注释掉的相关位位于:FFmpeg/libavcodec/h264_metadata_bsf.c第171行以后:

if (ctx->tick_rate.num && ctx->tick_rate.den) {
int num, den;
av_reduce(&num, &den, ctx->tick_rate.num, ctx->tick_rate.den,
UINT32_MAX > INT_MAX ? UINT32_MAX : INT_MAX);
sps->vui.time_scale        = num;
sps->vui.num_units_in_tick = den;
sps->vui.timing_info_present_flag = 1;
need_vui = 1;
}

相关内容

  • 没有找到相关文章

最新更新