如何检测电影是3D的?
有人知道如何检测视频文件是3D电影吗 我尝试过使用ffmpeg工具,但没有找到解决方法如何检测电影是3D的?,3d,ffmpeg,3d,Ffmpeg,有人知道如何检测视频文件是3D电影吗 我尝试过使用ffmpeg工具,但没有找到解决方法 这取决于格式 在线级别: 对于AVC,您可以查找框架包装安排SEI消息。 对于MVC,您可以查找片扩展NAL(type=20) 我看了你的档案。它是AVC 3D,框架包装类型为3(并排-L在左侧,R在右侧)。我提取了H.264流,在字节偏移量0x23:00 01 06 2D处发现这是一条帧打包安排(2D)类型的SEI消息(06)。实际上,您的文件包含指示3D的信息 Comannd线条工具,用于检测3D 使用
这取决于格式 在线级别: 对于AVC,您可以查找框架包装安排SEI消息。 对于MVC,您可以查找片扩展NAL(type=20) 我看了你的档案。它是AVC 3D,框架包装类型为3(并排-L在左侧,R在右侧)。我提取了H.264流,在字节偏移量0x23:00 01 06 2D处发现这是一条帧打包安排(2D)类型的SEI消息(06)。实际上,您的文件包含指示3D的信息 Comannd线条工具,用于检测3D
#包括
#包括
typedef无符号字符uint8;
枚举结果代码
{
E_误差=-1,
E_OK=0,
E_No3D=2,
E_Found3D=3,
};
枚举类型
{
NALType_Unknown=0,
NALType_切片=1,
NALType\u Slice\u DPA=2,
NALType\u Slice\u DPB=3,
NALType_切片_DPC=4,
NALType\u Slice\u IDR=5,
NALType_SEI=6,
NALType_SPS=7,
NALType_PPS=8,
NALType_AU_分隔符=9,
NALType_SequenceEnd=10,
NALType_StreamEnd=11,
NALType_FillerData=12,
NALType_CodedLiceExtension=20,
NALType_MAX=0x1f
};
枚举类型
{
SEIType_框架包装排列=0x2D
};
枚举起始状态
{
StartDestinate_none,
StartCodeState_0,
StartDestinate_0_0,
StartCodeState_0_0_1
};
int-Is3D(std::ifstream和inputFile)
{
int nResult=E_OK;
StartCodeState StartCodeState=StartCodeState\u无;
而((E_OK==nResult)和(!inputFile.eof())
{
uint8_t byte=inputFile.get();
开关(eStartCodeState)
{
案例开始破坏状态\u无:
eStartCodeState=(字节==0)?StartCodeState_0:StartCodeState_无;
打破
案例开始状态0:
eStartCodeState=(字节==0)?StartCodeState_0_0:StartCodeState_none;
打破
案例开始状态0\u 0:
开关(字节)
{
案例0:eStartCodeState=StartCodeState\u 0\u 0;中断;
案例1:eStartCodeState=StartCodeState_0_0_1;中断;
默认值:eStartCodeState=StartDestinate\u无;
}
违约:
;
}
if(eStartCodeState==startDestinate\u 0\u 1)
{
uint8_t cNALType=inputFile.get();
cNALType&=NALType\u MAX;
开关(cNALType)
{
案例类型\代码扩展:
nResult=E_Found3D;
打破
案件类型(SEI):
{
uint8_t cSEIType=inputFile.get();
if(cSEIType==SEIType\U帧封装排列)
{
nResult=E_Found3D;
}
打破
}
违约:
;
}
eStartCodeState=StartCodeState\u none;
}
}
返回结果;
}
int main(int argc,char*argv[])
{
int nResult=E_OK;
如果(argc!=2)
{
nResult=E_误差;
std::cerr不确定它是否有帮助:检测纵横比。3D电影有两倍宽度,例如3840 x 1080当您运行ffprobe 3dvideo.mp4
?您能运行mp4box+我的一段代码吗?需要源代码或二进制文件吗?什么平台?