TSファイルにフルセグとワンセグがあった場合は、フルセグをおそらく優先します。
TSファイルにフルセグとワンセグがあった場合は、フルセグをおそらく優先します。
#module _bsort_#deffunc bsort array rando, int flag,array motopos, local i,local d1, local d2i = 0repeat length(rando)motopos.cnt = cntlooprepeat length(rando)-1repeat length(rando)-1-i// 比較のため一時的にデータを取り出すd1=rando(cnt) : d2=rando(cnt+1)_d1 = motopos(cnt) : _d2 = motopos(cnt+1)// データを比較して大きい場合入れ替え// 降順の場合は小さいときに入れ替えるif (flag == 0){if d1>d2 : rando(cnt)=d2 : rando(cnt+1)=d1 : motopos(cnt)=_d2 : motopos(cnt+1)=_d1}else{if d1<d2 : rando(cnt)=d2 : rando(cnt+1)=d1 : motopos(cnt)=_d2 : motopos(cnt+1)=_d1}loopi++loopreturn#defcfunc arraycheck array rando, str _str, local ii = 0repeat length(rando)if (str(rando(cnt)) == _str) : i++loopreturn i#defcfunc getarraystart array rando, str _str, local ii = -1repeat length(rando)if (str(rando(cnt)) == _str) : i = cnt : breakloopreturn i#global#module MediaInfo#uselib "MediaInfo.dll"#func MediaInfo_New "MediaInfo_New"#func MediaInfo_New_Quick "MediaInfo_New_Quick" wptr,wptr#func MediaInfo_Delete "MediaInfo_Delete" wptr#func MediaInfo_Open "MediaInfo_Open" wptr,wptr#func MediaInfo_Open_Buffer "MediaInfo_Open_Buffer" wptr,wptr,wptr,wptr,wptr#func MediaInfo_Open_Buffer_Init "MediaInfo_Open_Buffer_Init" wptr,wptr,wptr#func MediaInfo_Open_Buffer_Continue "MediaInfo_Open_Buffer_Continue" wptr,wptr,wptr#func MediaInfo_Open_Buffer_Continue_GoTo_Get "MediaInfo_Open_Buffer_Continue_GoTo_Get" wptr#func MediaInfo_Open_Buffer_Finalize "MediaInfo_Open_Buffer_Finalize" wptr#func MediaInfo_Open_NextPacket "MediaInfo_Open_NextPacket" wptr#func MediaInfo_Save "MediaInfo_Save" wptr#func MediaInfo_Close "MediaInfo_Close" wptr#func MediaInfo_Inform "MediaInfo_Inform" wptr,wptr#func MediaInfo_GetI "MediaInfo_GetI" wptr,wptr,wptr,wptr,wptr#func MediaInfo_Get "MediaInfo_Get" wptr,wptr,wptr,wptr,wptr,wptr#func MediaInfo_SetI "MediaInfo_SetI" wptr,wptr,wptr,wptr,wptr,wptr#func MediaInfo_Set "MediaInfo_Set" wptr,wptr,wptr,wptr,wptr,wptr#func MediaInfo_Output_Buffer_Get "MediaInfo_Output_Buffer_Get" wptr,wptr#func MediaInfo_Output_Buffer_GetI "MediaInfo_Output_Buffer_GetI" wptr,wptr#func MediaInfo_Option "MediaInfo_Option" wptr,wptr,wptr#func MediaInfo_State_Get "MediaInfo_State_Get" wptr#func MediaInfo_Count_Get "MediaInfo_Count_Get" wptr,wptr,wptr#func MediaInfoA_New "MediaInfoA_New"#func MediaInfoA_New_Quick "MediaInfoA_New_Quick" sptr,sptr#func MediaInfoA_Delete "MediaInfoA_Delete" sptr#func MediaInfoA_Open "MediaInfoA_Open" sptr,sptr#func MediaInfoA_Open_Buffer "MediaInfoA_Open_Buffer" sptr,sptr,sptr,sptr,sptr#func MediaInfoA_Open_Buffer_Init "MediaInfoA_Open_Buffer_Init" sptr,sptr,sptr#func MediaInfoA_Open_Buffer_Continue "MediaInfoA_Open_Buffer_Continue" sptr,sptr,sptr#func MediaInfoA_Open_Buffer_Continue_GoTo_Get "MediaInfoA_Open_Buffer_Continue_GoTo_Get" sptr#func MediaInfoA_Open_Buffer_Finalize "MediaInfoA_Open_Buffer_Finalize" sptr#func MediaInfoA_Open_NextPacket "MediaInfoA_Open_NextPacket" sptr#func MediaInfoA_Save "MediaInfoA_Save" sptr#func MediaInfoA_Close "MediaInfoA_Close" sptr#func MediaInfoA_Inform "MediaInfoA_Inform" sptr,sptr#func MediaInfoA_GetI "MediaInfoA_GetI" sptr,sptr,sptr,sptr,sptr#func MediaInfoA_Get "MediaInfoA_Get" sptr,sptr,sptr,sptr,sptr,sptr#func MediaInfoA_SetI "MediaInfoA_SetI" sptr,sptr,sptr,sptr,sptr,sptr#func MediaInfoA_Set "MediaInfoA_Set" sptr,sptr,sptr,sptr,sptr,sptr#func MediaInfoA_Output_Buffer_Get "MediaInfoA_Output_Buffer_Get" sptr,sptr#func MediaInfoA_Output_Buffer_GetI "MediaInfoA_Output_Buffer_GetI" sptr,sptr#func MediaInfoA_Option "MediaInfoA_Option" sptr,sptr,sptr#func MediaInfoA_State_Get "MediaInfoA_State_Get" sptr#func MediaInfoA_Count_Get "MediaInfoA_Count_Get" sptr,sptr,sptr#func MediaInfo_Info_Version "MediaInfo_Info_Version"#func MediaInfoList_New "MediaInfoList_New"#func MediaInfoList_New_Quick "MediaInfoList_New_Quick" wptr,wptr#func MediaInfoList_Delete "MediaInfoList_Delete" wptr#func MediaInfoList_Open "MediaInfoList_Open" wptr,wptr,wptr#func MediaInfoList_Open_Buffer "MediaInfoList_Open_Buffer" wptr,wptr,wptr,wptr,wptr#func MediaInfoList_Save "MediaInfoList_Save" wptr,wptr#func MediaInfoList_Close "MediaInfoList_Close" wptr,wptr#func MediaInfoList_Inform "MediaInfoList_Inform" wptr,wptr,wptr#func MediaInfoList_GetI "MediaInfoList_GetI" wptr,wptr,wptr,wptr,wptr,wptr#func MediaInfoList_Get "MediaInfoList_Get" wptr,wptr,wptr,wptr,wptr,wptr,wptr#func MediaInfoList_SetI "MediaInfoList_SetI" wptr,wptr,wptr,wptr,wptr,wptr,wptr#func MediaInfoList_Set "MediaInfoList_Set" wptr,wptr,wptr,wptr,wptr,wptr,wptr#func MediaInfoList_Option "MediaInfoList_Option" wptr,wptr,wptr#func MediaInfoList_State_Get "MediaInfoList_State_Get" wptr#func MediaInfoList_Count_Get "MediaInfoList_Count_Get" wptr,wptr,wptr,wptr#func MediaInfoList_Count_Get_Files "MediaInfoList_Count_Get_Files" wptr#func MediaInfoListA_New "MediaInfoListA_New"#func MediaInfoListA_New_Quick "MediaInfoListA_New_Quick" sptr,sptr#func MediaInfoListA_Delete "MediaInfoListA_Delete" sptr#func MediaInfoListA_Open "MediaInfoListA_Open" sptr,sptr,sptr#func MediaInfoListA_Open_Buffer "MediaInfoListA_Open_Buffer" sptr,sptr,sptr,sptr,sptr#func MediaInfoListA_Save "MediaInfoListA_Save" sptr,sptr#func MediaInfoListA_Close "MediaInfoListA_Close" sptr,sptr#func MediaInfoListA_Inform "MediaInfoListA_Inform" sptr,sptr,sptr#func MediaInfoListA_GetI "MediaInfoListA_GetI" sptr,sptr,sptr,sptr,sptr,sptr#func MediaInfoListA_Get "MediaInfoListA_Get" sptr,sptr,sptr,sptr,sptr,sptr,sptr#func MediaInfoListA_SetI "MediaInfoListA_SetI" sptr,sptr,sptr,sptr,sptr,sptr,sptr#func MediaInfoListA_Set "MediaInfoListA_Set" sptr,sptr,sptr,sptr,sptr,sptr,sptr#func MediaInfoListA_Option "MediaInfoListA_Option" sptr,sptr,sptr#func MediaInfoListA_State_Get "MediaInfoListA_State_Get" sptr#func MediaInfoListA_Count_Get "MediaInfoListA_Count_Get" sptr,sptr,sptr,sptr#func MediaInfoListA_Count_Get_Files "MediaInfoListA_Count_Get_Files" sptr#enum StreamKind_General = 0#enum StreamKind_Video#enum StreamKind_Audio#enum StreamKind_Text#enum StreamKind_Chapters#enum StreamKind_Image#enum InfoKind_Name = 0#enum InfoKind_Text#enum InfoKind_Measure#enum InfoKind_Options#enum InfoKind_NameText#enum InfoKind_MeasureText#enum InfoKind_Info#enum InfoKind_HowTo#enum InfoOptions_ShowInInform = 0#enum InfoOptions_Support#enum InfoOptions_ShowInSupported#enum InfoOptions_TypeOfValue#enum InformOptions_Nothing = 0#enum InformOptions_Custom#enum InformOptions_HTML// ファイル名, エラーコード返却用変数#deffunc GetTSAudioDelay str _fname, var errorerror = 0fname = _fname// ハンドルを取得MediaInfoA_Newhandle = stat// ハンドルを使用してファイル読み込みMediaInfoA_Open handle, fnameif (stat){// 設定(これを設定すると詳細に取得できます)//MediaInfoA_Option handle, "Complete", "1"// 取得rev_size = 4096 // バッファサイズ/*MediaInfoA_Inform handle, rev_sizedupptr info, stat, rev_size, 2screen 1,640,480mesbox info, 640, 480gsel 0, 0*/// グローバルの情報取得MediaInfoA_Get handle, StreamKind_General, 0, "Format", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2gFormatList.cnt = tmpMediaInfoA_Get handle, StreamKind_General, 0, "Duration/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2gTimeList.cnt = tmp// オーディオストリームの数を取得MediaInfoA_Count_Get handle, StreamKind_Audio, -1aNum = statrepeat aNumMediaInfoA_Get handle, StreamKind_Audio, cnt, "ID", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aIDList.cnt = int(tmp)MediaInfoA_Get handle, StreamKind_Audio, cnt, "Format", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aCodecList.cnt = tmpMediaInfoA_Get handle, StreamKind_Audio, cnt, "StreamSize", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aSizeList.cnt = double(tmp)aSizeList2.cnt = double(tmp)MediaInfoA_Get handle, StreamKind_Audio, cnt, "Duration", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aTimeList.cnt = double(tmp)/1000aTimeList2.cnt = double(tmp)/1000MediaInfoA_Get handle, StreamKind_Audio, cnt, "Duration/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aTimeList3.cnt = tmpMediaInfoA_Get handle, StreamKind_Audio, cnt, "Video0_Delay", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aDelayList.cnt = double(tmp)MediaInfoA_Get handle, StreamKind_Audio, cnt, "Channel(s)/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aChList.cnt = tmpMediaInfoA_Get handle, StreamKind_Audio, cnt, "SamplingRate/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aSRList.cnt = tmpMediaInfoA_Get handle, StreamKind_Audio, cnt, "BitRate/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2aBRList.cnt = tmploop// ビデオストリームの数を取得MediaInfoA_Count_Get handle, StreamKind_Video, -1vNum = statrepeat vNumMediaInfoA_Get handle, StreamKind_Video, cnt, "ID", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vIDList.cnt = int(tmp)MediaInfoA_Get handle, StreamKind_Video, cnt, "Format", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vCodecList.cnt = tmpMediaInfoA_Get handle, StreamKind_Video, cnt, "Format_Version", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vCodecFormatList.cnt = tmpMediaInfoA_Get handle, StreamKind_Video, cnt, "Width", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vWidthList.cnt = int(tmp)vWidthList2.cnt = int(tmp)MediaInfoA_Get handle, StreamKind_Video, cnt, "Height", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vHeightList.cnt = int(tmp)MediaInfoA_Get handle, StreamKind_Video, cnt, "Duration", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vTimeList.cnt = double(tmp)/1000vTimeList2.cnt = double(tmp)/1000MediaInfoA_Get handle, StreamKind_Video, cnt, "Duration/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vTimeList3.cnt = tmpMediaInfoA_Get handle, StreamKind_Video, cnt, "BitRate/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vBRList.cnt = tmpMediaInfoA_Get handle, StreamKind_Video, cnt, "BitRate_Maximum/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vBRMaxList.cnt = tmpMediaInfoA_Get handle, StreamKind_Video, cnt, "DisplayAspectRatio/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vDARList.cnt = tmpMediaInfoA_Get handle, StreamKind_Video, cnt, "FrameRate/String", InfoKind_Text, rev_sizedupptr tmp, stat, rev_size, 2vFPSList.cnt = tmploop// 初期値UseAudioID = -1UseAudioDelay = 0x80000000UseVideoID = -1SelectID = -1// エラーチェックif ( aNum <= 0 ){error = -1}else : if (vNum <= 0 ){error = -2}else{// ストリームがある場合はこちら// 使用するストリームの判定// オーディオストリームが1つの場合はそれにするif (aNum == 1){UseAudioID = aIDList.0UseAudioDelay = aDelayList.0SelectID = 0}else{// ストリームが複数の場合if (arraycheck(aCodecList, "AAC") == 1){// AACが1つしかない場合は確定UseAudioID = aIDList.getarraystart(aCodecList, "AAC")UseAudioDelay = aDelayList.getarraystart(aCodecList, "AAC")SelectID = getarraystart(aCodecList, "AAC")}else{// AACが複数の場合// サイズの大きい順にソートするbsort aSizeList2, 1, motoif (aCodecList.int(moto.0) == "AAC"){// 一番大きいストリームがAACだった場合UseAudioID = aIDList.int(moto.0)UseAudioDelay = aDelayList.int(moto.0)SelectID = int(moto.0)}else{// 時間の長い順にソートするbsort aTimeList2, 1, motoif (aCodecList.int(moto.0) == "AAC"){// 一番大きいストリームがAACだった場合UseAudioID = aIDList.int(moto.0)SelectID = int(moto.0)}else{//error = -3}}}}// ビデオストリームが1つの場合はそれにするif (vNum == 1){UseVideoID = vIDList.0SelectID = 0}else{// ストリームが複数の場合if (arraycheck(vCodecList, "MPEG Video") == 1){// MPEG Videoが1つしかない場合は確定UseVideoID = vIDList.getarraystart(vCodecList, "MPEG Video")SelectID = getarraystart(vCodecList, "MPEG Video")}else{// MPEG Videoが複数の場合// 時間の長い順にソートするbsort vTimeList2, 1, motoif (vCodecList.int(moto.0) == "MPEG Video"){// 一番長いストリームがMPEG Videoだった場合UseVideoID = vIDList.int(moto.0)SelectID = int(moto.0)}else{// 幅が長い順にソートするbsort vWidthList2, 1, motoif (vCodecList.int(moto.0) == "MPEG Video"){// 一番幅が長いストリームがMPEG Videoだった場合UseVideoID = vIDList.int(moto.0)SelectID = int(moto.0)}else{//error = -4}}}}}/*// 情報表示if (SelectID != -1){mes "------------- MediaInfo --------------"mes "--------------- Global ---------------"mes "FileName:\t"+getpath(fname, 8)mes "Format:\t\t"+gFormatList.SelectIDmes "Duration:\t"+gTimeList.SelectIDmes ""mes "---------------- Video ---------------"mes "ID:\t\t"+UseVideoIDmes "Format:\t\t"+vCodecList.SelectID+" "+vCodecFormatList.SelectIDmes "Duration:\t"+vTimeList3.SelectIDmes "Bitrate:\t"+vBRList.SelectIDmes "MaxBitrate:\t"+vBRMaxList.SelectIDmes "Size:\t\t"+vWidthList.SelectID+"x"+vHeightList.SelectIDmes "DAR:\t\t"+vDARList.SelectIDmes "FPS:\t\t"+vFPSList.SelectIDmes ""mes "---------------- Audio ---------------"mes "ID:\t\t"+UseAudioIDmes "Format:\t\t"+aCodecList.SelectIDmes "Duration:\t"+aTimeList3.SelectIDmes "Bitrate:\t"+aBRList.SelectIDmes "Delay:\t\t"+UseAudioDelaymes "CH:\t\t"+aChList.SelectIDmes "SampleRate:\t"+aSRList.SelectIDmes ""gosub *cnvts}else{end}*/MediaInfoA_Close handle}else{error = -5}// 使用後はハンドル解放MediaInfoA_Delete handlereturn int(UseAudioDelay)#global