javacv实现mkv封装实例

javacv实现mkv封装实例

2023年6月27日发(作者:)

javacv实现mkv封装实例

笔者需要将下载好的BDrip(封装格式为mkv)转换为能够被FCP支持的视频格式。

这里“转换”有两种含义

将mkv封装格式文件中的视频(一般为HEVC)和音频(一般为FLAC)解码后重新转码为视频(AVC(即H.264)或HEVC(即H.265))和音频(AAC),导入FCPX使用

将mkv封装格式文件中的视频和音频提取出来,重新进行封装(比如封装格式mp4或mov),使其能够导入FCP

第一种方案可以由常见的视频格式转换软件完成,如macOS平台上的Permute 3就可以很容易的完成这件事情。但是这样就需要CPU与GPU进行运算,花费时间较长(约为原视频时间长度的1/6)

第二种方案至少我没找到合适的软件进行操作。经过将近两天的研究,我采用命令行进行提取和重新封装。这种方式不需要对视频解码转码,因此速度非常快,一个文件(1GB左右)可以在20s内完成转换。

操作

新建如下shell脚本,命名为

# /bin/zsh

# Functions: Convert anime(with mkv format, track 0 hevc,

track 1 flac) to mp4 to make it importable to FCP without

recoding . # On macOS Big Sur 11.0.1. FCP version 10.5.

# You can use `brew install mkvtoolnix ffmpeg mp4box` to

install all tools needed.

# You can use `mkvinfo "$anime"` to get details of mkv

files.

turn=1 # counter, make name of intermidiate files short.

# mkv files in the current directory

for anime in *.mkv; do

echo "START $turn $anime"

mkvextract tracks "$anime" 0:"$turn"".h265"

1:"$turn"".flac"

# Firstly, extract tracks from mkv file.

ffmpeg -i "$turn"".flac" -acodec alac "$turn"".m4a"

# Secondly, for the audio, change FLAC(Free Lossless

Audio Code) to ALAC(Apple Lossless Audio Code), which are both

lossless. FLAC is not well compatible with FCP.

mp4box -add "$turn"".h265" -add "$turn"".m4a"

"${anime%.mkv}"".mp4"

# Then use mp4box to put hevc and alac together in a

mp4 format.

rm "$turn"".h265" "$turn"".flac" "$turn"".m4a"

# Finally, don't forget to delete intermidiate files. # If you want to move files to trash, `brew install

trash` and then change "rm" to "trash".

echo "DONE! ""$turn"

echo "========================"

let turn=$turn+1

done

# mkv files in folders in current directory

for anime in **/*.mkv; do

echo "START $turn $anime"

mkvextract tracks "$anime" 0:"$turn"".h265"

1:"$turn"".flac"

ffmpeg -i "$turn"".flac" -acodec alac "$turn"".m4a"

mp4box -add "$turn"".h265" -add "$turn"".m4a"

"${anime%.mkv}"".mp4"

rm "$turn"".h265" "$turn"".flac" "$turn"".m4a"

echo "DONE! ""$turn"

echo "========================"

let turn=$turn+1

done

该脚本中注释说明了每一步的作用。

将移动到mkv文件所在的文件夹,打开终端cd到当前目录,使用命令chmod a+x 开启执行权限,后使用./执行脚本。可以看到在较短的时间内mkv已经被转换为了mp4

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687824242a48392.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信