关于FFMNPEG修改录制MP4分辨率

Android 专栏收录该内容
2 篇文章 0 订阅

需求

修改录制MP4得分辨率,将原始分辨率720P修改为1080P。原始视频流是720P,录制完成后在手机端和电脑端查看视频属性信息时显示成1080P。

方案

1.录制时修改录制视频流中宽和高参数。
2.录制时修改视频流中SPS信息(修改SPS中分辨率信息)。
3.录制时通过FFMPEG修改视频尺寸(修改成1080P)。

论证

方案一:录制时修改录制视频流中宽和高
这种方式简单,但是只有MP4Info.exe中分辨率会变化。手机和电脑上看视频属性依旧不变。

方案二:录制时修改视频流中SPS信息(修改SPS中分辨率信息)
根据SPS格式,找到对应视频分辨率表示宽和高位。通过下面公式计算需要修改的值。
width=(pic_width_in_mbs_minus1+1)*16;
height=(pic_height_in_map_units_minus1+1)*16;
修改为1080P时,对应的
pic_width_in_mbs_minus1=120
pic_height_in_map_units_minus1=80

再根据哥伦布编码:n个0 + (n+1)位有效位,如:
120=1111000 哥伦布编码后=000000 1111000
将哥伦布编码后的数据替换掉原数据中表示宽和高的位置。只修改头一个SPS。
修改后手机和电脑上看视频属性分辨率都变了,但是VLC软件中看还是不变。而且这种方式会导致头几秒花屏或黑屏,不可行。

方案三:录制时通过FFMPEG修改视频尺寸(修改成1080P)
这种方式通过FFMPEG修改视频流每一帧的尺寸,修改后机和电脑上看视频属性以及VLC中看分辨率都变了。但是对手机性能有要求,性能不好时,录制30s可能只有5s视频。不能完全解决。

结论

1.不同的工具对视频分辨率的解析不一样,有的通过视频流参数信息,有的获取视频第一帧SPS中分辨率信息,有的获取实时SPS中分辨率信息。
2.以上三种方案都不能很好地实现需求,不知道还有什么别的方案,希望有牛人指导一二。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值