首页 > 解决方案 > NodeMediaServer MP4 更改默认视频分辨率 540p

问题描述

我已经设置了一个 nginx RTMP 服务器,目的是将移动设备流式传输的视频以 MP4 格式存储以供以后分析。尽管移动设备以 720p 分辨率流式传输视频,但 NodeMediaServer 始终以 540p 分辨率存储视频。我怎样才能改变这种行为?以下是 NodeMediaServer 配置:

const nodeMediaServerConfig = {
  rtmp: {
    port: 1936,
    chunk_size: 60000,
    gop_cache: true,
    ping: 60,
    ping_timeout: 10,
  },
  http: {
    port: 8000,
    mediaroot: './media',
    allow_origin: '*',
  },
  trans: {
    ffmpeg: '/usr/bin/ffmpeg',
    tasks: [
      {
        app: 'live',
        vcParam: [
          "-c:v",
          "libx264",
          "-vf",
          "scale=720:-1",
          "-b:v",
          "2800k",
          "-bufsize",
          "4200k",
          "-preset",
          "fast",
        ],
        ac: 'aac',
        acParam:["-b:a", "128k", "-ar", 48000],
        mp4: true,
        mp4Flags: '[movflags=faststart]',
      },
    ],
  },
};

非常感谢您对此事的任何帮助。

标签: nginxffmpegvideo-streamingrtmpnode-media-server

解决方案


更改scale=720:-1scale=-2:720

如果您使用scale=720:-11920x1080 的输入,它将被缩放到 720x405。如果您使用scale=-2:7201920x1080 的输入,它将被缩放到 1280x720。

  • 第一个值是宽度
  • 第二个值是高度
  • -2将自动计算适当的值以保留方面(相对于其他值),并将调整该值以使其可被 2 整除(libx264 需要)。

请参阅比例过滤器文档


推荐阅读