mkv 如何批量音画分离? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nbweb
V2EX    问与答

mkv 如何批量音画分离?

  •  
  •   nbweb 2022-01-17 09:21:24 +08:00 2250 次点击
    这是一个创建于 1365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一些老歌,卡拉 ok 里面的,画质不怎么好,800 多首,想把音画分离了只听歌,哪位大吊有办法?

    下载地址: https://hdtime.org/details.php?id=25425&hit=1

    如果没有账号的,留下邮箱,我有 5 个邀请名额。玩过 pt 站的优先。

    如果哪位大神搞定了,可以传个磁力链接上来,分享给大家,不胜感激。

    24 条回复    2022-01-24 09:26:26 +08:00
    ghjexxka
        1
    ghjexxka  
       2022-01-17 09:33:19 +08:00
    mkvtoolnix 应该可以
    gtchan13579
        2
    gtchan13579  
       2022-01-17 09:42:15 +08:00
    base64:Z3RjaGFuQG91dGxvb2suY29t
    nbweb
        3
    nbweb  
    OP
       2022-01-17 09:54:44 +08:00
    @gtchan13579 邀请代码已发送!请查收一下邮件。
    Chihaya0824
        4
    Chihaya0824  
    PRO
       2022-01-17 09:57:29 +08:00   1
    直接 ffmpeg
    ffmpeg -i sample.mkv -q:a 0 -map a sample.mp3
    然后根据你的 os 写个 powershell/bash 脚本直接处理整个目录的文件就可以了,比如 mac
    for i in *.mkv; do ffmpeg -i "$i" -q:a 0 -map a "${i%.*}.mp3"; done
    但是如果想要同时并行处理多个文件可能就需要思考一下了
    ysc3839
        5
    ysc3839  
       2022-01-17 10:10:43 +08:00 via Android
    106npo
        6
    106npo  
       2022-01-17 10:14:09 +08:00 via Android
    @Chihaya0824 并行会把硬盘卡死的
    johnwood
        7
    johnwood  
       2022-01-17 10:20:52 +08:00
    你好 eHl1aXNtZUBvdXRsb29rLmNvbQ==
    Chihaya0824
        8
    Chihaya0824  
    PRO
       2022-01-17 10:23:58 +08:00
    @ysc3839 确实,我的意思是判断比如说同时运行几个比较好(比如说用$(nproc)去判断核数),怎么等待某一个 process 运行完成了然后安排下一个之类的,要花点时间写的意思 2333

    @xmumiffy 会吗_(:з)∠)_,我没试过。。
    106npo
        9
    106npo  
       2022-01-17 10:26:18 +08:00 via Android
    @Chihaya0824 哦 如果有 mp3 编码是好一点 我用的-c:a copy 瓶颈在磁盘读写上
    nbweb
        10
    nbweb  
    OP
       2022-01-17 10:29:56 +08:00
    @johnwood 邀请已发送,请及时注册。
    thefack
        11
    thefack  
       2022-01-17 10:47:46 +08:00
    谢谢,ZG9uZXdAZm94bWFpbC5jb20=
    nbweb
        12
    nbweb  
    OP
       2022-01-17 10:52:57 +08:00
    @Chihaya0824 感谢,测试了一下,成功了,但是只能把音频分离成 mka ,后面还要用 ffmpeg 转换一下吧,把 mka 转成 wav
    nbweb
        13
    nbweb  
    OP
       2022-01-17 10:54:00 +08:00
    @thefack 邀请已发放,请及时注册。
    SCGabriel
        14
    SCGabriel  
       2022-01-17 11:43:59 +08:00
    #########bash 脚本####转换成 wav######
    #!/bin/bash
    IFS_BAK=$IFS
    IFS=$'\n'
    for video in `find . -type f -name "*.mkv"`
    do
    audiooutput="$(echo "$video" | sed "s/.mkv$/.wav/")"
    ffmpeg -i "$video" -map 0:a:0 -acodec pcm_s16le -ac 2 -ar 44100 "$audiooutput"
    done
    IFS=$IFS_BAK

    ################end################
    咱刚刚写的,测试了下可行,bash 脚本
    nbweb
        15
    nbweb  
    OP
       2022-01-17 11:48:35 +08:00
    @SCGabriel 66666 ,有空测试一下,转好了就分享上来给大家。
    SCGabriel
        16
    SCGabriel  
       2022-01-17 12:02:23 +08:00 via Android
    @nbweb 咱 linux 系统测试的,这个脚本是自动查找当前执行脚本的这个文件夹以及子文件夹里所有的 mkv ,然后提取音频转换成 wav 。
    需要提前安装 ffmpeg
    nbweb
        17
    nbweb  
    OP
       2022-01-17 12:27:45 +08:00
    @SCGabriel 在 debian 里测试成功了,感谢。奇怪了,转出来的 wav 比 mvk 还大。
    Howlaind
        18
    Howlaind  
       2022-01-17 12:59:57 +08:00 via Android
    @Chihaya0824 PowerShell 7.0 后的 ForEach-Object 里有个 Parallel 参数,打开就直接并行处理循环了。
    xinyueruhuo
        19
    xinyueruhuo  
       2022-01-17 18:22:25 +08:00
    pcm_s16le 编码器出来的是 pcm 数据,未压缩的,可以转个 mp3
    sapphires
        20
    sapphires  
       2022-01-17 18:34:53 +08:00
    base64:MTUwMDM1MDIwNEBxcS5jb20= 我来试试
    nbweb
        21
    nbweb  
    OP
       2022-01-17 21:13:29 +08:00
    @sapphires 邀请码已发送,请查收。不过我已转码成了 mp3 了。
    SCGabriel
        22
    SCGabriel  
       2022-01-18 08:04:42 +08:00 via Android
    @nbweb 咱看你要转换成 wav ,就设置成了 pcm_s16e 编码器。
    那个脚本你稍微改下倒数第三、第四行就能改输出了,弄 mp3 也行
    nbweb
        23
    nbweb  
    OP
       2022-01-18 08:27:47 +08:00
    @SCGabriel 感谢,昨天已改好了,wav 和 mp3 都转了。感谢!!
    nbweb
        24
    nbweb  
    OP
       2022-01-24 09:26:26 +08:00
    @SCGabriel 兄弟,又有一个 shell 脚本问题求助

    ./aa/你是一个人 - 张三.txt
    ./aa/你真好 - 李四.txt
    ./bb/你是一个人(张三).txt
    ./bb/天空真蓝(张四).txt

    类似上面这种,两个目录里面,有相同名字的文件,保留 bb 里的,删除 aa 里的,这种怎么写脚本查重?我写了一个,运行不了。

    只查重名的,例如我要把./aa/你是一个人 - 张三.txt 这个删掉。一共用 2000 个文件,有几百个这样的重复的名字。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5478 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:32 PVG 16:32 LAX 01:32 JFK 04:32
    Do have faith in what you're doing.
    ubao 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