mkv转mp4时怎么将字幕也一起提取?
ffmpeg吧
全部回复
仅看楼主
level 1
面包-10 楼主
如题,mkv里自带有好几个字幕文件,如果我想转码时把mkv里的其中一个字幕也添加进mp4里,应该在指令里怎么写?
2020年03月02日 11点03分 1
level 3
直接用shanencoer多简单,要哪个字幕和音轨都可以选择!不用输命令哪么复杂
2020年03月02日 17点03分 2
level 1
我可以帮忙,10元
2020年03月03日 23点03分 3
level 2
用mkv2mp4
2020年03月16日 17点03分 5
level 1
您好,我可以有偿提供帮助。
2020年03月18日 12点03分 6
level 1
面包-10 楼主
问题解决了,我自问自答一下吧。。虽然有挖坟的嫌疑,但是还是发出来,希望能对别人有帮助。
至于为什么不用别的软件,因为楼主是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编码的。
2020年09月04日 16点09分 7
level 1
感谢楼主,小白只是想把MKV和字幕文件合并转为MP4,折腾了一圈,看这个帖子成功的
老手们会觉得太容易了,但是完全没接触过的人真的不知道咋上手
最后用了上述命令,比如我自己的bat文件里写了:
ffmpeg -i "519.mkv" -pix_fmt yuv420p -vf subtitles="519.ass" "519.mp4"
运行后就开始正常转换了
2023年04月25日 05点04分 8
顺便补刀下PGS字幕的代码如: -lavfi "crop=1920:1036:0:22[video],[0:5]minterpolate='fps=23.98':mi_mode=dup,scale=-2:1036[sub],[video][sub]overlay=39:0[fin]"
2023年04月28日 14点04分
1