windows 下,如何无损旋转 mp4 视频? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mfsw
V2EX    Windows

windows 下,如何无损旋转 mp4 视频?

  •  
  •   mfsw 2023-12-30 00:05:43 +08:00 2328 次点击
    这是一个创建于 719 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的视频是佳能相机拍的 MP4 文件。拍的时候是竖版。但是 POTPLAYER 播放的时候是以横版来播放的。 我想把这些横版视频,旋转 90 度,变成拍摄时候的视角。 请问,是否可以利用 ffmpeg,来批量的旋转一下? 如果 ffmpeg 不能实现,是否有其他的软件能快捷的实现批量无损旋转?

    16 条回复    2023-12-31 22:22:02 +08:00
    mfsw
        1
    mfsw  
    OP
       2023-12-30 00:07:03 +08:00
    跟 chatgpt 斗智斗勇了好久,他都没能提供给我一个可用的 ffmpeg 的命令。诸位大佬请发威吧。
    qwertyegg
        2
    qwertyegg  
       2023-12-30 00:16:42 +08:00
    ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

    transpose=1 或者=2
    mfsw
        3
    mfsw  
    OP
       2023-12-30 00:26:08 +08:00
    @qwertyegg 感谢大佬指教。实测不行,跟 gpt 的答案差不多,视频被旋转了,但是容量变得很小。只有原来的二十分之一。
    qwertyegg
        4
    qwertyegg  
       2023-12-30 00:35:58 +08:00
    ffmpeg -display_rotation:v:0 90 -i input.mp4 -c copy output.mp4

    这样 stream copy/remux 出来的视频,不重新编码
    AoEiuV020JP
        5
    AoEiuV020JP  
       2023-12-30 00:41:54 +08:00 via Android
    %bin%ffmpeg -i "%name%%ext%" -c copy -metadata:s:v:0 rotate=%rotate% "%name%-%rotate%%ext%"
    mfsw
        6
    mfsw  
    OP
       2023-12-30 00:48:12 +08:00
    大佬威武,在大佬面前,gpt 就是个弱智。
    再请教下,我要把您的这行代码,修改为一个批处理脚本。
    我要把指定目录下的所有 mp4 文件,都旋转 90 度,并替换删除原始文件,我该怎么修改? 我希望这个批处理,能提供一个输入选项,让我可以输入指定的目录。
    感谢大佬搭救。
    mfsw
        7
    mfsw  
    OP
       2023-12-30 00:49:33 +08:00
    @qwertyegg 6 楼内容是回复您的。忘记引用了。
    mfsw
        8
    mfsw  
    OP
       2023-12-30 00:50:12 +08:00
    @AoEiuV020JP 感谢指教。4 楼大佬的方法好用。就不尝试其他方案了。辛苦您啦。
    qwertyegg
        9
    qwertyegg  
       2023-12-30 00:54:46 +08:00
    用 ahk(v2)可以参考如下

    targetPattern := concat3("c:\captures\", prefix, "*.mp4")
    udp_profiles := []
    loop files targetPattern
    udp_profiles.Push(A_LoopFileName)
    }
    mfsw
        10
    mfsw  
    OP
       2023-12-30 01:14:00 +08:00
    @qwertyegg 没看懂。这是撒东东?您提供的代码已经很完美了。我只需要把他变成批处理即可。
    qwertyegg
        11
    qwertyegg  
       2023-12-30 02:44:56 +08:00
    下面这段 ahk 代码,"把 ffmpeg 加到 path 里面"和"mp4 文件不要带空格“两个要求满足的时候应该就可以批量转了

    #Requires AutoHotkey v2.0
    #SingleInstance Force

    ; Get list of files matching a prefix under a folder.
    ; Set prefix an empty string "" if we want all, otherwise add prefix to limit selection
    prefix := ""


    ;=============== init script ===============
    targetPattern := concat3("D:\captures\", prefix, "*.mp4")
    video_files := []
    loop files targetPattern
    video_files.Push(A_LoopFileName)
    lastIndex := video_files.Length

    ;;;;;;;;;;; F2 to cycle through rotation jobs
    #MaxThreadsPerHotkey 1
    F2::{
    static counter := 1
    while (counter <= lastIndex){
    ffmpeg_rotate(video_files[counter])
    counter := counter + 1
    }
    ; MsgBox "That was the last, exit."
    ExitApp
    }


    ffmpeg_rotate(video_file){
    SetWorkingDir "D:\captures"
    Run concat4("ffmpeg -display_rotation:v:0 90 -i ", video_file, " -c copy rotated_", video_file)
    }

    concat3(x, y, z) {
    Return x y z
    }

    concat4(w, x, y, z) {
    Return w x y z
    }
    mfsw
        12
    mfsw  
    OP
       2023-12-30 03:58:10 +08:00
    @qwertyegg 感谢大佬热心科普。
    能不能帮忙以批处理的方式,实现下?万分感谢。
    miaotaizi
        13
    miaotaizi  
       2023-12-30 11:46:42 +08:00
    把屏幕竖起来?
    forgottencoast
        14
    forgottencoast  
       2023-12-30 22:06:28 +08:00
    @mfsw
    批处理这个问题 chatGPT 保证不弱智,你问它就行了。
    mfsw
        15
    mfsw  
    OP
       2023-12-30 23:08:29 +08:00
    @forgottencoast 3.5 ruozhi ,4.0 可能不 ruozhi 。但是我现在没有 4.0 的账号了。
    1014982466
        16
    1014982466  
       2023-12-31 22:22:02 +08:00
    LOSSLESSCUT
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5192 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:04 PVG 15:04 LAX 23:04 JFK 02:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86