3 步完成 you-get 竖屏视频旋转修复
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
用 you-get 下载的竖屏视频在播放器里横躺,多半是方向元数据丢了。you-get 负责把视频拿下来,FFmpeg 的 transpose(画布旋转滤镜)负责把方向掰正,这套 you-get 竖屏视频旋转修复 组合三步就能跑通。
先搞懂原因:方向写在元数据里,不在画面里
竖屏视频的像素存储往往仍是横屏的,元数据里记录了一个旋转参数(90 或 270),播放器靠它来转正显示。网站转码时这条方向信息容易丢失,或个别播放器干脆忽略,于是画面横躺。对策是把旋转直接烧进像素:用 transpose 滤镜重新编码一次,方向从此固定。
三步跑通旋转修正:下载、查角度、转回来
- 确认 FFmpeg 已安装且在 PATH 里
- 用 you-get 把视频下载到本地
- 用 ffprobe 查角度,再用 ffmpeg transpose 转回来
第 1 步:确认 FFmpeg 在场且被识别
先跑这条命令看下输出:
# 能输出版本号即正常 ffmpeg -version未安装的话按平台处理:
| 平台 | 安装方式 |
|---|---|
| Ubuntu/Debian | sudo apt install ffmpeg |
| macOS | brew install ffmpeg |
| Windows | 从 FFmpeg 官网下载并加入 PATH |
⚠️ 如果报 "FFmpeg not installed",多半是路径没进 PATH:启动时 you-get 会依次尝试 ffmpeg 与 avconv 并校验版本号,两个都失败就判定不可用。这段检测与流处理逻辑集中在 src/you_get/processor/ffmpeg.py(FFmpeg 调用与检测),检查环境变量即可。
第 2 步:用 you-get 把视频拿下来
# -o 指定保存目录,URL 换成你要下载的视频页面 you-get -o ./downloads "https://example.com/video-page"you-get 先从页面解析出真实地址,流媒体站点则直接交给 FFmpeg 落盘:入口在 src/you_get/common.py(下载入口),随后调用ffmpeg_download_stream拼装命令,默认带-c copy不重编码。所以下来的文件是干净的,不影响下一步修方向。
⚠️-p可以把流直接喂给播放器在线看,但那条路不落文件,后面的旋转修复没有操作对象;要修方向,先落盘是前提。
第 3 步:查角度,再用一条 ffmpeg 命令转回来
先读文件里写的旋转标签:
# 输出 90 或 270 说明方向被元数据记录 ffprobe -v error -show_entries stream_tags=rotate -of default=noprint_wrappers=1:nokey=1 input.mp4输出 90 就配 transpose=1,输出 270 就配 transpose=2。以顺时针 90° 为例:
# 顺时针转 90°;-c:a copy 音频直接复制,避免无声音 ffmpeg -i input.mp4 -vf transpose=1 -c:a copy -y output.mp4执行完,output.mp4 的像素本身就是正的了,任何播放器播放都不再依赖元数据。
⚠️ transpose 属于视频滤镜,必须重编码视频流,担心画质可在输出文件名前加-crf 23控制损耗。-c:a copy务必保留,漏掉会让音频跟着重编码,部分格式直接没声音或报错。
FFmpeg transpose 参数:四个取值速查
| 取值 | 效果 | 什么时候用 |
|---|---|---|
| 0 | 顺时针 90° + 垂直翻转 | 转完 90° 后发现上下颠倒 |
| 1 | 顺时针 90° | rotate 标签为 90,最常见 |
| 2 | 逆时针 90° | rotate 标签为 270 |
| 3 | 逆时针 90° + 垂直翻转 | 转完 270° 后发现上下颠倒 |
💡 不用背:先跑一遍打开看看,方向不对就换相邻取值重跑,输出是另一个文件名,原文件不受影响。
用 ffprobe 查看旋转角度并批量修正
多个文件方向不对时按同一套循环处理:先对每个文件跑第 3 步的 ffprobe 命令读 rotate 值,90 配 transpose=1、270 配 transpose=2,再逐个执行旋转命令。you-get 内置的 ffprobe 调用只用来读取播放时长之类的信息,不会改写旋转元数据,所以"查角度—转回来"这段交给 ffmpeg 侧完成,you-get 只负责把下载这一环扛下来。
一条 ffprobe 读角度,一条 ffmpeg 转回来,这条 you-get 竖屏视频旋转修复 的主线到此跑完,方向从此归位,无需再手动调播放器。
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考