ffmpeg吧 关注:1,270贴子:4,474
  • 1回复贴,共1

mkv转mp4时怎么将字幕也一起提取?

取消只看楼主收藏回复

如题,mkv里自带有好几个字幕文件,如果我想转码时把mkv里的其中一个字幕也添加进mp4里,应该在指令里怎么写?


IP属地:内蒙古1楼2020-03-02 19:46回复
    问题解决了,我自问自答一下吧。。虽然有挖坟的嫌疑,但是还是发出来,希望能对别人有帮助。
    至于为什么不用别的软件,因为楼主是osx系统的,能用的批量转码工具就比较少。另外楼上付费帮做的着实没必要吧,这么简单的东西。
    下面这个批量转码的文件仅仅是支持linux和mac osx系统的,win系统不支持。作用就是批量把一个目录里的mkv全都转码成外挂字母的mp4。想使用的话把虚线里的代码复制到空文件里运行就好了。
    ---------------------------以下是源文件-----------------------------
    #!/bin/sh
    echo 批量转码工具
    filepath=$(cd "$(dirname "$0")"; pwd)
    cd "$filepath"
    echo 转码视频路径:`pwd`
    echo ---------------------------------------
    for file_a in "$filepath"/*
    do
    if [ "${file_a##*.}" = "mkv" ]; then
    echo ${file_a}
    fi
    done
    echo ---------------------------------------
    echo Press any key to continue...
    read
    for file_a in "$filepath"/*
    do
    if [ "${file_a##*.}" = "mkv" ]; then
    in_filename=`basename "$file_a"`
    out_filename=`basename "$file_a" .mkv`
    echo 开始执行:
    echo ${in_filename}
    echo 输出文件名:
    echo ${out_filename}
    ffmpeg -i "$in_filename" -pix_fmt yuv420p -vf "subtitles='$in_filename'" "$out_filename.mp4"
    fi
    done
    echo By Bread_10:淦 折腾了一下午和一晚上
    echo 可以直接转换成支持QuickTime播放的H.264编码
    ---------------------------------------------------------------
    另外windows没有去研究。如果有类似需求的话,虽然没有批量,但是可以一件一件地用命令行转码。用下面这个命令就可以:
    ffmpeg -i 【in_filename】 -pix_fmt yuv420p -vf subtitles=【in_filename】 【out_filename.mp4】
    【in_filename】里填的文件名,【out_filename.mp4】里自己自定义就好了。
    默认是转换成H.264 high profile编码的。


    IP属地:内蒙古7楼2020-09-05 00:52
    回复