nginx - 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]',
},
],
},
};
非常感谢您对此事的任何帮助。
解决方案
更改scale=720:-1
为scale=-2:720
如果您使用scale=720:-1
1920x1080 的输入,它将被缩放到 720x405。如果您使用scale=-2:720
1920x1080 的输入,它将被缩放到 1280x720。
- 第一个值是宽度
- 第二个值是高度
-2
将自动计算适当的值以保留方面(相对于其他值),并将调整该值以使其可被 2 整除(libx264 需要)。
请参阅比例过滤器文档。