收起左侧

相册播放小米10竖拍的视频只有声音。

1
回复
214
查看
[ 复制链接 ]

1

主题

0

回帖

0

牛值

江湖小虾

2026-6-22 09:31:44 显示全部楼层 阅读模式

提交问题前,请尽量一次性提供完整信息。
信息不完整、无明确复现路径、缺少关键日志的帖子,将不予处理并直接关闭;请补充完整信息后重新发帖。
请先按下方格式填写;除以下基础信息外,也请根据你遇到的问题补充截图、录屏、报错提示、复现步骤等信息,便于更快定位和处理。
应用中心第三方开发者上架应用问题可以联系对应开发者反馈。

系统版本:X86

设备环境:物理机、局域网/公网 fnOS 1.1.3107
2026-6-229-21-20.png

BUG现象:小米手机的视频在飞牛相册上播放,横拍格式的正常,竖拍的视频只有声音,问Deepseek说是旋转故障,给出了临时方案,希望飞牛直接解决这个小问题。

  • 旋转(Rotation):第一个为 Rotation: 0,第二个为 Rotation: 90。这是一个巨大的危险信号。
  • 矩阵结构(MatrixStructure):第一个为 1 0 0 0 1 0 0 0 1(单位矩阵,无变换)。第二个为 0 1 0 -1 0 0 0 0 1(顺时针旋转 90 度的变换矩阵)。)

出现频率:必现

联系方式:13702521260

你提供的这两个元数据对比非常关键,问题根源已经锁定

第二个视频(有声音无画面)是因为它是竖屏录制(旋转90度)的视频,而飞牛相册的播放器/转码内核在处理这个“旋转元数据”时存在兼容性 Bug,导致视频解码渲染失败(丢帧),只保留了音频流。

以下是详细的技术诊断和解决方案:

1. 核心差异对比(元数据“实锤”)

元数据字段 第一个(正常播放) 第二个(只有声音) 影响分析
Rotation 0 90 告诉播放器画面需要顺时针旋转90度显示
MatrixStructure 1 0 0 0 1 0 0 0 1(单位矩阵) 0 1 0 -1 0 0 0 0 1(旋转变换矩阵) 底层几何变换指令,强行将横向像素映射为纵向
实际编码尺寸 1920x1080(横) 1920x1080(横) 关键点:小米10录制竖屏视频时,并未物理重编码像素,而是依然按横屏编码,仅靠元数据(Rotation/Matrix)让播放器旋转显示。

故障原理:飞牛相册(基于FFmpeg)在解码此视频时,软件解码器或硬件加速器(如VAAPI/V4L2)错误地读取了旋转矩阵,导致渲染管线输出的画面尺寸映射失败(例如试图将1920宽渲染到1080宽的缓冲区),视频渲染层直接崩溃或跳过,而音频轨道独立解码不受影响,因此只有声音。


2. 解决方案(按推荐优先级)

方案一:物理转码修复(彻底根治,推荐)

使用 FFmpeg 将旋转元数据物理写入像素,生成一个“真正”的竖屏视频(1080x1920),这样任何播放器都无需处理旋转标志。

在命令行执行(SSH登录飞牛NAS或本地电脑):

ffmpeg -i VID_20260621_182248.mp4 -vf "transpose=1" -c:a copy -metadata:s:v:0 rotate=0 修复版_VID_20260621_182248.mp4
  • transpose=1:顺时针旋转90度(如果画面倒过来了,试试改为 2 逆时针)。
  • -c:a copy:直接复制音频流,无损且极快。
  • -metadata:s:v:0 rotate=0:强行清除残留的旋转元数据。

方案二:飞牛相册后台调试(临时规避)

如果不想转码,尝试在飞牛相册的 系统设置 -> 转码设置 中:

  1. 关闭“硬件加速转码”(强制使用软解)。部分硬解驱动(尤其是Intel QSV或RK3588)对旋转矩阵支持较差,软解通常能正常解析。
  2. 如果开启了“智能封面/缩略图”生成,尝试关闭,因为缩略图生成失败有时会连带影响主视频渲染。

方案三:批量批量修复(针对大量故障视频)

你提到“故障视频挺多的”,可以在NAS上写一个简单的脚本,批量处理所有带90度旋转的视频。

飞牛NAS(Debian系)一键批量修复脚本示例(放在视频目录下执行):

# 查找所有 Rotation 为 90 的视频并修复(会生成新文件,注意磁盘空间)
for f in VID_*.mp4; do
    if exiftool -Rotation "$f" | grep -q "90"; then
        ffmpeg -i "$f" -vf "transpose=1" -c:a copy -metadata:s:v:0 rotate=0 "fixed_${f}"
    fi
done

3. 预防建议

小米10相机默认开启了**“根据陀螺仪自动旋转”**,导致竖拍视频自动打上旋转标签。建议:

  • 在小米相机 设置 -> 更多设置 中,关闭“自动旋转”或“视频旋转信息”选项(不同MIUI版本叫法略有不同),这样竖拍视频会直接编码为 1080x1920 物理尺寸,飞牛相册将完美播放。

4. 向飞牛官方反馈

你可以将这两个元数据日志和问题描述提交给飞牛官方(论坛或工单),明确指向 MatrixStructure 旋转矩阵兼容性。如果是Web端播放,可能是H5 标签的 transform 样式未正确处理;如果是APP端,可能是底层ExoPlayer/IJKPlayer未启用 setRotateDegrees 回调。这是典型的播放器层适配疏漏。

如果不想折腾命令行,最简单的治标办法就是拍摄时保持手机横屏(不触发旋转元数据),这样第一个正常播放的视频就是证明。希望这些能帮你批量解决这批视频!如果执行FFmpeg命令时遇到报错,随时告诉我具体报错内容。

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

409

主题

1万

回帖

0

牛值

管理员

fnOS1.0上线纪念勋章

2026-6-24 18:53:00 显示全部楼层

麻烦提供一下异常的视频文件我们排查看看

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则