尝试用 oculus2 看 mkv 格式的视频,但是没有声音。原因是 oculus TV 没有支持对 AAC 的解码。我尝试用开源软件 FFMpeg 来先做格式转换,但是 AAC(以及一些其他的视频编码)是闭源的,需要从源代码编译。

最终解决方案:

  1. 依照官方指导说明(比如 CompilationGuide/Ubuntu - FFmpeg),安装依赖并完成编译。注意要保证 libfdk-aac 安装并写入configure flags。
  2. 执行如下命令,其中 -b:a 的参数可以根据需要调整,一般可以采用 channels 数量乘以 84k。
ffmpeg -i {name}.mkv -c:v copy -c:a libfdk_aac -b:a 384k  {name}.mp4

提供一个依次转换文件下所有 mkv 文件的 script:

import os
 
log_flags = '-hide_banner -loglevel error'
hardware_flag = '' # cuda is supported
 
for path in os.listdir():
    if path[-4:]=='.mkv':
        name = path[:-4]
        print('Convert:', name)
        os.system(f'ffmpeg {hardware_flag} {log_flags} -i {name}.mkv -c:v copy -c:a libfdk_aac -b:a 384k  {name}.mp4')

题外话:刚刚发现 FFMpeg 参与了 GSoC,有兴趣进行开源开发的朋友可以专注一下。

SponsoringPrograms/GSoC/2022 - FFmpeg