you-get 竖屏视频旋转修复:一键拉正歪斜的视频方向
you-get 竖屏视频旋转修复:一键拉正歪斜的视频方向
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
手机拍的竖屏视频下回电脑上,人直接躺平了——画面横倒,怎么拖都歪着。这是典型的视频方向错误:方向信息丢了,播放器只能按原始帧展示。你不需要手动调播放器,you-get 搭配 FFmpeg 就能完成竖屏视频旋转修复,画面转正,声音和画质基本不损失。
一条命令快速上手 🔧
打开终端,对任意一个躺倒的视频文件运行下面这条命令:
ffmpeg -i lying.mp4 -vf transpose=1 -c:a copy fixed.mp4-vf transpose=1把画面顺时针转 90°,-c:a copy让音频原样带过去、不重新压缩。命令跑完,打开fixed.mp4看一眼,方向正常就收工。
原理速览:旋转标签是怎么丢的
竖屏视频的底帧大多是横着存的,文件里带一个 90°/270° 的旋转标签(即元数据,相当于贴在文件上的"播放时请转正"便条),播放器靠它摆正画面。部分网站转码时把这张便条撕掉了,播放器只好按原始帧横着放。修复的本质就是本地补一次旋转。you-get 下载后由 FFmpeg 接管处理链,读流、合并的底层逻辑都在 src/you_get/processor/ffmpeg.py 第 240 行的ffmpeg_download_stream里。
三种场景的转正姿势 🎯
边下边修(推荐)
适用于刚发现某条竖屏视频要保存、想一步拿到方向正确的文件:
you-get "视频页面URL" ffmpeg -i 已下载的视频.mp4 -vf transpose=1 -c:a copy fixed.mp4先让 you-get 下载,再对文件补转,两步都是本地命令,互不干扰。
给已下好的文件补救
适用于视频早已躺在本地、播放才发现歪了。先用 ffprobe 确认旋转值(ffprobe 是 FFmpeg 自带的文件信息查看工具):
ffprobe -v error -show_entries stream_tags=rotate -of default=noprint_wrappers=1:nokey=1 lying.mp4输出90对应transpose=1,输出270对应transpose=2:
ffmpeg -i lying.mp4 -vf transpose=2 -c:a copy fixed.mp4transpose 参数速查:
| 取值 | 效果 |
|---|---|
| 0 | 顺时针 90° 再垂直翻转 |
| 1 | 顺时针 90° |
| 2 | 逆时针 90° |
| 3 | 逆时针 90° 再垂直翻转 |
整批文件一次搞定
适用于下载目录里有一堆方向不对的文件,批量循环处理:
for f in *.mp4; do ffmpeg -i "$f" -vf transpose=1 -c:a copy "fixed_$f" done想按真实角度分支,见下一节的自动检测脚本。
自动检测旋转标签 🤖
不想逐个用 ffprobe 肉眼核对的话,把读取和分支写成一个 bash 脚本:
#!/bin/bash # fix-rotate.sh 用法:bash fix-rotate.sh 视频文件 rotate=$(ffprobe -v error -show_entries stream_tags=rotate -of default=noprint_wrappers=1:nokey=1 "$1") if [ "$rotate" = "90" ]; then ffmpeg -i "$1" -vf transpose=1 -c:a copy "fixed_$1" elif [ "$rotate" = "270" ]; then ffmpeg -i "$1" -vf transpose=2 -c:a copy "fixed_$1" else echo "no rotate tag, skip $1" fi把stream_tags=rotate换成其他标签名,同一套分支结构就能复用到别的元数据字段上。
踩坑排查 ⚠️
- 现象:转完的文件没有声音。原因:输出端漏了音频处理方式,音频被默认链路处理掉了。解法:命令里固定带上
-c:a copy;you-get 合并视频分片时的同类做法见 src/you_get/processor/ffmpeg.py 第 261 行。 - 现象:执行报错说找不到 ffmpeg,但明明装过。原因:安装目录不在 PATH 里,探测直接失败。解法:先跑
ffmpeg -version确认能输出版本号,不行就重新安装;you-get 的版本探测逻辑在 src/you_get/processor/ffmpeg.py 第 19 行的get_usable_ffmpeg,装好后重启终端再试。 - 现象:转完的画面比原来糊。原因:旋转必须重压视频流,默认编码档位在老片子上会掉质量。解法:加
-crf 23(CRF 是 FFmpeg 的画质档位,数字越小越接近原片):
ffmpeg -i lying.mp4 -vf transpose=1 -crf 23 -c:a copy fixed.mp4下载交给 you-get,转正交给 FFmpeg,一条-vf transpose让歪掉的竖屏视频回到正位。现在就去终端里转平你第一个躺倒的视频吧。
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
