V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nbweb
V2EX  ›  问与答

mkv 如何批量音画分离?

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

    有一些老歌,卡拉 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  
       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
    xmumiffy
        6
    xmumiffy  
       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  
       2022-01-17 10:23:58 +08:00
    @ysc3839 确实,我的意思是判断比如说同时运行几个比较好(比如说用$(nproc)去判断核数),怎么等待某一个 process 运行完成了然后安排下一个之类的,要花点时间写的意思 2333

    @xmumiffy 会吗_(:з)∠)_,我没试过。。
    xmumiffy
        9
    xmumiffy  
       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   ·   实用小工具   ·   1372 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:48 · PVG 07:48 · LAX 15:48 · JFK 18:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.