三步掰正视频方向:you-get 配 FFmpeg 修复竖屏旋转问题的实战指南
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
下载好的竖屏视频一播放,人是横躺着、画面倒扣着的——转着手机也救不回来,这大概是视频下载后最恼火的一幕。问题的根源不在播放器:文件本身没坏,只是丢了"该怎么摆"的提示。这篇文章带你用 you-get 配合 FFmpeg 完整走一遍修复流程,读完后你不需要再求人,自己就能把躺倒的竖屏视频掰正。
机制速览:竖屏视频为什么会"躺倒"
手机拍竖屏视频时,编码环节多半还是按横屏存的,真正的方向信息藏在一行元数据(metadata)里,通常写着一个 90° 或 270° 的旋转值,播放器读到它就自动转正画面。一旦网站转码时把这行元数据弄丢,或者播放器干脆不认它,视频就永远躺在那儿了。所以修复的本质,就是用 FFmpeg 把画面实际转过去,让像素本身摆正。you-get 的媒体处理就落在 src/you_get/processor/ffmpeg.py 这个模块里,下面所有操作都围着它转。
开工前体检:FFmpeg 到底装没装好
先跑一行命令:
ffmpeg -version能打印出版本号就算通过;装不上就用包管理器装(Linux 发行版用apt install ffmpeg这类命令,macOS 用 Homebrew)。
装好还不够,得确认 you-get 认得它。you-get 启动时会拿ffmpeg -version试一次,解析不出版本号就当没装(老版本还兼容 avconv),这套检测逻辑在 get_usable_ffmpeg 里。如果你命令行能跑通、you-get 却报缺 FFmpeg,多半是 PATH 没配对。
三条修复路线
边下载边修:一步到位(推荐)
下载时就加个旋转参数,省得下完再回头处理。transpose 是 FFmpeg 的旋转滤镜,四个取值对应四种转法:
transpose=1:顺时针转 90°transpose=2:逆时针转 90°transpose=0:顺时针 90° + 垂直翻转transpose=3:逆时针 90° + 垂直翻转
拿不准就先用 1 试,转反了换 2:
you-get --no-merge -o "ffmpeg -i %(input)s -vf transpose=1 -c:a copy %(output)s" "视频URL"--no-merge表示不合并分片,自定义 FFmpeg 命令原样执行,-c:a copy则保证音轨原样复制、不参与重编码。
已下好的文件,事后补救
文件已经在手里了,就单独处理这一个。原理和上面完全一样,只是输入换成本地文件:
ffmpeg -i input.mp4 -vf transpose=1 -c:a copy output.mp4这一行就是 you-get 处理器模块底层用的同一套工具链,你不需要绕回下载流程。
一堆文件,一个脚本批掉
几十个文件都躺倒?别一个一个敲。把要修的文件丢进同一个目录,跑这个循环:
for f in *.mp4; do ffmpeg -i "$f" -vf transpose=1 -c:a copy "fixed_$f" done修完的文件都带fixed_前缀,和原文件并排放着,转错了也不伤原件,核对过再决定留哪个。
让机器自己判断:ffprobe 读出旋转角
方向到底是 90° 还是 270°,肉眼容易看岔。ffprobe 是 FFmpeg 自带的"只读探针",专门看媒体元数据,用它一行就能把角度掏出来:
ffprobe -v error -show_entries stream_tags=rotate -of default=noprint_wrappers=1:nokey=1 input.mp4输出是90还是270,对应上面 transpose 的 1 还是 2。把"读角度 + 转对应方向"串成脚本,批量处理时就能全自动,不用人工逐个核对。you-get 里读媒体时长走的 ffprobe_get_media_duration 也是同一种调用方式,想扩展自动检测功能,照着改就行。
排错速查表
| 现象 | 原因 | 处理 |
|---|---|---|
| 修完的视频没声音 | 视频重编码时音轨没被原样保留 | 命令里加-c:a copy,音轨直接复制不重编 |
| 报 "FFmpeg not installed" 但明明装了 | you-get 按ffmpeg -version的输出解析版本,PATH 不对或输出异常都会失败 | 先在终端单独跑ffmpeg -version确认输出正常,再检查环境变量 |
| 旋转后画质明显下降 | transpose 属于视频滤镜,必须重编码,默认参数偏保守 | 加-crf 23控制质量;crf 是压缩质量参数,数值越低画质越好、体积越大 |
收尾
竖屏视频躺倒,坏的不是文件,是那一行方向元数据;you-get 负责把内容弄到手,FFmpeg 负责把像素摆正,两者拼起来,旋转、合并、转格式这类后处理都能自己搞定。下一步很简单:挑一个手头方向不对的视频,先跑一遍上面的ffprobe看角度,再用对应的 transpose 值修一次——五分钟就能确认整条链路是通的。
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考