需求

系统:macOS Big Sur 11.0.1
Permute 3:3.5.9 (build 2317)
FCPX:10.5

笔者需要将下载好的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脚本,命名为convert.sh
最新脚本见https://github.com/Yang-Xijie/mkv2mp4_fcp

# /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; doecho "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; doecho "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

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

注意

  • 其中将FLAC用ffmpeg解码重编码为ALAC是因为笔者发现FCP不能很好的兼容FLAC。
  • 该方法仅仅适用于mkv的tracks中0通道为HEVC且1通道为FLAC的BDrip(一般mkv都是这样)。如果格式不符,那么在使用时可能需要对代码进行修改。
  • 对于剪辑来说,AVC和HEVC都不是很好的编码,只有像Apple Prores之类的逐帧编码才能让剪辑最高效。对比AVC和HEVC,剪辑HEVC对计算机的算力要求更高。如果你需要对素材进行复杂的剪辑,可以在FCP导入素材时对素材进行转码。

macOS | 提取BDrip(封装格式为mkv)中视频与音频并重新封装为mp4相关推荐

  1. html5 音频事件,HTML5中视频和音频核心事件的相关研究

    摘 要: 本文通过对HTML 5中视频和音频重要事件的研究,总结出HTML 5中重要事件在什么时候使用其中重要的相关属性,并以实例利用事件相关属性进行设置,给读者以相应启发. 关键字:HTML 5:视 ...

  2. php怎样查看视频播放的进度条,H5中视频与音频标签和进度条如何使用

    这次给大家带来H5中视频与音频标签和进度条如何使用,H5中视频与音频标签和进度条使用的注意事项有哪些,下面就是实战案例,一起来看一下. 最近项目中使用Html5的video和audio标签来在线播放视 ...

  3. python 可以 从视频中 直接剪辑音频出来(亲测MP4)

    import os from moviepy.video.io.VideoFileClip import VideoFileClip from pydub import AudioSegmentdef ...

  4. 在直播软件开发过程中,常用的几种视频封装格式

    1.AVI格式 AVI(Audio Video Interleaved).此格式的中文译名为音频视频交错格式,这种视频格式的优点是图像质量好,无损AVI可以保存alpha通道.缺点也不少,体积过于庞大 ...

  5. 常见音视频的编码方式和封装格式

    视频格式标准http://jingyan.baidu.com/article/fc07f98905797d12ffe519d6.html 视频编码标准只有 h.26x和mpegx.大多听书格式都是对他 ...

  6. FFmpeg之视频封装格式、流媒体协议、视频编解码协议和传输流格式、时间戳和时间基、视频像素数据

    通用视频分析工具:Mediainfo.Elecard StreamEye(视频编码分析工具); 视频封装格式: ********************MP4****************** MP ...

  7. 音视频封装格式、编码格式

    音视频封装格式.编码格式 概述 常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid ...

  8. (一) 音视频基础_Mpeg4封装格式音视频编码格式_解封装解码_像素格式_PCM音频-采样率-通道-planar_MP4标准和h264格式的NAL的GOP分析

    封装:从文件中把音视频读出来 解码:将音视频解压出来 重采样:将音视频转换成声卡显卡支持的格式,视频需要做像素格式的转换MPEG(或叫MPEG-4)是一套用于音频﹑视频信息压缩的编码标准. MPEG- ...

  9. 【视频基础】封装格式和编码格式

    参考文章:视频基础知识-封装格式和编码格式 封装格式:avi.flv.MP4.rmvb.mkv之类 编码格式:h.264.h.265.DivX之类 码率:(kbps)=文件大小(KB) * 8 / 时 ...

  10. 视音频编解码学习工程:FLV封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

最新文章

  1. 天哪!我的十一假期被AI操控了
  2. grub legacy
  3. python中dict的fromkeys用法教程
  4. SQL Server 中的事务和锁(三)-Range S-U,X-X 以及死锁
  5. 地表离太空有多远_我国的子午工程都有哪些空间探测仪器?丨Calling太空
  6. 使用Python的twisted和socket模块实现端口的负载分发
  7. OpenCV--fstream格式化读取坐标数据存为vector
  8. CentOS/Ubuntu 下 MySQL 的安装
  9. Java匹马行天下之学编程的起点——编程常识知多少
  10. springmvc请求返回一个字符_response 返回 带双引号 的字符串解决办法 springmvc
  11. python中编完类后到实例编写_Python 和 JavaScript 的区别是什么?
  12. 「07」回归的诱惑:深入浅出逻辑回归
  13. (完美)华为畅玩7A AUM-AL00的Usb调试模式在哪里打开的步骤
  14. 很多人问中国网络安全行业怎么样?这篇文看完让你彻底了解中国网络安全行业的全景
  15. 分享一下我制作的Bat批处理程序-PC Tools(含源码)
  16. 雷电模拟器脚本编写_你有好的引流话术, 还需配上脚本这样的全自动引流工具, 才是高效的引流方法...
  17. 基于Qt Creator的OpenCV人脸识别签到项目系列教程(一) - 人脸信息采集
  18. 存储资源盘活系统,“盘活”物联网架构难题
  19. CTE表--SQLSERVER2005看得见的性能提升
  20. Linux驱动:内核的中断机制之二--request_threaded_irq函数使用

热门文章

  1. 宿舍物联网门锁系统之个人小程序注册
  2. 微信公众平台开发文档
  3. MAX25————用vray还原模型在Substance Painter的光照以及材质效果
  4. C++ - Opencv模板匹配与块匹配
  5. 淘宝618超级喵运会怎么玩?超级喵运会整体活动攻略来了
  6. Ipython安装错误集锦
  7. poj 1838 Banana
  8. [Android-ARCore开发]ARCore从入门到放弃1-Demo上手
  9. 基于蚁群算法的多配送中心的车辆调度问题的研究(Matlab代码实现)
  10. Swiper轮播图片并播放背景音乐