当您在osx上挂载任何内容时,它会显示在/ Volumes/mountname下
有没有办法,使用命令行或C/C++将卷识别为CD/DVD ROM?
我目前的最佳想法是这样的.
df | grep mountname
Run Code Online (Sandbox Code Playgroud)
获取/ dev/diskNsM路径
然后
drutil | grep /dev/diskN
Run Code Online (Sandbox Code Playgroud)
查看路径安装设备是否是刻录机.
这有效,但我担心CD/DVD不是刻录机的情况.它还会出现在drutil的输出中吗?Mac是否配备了非刻录CD/DVD驱动器?
此外,我更喜欢使用C,C++或目标C来做到这一点.
我已经用过
const char *tmp = '/Volumes/mysterydrive';
statfs(tmp, &m);
if(m.f_flags & MNT_RDONLY)
{
read_only = true;
}
Run Code Online (Sandbox Code Playgroud)
确定卷是否只读,但我无法看到这个或任何相关的调用是否可以区分CD/DVD和只读安装的卷.
它只需要适用于OSX 10.5及更新版本.
有任何想法吗?
编辑:
运用
diskutil info /Volumes/mysterydrive
Run Code Online (Sandbox Code Playgroud)
如果是CD/DVD,我得到以下输出
Optical Drive Type: CD-ROM, CD-R, CD-RW, DVD-ROM, DVD-R, DVD-R DL, DVD-RW, DVD+R, DVD+R DL, DVD+RW
Optical Media Type: DVD-R
Optical Media Erasable: No
Run Code Online (Sandbox Code Playgroud)
这就是我所需要的!
我将考虑使用IOKit稍后以编程方式执行此操作,但这似乎是完成此操作的最快方法.
我无法将.HEIC图像转换为jpeg..HEIC文件使用运行最新ios公共测试版的iphone拍摄的图像.我正在使用诺基亚提供的库解析文件并从.HEIC文件中提取图像切片,将它们转换为jpeg并使用ffmpeg/montage将它们粘合在一起.
有太多的代码将它全部粘贴到这个问题中所以我将所有这些都放在这个github仓库中.它非常自我解释,只需几个依赖项就可以运行.它们在repo的自述文件中有解释.这一切都是在osx btw上完成的.
.HEIC文件包含8x6网格图像(图块),如果将它们放在一起,您将获得完整的图像.简单地把我输入的任何图像第7个图块损坏如下所示,我真的不明白为什么.我已经向诺基亚提出了一个问题,但回购似乎已经死了,我真的不希望有答案.