[{"data":1,"prerenderedAt":2003},["ShallowReactive",2],{"/vid":3,"/vid-surround":1992},{"id":4,"title":5,"body":6,"description":1966,"extension":1967,"meta":1968,"navigation":1985,"path":1989,"seo":1990,"stem":12,"__hash__":1991},"content/vid.md","Vid Extension",{"type":7,"value":8,"toc":1860},"minimark",[9,22,32,42,61,70,100,109,142,151,159,168,175,380,389,463,546,588,643,736,811,843,899,931,1016,1257,1329,1394,1426,1473,1527,1587,1662,1685,1748],[10,11,15],"h1",{"id":12,"className":13},"vid",[14],"section-heading",[16,17,21],"a",{"className":18,"href":20},[19],"section-anchor","#vid","Vid",[23,24,27],"h2",{"id":25,"className":26},"concepts",[14],[16,28,31],{"className":29,"href":30},[19],"#concepts","Concepts",[33,34,37],"h3",{"id":35,"className":36},"video-source",[14],[16,38,41],{"className":39,"href":40},[19],"#video-source","Video Source",[43,44,45,46,49,50,52,53,56,57,60],"p",{},"The ",[47,48,12],"code",{}," extension has a built-in concept of a video source.\nAt the moment, the only video sources available are movies in the directory the model lives in and cameras attached to the computer.\nThe ",[47,51,12],{}," extension opens a new video source with the ",[47,54,55],{},"vid:\u003Csource>-open"," and ",[47,58,59],{},"vid:\u003Csource>-select",".\nThese primitives change the source to the selected source.\nIf a source is already open, it closes it before opening a new one.",[33,62,65],{"id":63,"className":64},"source-lifecycle",[14],[16,66,69],{"className":67,"href":68},[19],"#source-lifecycle","Source Lifecycle",[43,71,72,73,76,77,80,81,76,84,87,88,91,92,95,96,99],{},"Movie sources are “stopped” after being created by ",[47,74,75],{},"vid:movie-select"," or ",[47,78,79],{},"vid:movie-open",".\nCamera sources start off as “playing” after being created by ",[47,82,83],{},"vid:camera-select",[47,85,86],{},"vid:camera-open",".\nIf a source is in status “stopped” it can be started with ",[47,89,90],{},"vid:start",".\nConversely, if the source is “playing” it can be stopped with ",[47,93,94],{},"vid:stop",".\nWhen a source is “stopped”, each call to ",[47,97,98],{},"vid:capture-image"," will return the same image.",[33,101,104],{"id":102,"className":103},"video-recorder",[14],[16,105,108],{"className":106,"href":107},[19],"#video-recorder","Video Recorder",[43,110,45,111,113,114,117,118,121,122,125,126,129,130,133,134,137,138,141],{},[47,112,12],{}," extension also has the concept of a recording, a series of frames which can be sewn into an “mp4” movie.\nThe recorder status can be queried using ",[47,115,116],{},"vid:recorder-status",".\nThe recorder status is “inactive” until started with ",[47,119,120],{},"vid:start-recorder",", which sets it to “recording”.\nWhile the recorder is “recording” the ",[47,123,124],{},"vid:record-view",", ",[47,127,128],{},"vid:record-interface",", and ",[47,131,132],{},"vid:record-source"," can be used to save frames to the recording.\nYou can choose to save the recording while recording using ",[47,135,136],{},"vid:save-recording"," which saves the movie to the specified file and reset the recording status to “inactive”.\nIf you would prefer to throw away the recorded frames without saving, use ",[47,139,140],{},"vid:reset-recorder",".",[33,143,146],{"id":144,"className":145},"known-issues",[14],[16,147,150],{"className":148,"href":149},[19],"#known-issues","Known Issues",[43,152,153,154,76,156,158],{},"When running the extension on macOS and using ",[47,155,86],{},[47,157,83],{}," and then starting a different program (like Zoom) and using the same camera will crash NetLogo.  If you start the other program first and then start NetLogo things should work better.",[23,160,163],{"id":161,"className":162},"primitives",[14],[16,164,167],{"className":165,"href":166},[19],"#primitives","Primitives",[43,169,170,171,141],{},"Looking for the primitive reference for the Vid extension? You can find ",[16,172,174],{"href":173},"/vid/dictionary","the full reference here",[176,177,181,182,189,190,196,197,189,203,196,206,189,212,196,215,189,221,196,224,189,230,196,233,189,240,196,243,189,250,196,253,189,259,196,262,189,268,196,271,189,278,196,281,189,287,196,290,189,297,196,300,189,307,196,310,189,317,196,320,189,326,196,329,189,335,196,338,189,344,196,347,189,353,196,356,189,362,196,365,189,371,196,374],"div",{"id":178,"className":179},"all",[180],"prose","\n  ",[16,183,186],{"className":184,"href":185},[47],"#camera-names",[47,187,188],{},"vid:camera-names","\n   ",[191,192,195],"span",{"className":193},[194],"font-bold"," · "," \n  ",[16,198,201],{"className":199,"href":200},[47],"#camera-open",[47,202,86],{},[191,204,195],{"className":205},[194],[16,207,210],{"className":208,"href":209},[47],"#camera-select",[47,211,83],{},[191,213,195],{"className":214},[194],[16,216,219],{"className":217,"href":218},[47],"#movie-select",[47,220,75],{},[191,222,195],{"className":223},[194],[16,225,228],{"className":226,"href":227},[47],"#movie-open",[47,229,79],{},[191,231,195],{"className":232},[194],[16,234,237],{"className":235,"href":236},[47],"#movie-open-remote",[47,238,239],{},"vid:movie-open-remote",[191,241,195],{"className":242},[194],[16,244,247],{"className":245,"href":246},[47],"#close",[47,248,249],{},"vid:close",[191,251,195],{"className":252},[194],[16,254,257],{"className":255,"href":256},[47],"#start",[47,258,90],{},[191,260,195],{"className":261},[194],[16,263,266],{"className":264,"href":265},[47],"#stop",[47,267,94],{},[191,269,195],{"className":270},[194],[16,272,275],{"className":273,"href":274},[47],"#status",[47,276,277],{},"vid:status",[191,279,195],{"className":280},[194],[16,282,285],{"className":283,"href":284},[47],"#capture-image",[47,286,98],{},[191,288,195],{"className":289},[194],[16,291,294],{"className":292,"href":293},[47],"#set-time",[47,295,296],{},"vid:set-time",[191,298,195],{"className":299},[194],[16,301,304],{"className":302,"href":303},[47],"#show-player",[47,305,306],{},"vid:show-player",[191,308,195],{"className":309},[194],[16,311,314],{"className":312,"href":313},[47],"#hide-player",[47,315,316],{},"vid:hide-player",[191,318,195],{"className":319},[194],[16,321,324],{"className":322,"href":323},[47],"#record-view",[47,325,124],{},[191,327,195],{"className":328},[194],[16,330,333],{"className":331,"href":332},[47],"#record-interface",[47,334,128],{},[191,336,195],{"className":337},[194],[16,339,342],{"className":340,"href":341},[47],"#record-source",[47,343,132],{},[191,345,195],{"className":346},[194],[16,348,351],{"className":349,"href":350},[47],"#recorder-status",[47,352,116],{},[191,354,195],{"className":355},[194],[16,357,360],{"className":358,"href":359},[47],"#reset-recorder",[47,361,140],{},[191,363,195],{"className":364},[194],[16,366,369],{"className":367,"href":368},[47],"#start-recorder",[47,370,120],{},[191,372,195],{"className":373},[194],[16,375,378],{"className":376,"href":377},[47],"#save-recording",[47,379,136],{},[33,381,384],{"id":382,"className":383},"all-primitives",[14],[16,385,388],{"className":386,"href":387},[19],"#all-primitives","All Primitives",[176,390,181,394,181,400,413,416,419],{"className":391,"id":393},[392],"dict_entry","camera-names",[33,395,397,398,181],{"id":396},"vidcamera-names","\n    ",[16,399,188],{"href":185},[401,402,405],"h4",{"id":403,"className":404},"vidcamera-names-1",[14],[16,406,397,409,181],{"className":407,"href":408},[19],"#----vidcamera-names---1",[191,410,188],{"className":411},[412],"prim_example",[43,414,415],{},"Provides a list of all available cameras.",[43,417,418],{},"Example:",[420,421,422],"pre",{},[47,423,424,429,430,434,435,438,429,441,444,445,450,451,453,429,456,444,459,450],{},[191,425,188],{"className":426},[427,428],"token","variable"," ",[191,431,433],{"className":432},[427,428],"=>"," []",[436,437],"br",{},[191,439,188],{"className":440},[427,428],[191,442,433],{"className":443},[427,428]," [",[191,446,449],{"className":447},[427,448],"string","\"Mac Camera\"","]",[436,452],{},[191,454,188],{"className":455},[427,428],[191,457,433],{"className":458},[427,428],[191,460,462],{"className":461},[427,448],"\"Logitech Camera\"",[176,464,181,467,181,472,483,488,490,512,515],{"className":465,"id":466},[392],"camera-open",[33,468,397,470,181],{"id":469},"vidcamera-open",[16,471,86],{"href":200},[401,473,476],{"id":474,"className":475},"vidcamera-open-1",[14],[16,477,397,480,181],{"className":478,"href":479},[19],"#----vidcamera-open---1",[191,481,86],{"className":482},[412],[43,484,485,486,141],{},"Opens the named camera as a video source.\nIf no name is provided, opens the first camera that would be listed by ",[47,487,393],{},[43,489,418],{},[420,491,492],{},[47,493,494,429,497,502,504,505,429,508,511],{},[191,495,86],{"className":496},[427,428],[191,498,501],{"className":499},[427,500],"comment","; opens first camera",[436,503],{},"(",[191,506,86],{"className":507},[427,428],[191,509,462],{"className":510},[427,448],")",[43,513,514],{},"Errors:",[516,517,518,529],"ul",{},[519,520,521,522,528],"li",{},"Message ",[47,523,524],{},[191,525,527],{"className":526},[427,448],"\"vid: no cameras found\"",": no cameras are available.",[519,530,521,531,545],{},[47,532,533,537,541],{},[191,534,536],{"className":535},[427,448],"\"vid: camera \"",[191,538,540],{"className":539},[427,428],"\\\u003Cname\\>",[191,542,544],{"className":543},[427,448],"\" not found\"",": if the named camera is not available.",[176,547,181,550,181,555,566,572,574,581,583],{"className":548,"id":549},[392],"camera-select",[33,551,397,553,181],{"id":552},"vidcamera-select",[16,554,83],{"href":209},[401,556,559],{"id":557,"className":558},"vidcamera-select-1",[14],[16,560,397,563,181],{"className":561,"href":562},[19],"#----vidcamera-select---1",[191,564,83],{"className":565},[412],[43,567,568,569,571],{},"Prompts the user to select a camera as video source. This command does not error if the user cancels. Use ",[47,570,277],{}," to see if a user selected a camera.",[43,573,418],{},[420,575,576],{},[47,577,578],{},[191,579,83],{"className":580},[427,428],[43,582,514],{},[516,584,585],{},[519,586,587],{},"Message “vid: no cameras found”: no cameras are available.",[176,589,181,592,181,597,608,621,623,630,632],{"className":590,"id":591},[392],"movie-select",[33,593,397,595,181],{"id":594},"vidmovie-select",[16,596,75],{"href":218},[401,598,601],{"id":599,"className":600},"vidmovie-select-1",[14],[16,602,397,605,181],{"className":603,"href":604},[19],"#----vidmovie-select---1",[191,606,75],{"className":607},[412],[43,609,610,611,617,618,620],{},"Prompts the user to select a movie to use as a video source.\nThe formats supported are those ",[16,612,616],{"href":613,"rel":614},"https://docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html#SupportedMediaTypes",[615],"nofollow","supported by JavaFX2",".\nThis command does not error if the user cancels.\nUse ",[47,619,277],{}," to see if the user selected a movie.",[43,622,418],{},[420,624,625],{},[47,626,627],{},[191,628,75],{"className":629},[427,428],[43,631,514],{},[516,633,634],{},[519,635,521,636,642],{},[47,637,638],{},[191,639,641],{"className":640},[427,448],"\"vid: format not supported\"",": the user selected a movie with an unsupported format.",[176,644,181,647,181,652,668,671,673,716,718],{"className":645,"id":646},[392],"movie-open",[33,648,397,650,181],{"id":649},"vidmovie-open",[16,651,79],{"href":227},[401,653,656],{"id":654,"className":655},"vidmovie-open-filename",[14],[16,657,397,660,181],{"className":658,"href":659},[19],"#----vidmovie-open-filename--",[191,661,663,664],{"className":662},[412],"vid:movie-open ",[665,666,667],"i",{},"filename",[43,669,670],{},"Opens a video from the file system.\nIf the provided path is not absolute the extension searches for the given path relative to the current model directory.\nIf the provided path is absolute the extension opens the file.",[43,672,418],{},[420,674,675],{},[47,676,677,429,680,684,685,689,691,429,694,684,699,703,705,429,708,429,712],{},[191,678,79],{"className":679},[427,428],[191,681,683],{"className":682},[427,448],"\"foo.mp4\"","      ",[191,686,688],{"className":687},[427,500],"; Opens foo.mp4 in the directory containing the model",[436,690],{},[191,692,79],{"className":693},[427,428],[191,695,698],{"className":696},[427,697],"reporter","user-file",[191,700,702],{"className":701},[427,500],"; Opens a dialog for the user to select a movie",[436,704],{},[191,706,79],{"className":707},[427,428],[191,709,711],{"className":710},[427,448],"\"/tmp/foo.mp4\"",[191,713,715],{"className":714},[427,500],"; Opens a movie from the \"/tmp\" directory",[43,717,514],{},[516,719,720,729],{},[519,721,521,722,728],{},[47,723,724],{},[191,725,727],{"className":726},[427,448],"\"vid: no movie found\"",": the movie could not be found.",[519,730,521,731,642],{},[47,732,733],{},[191,734,641],{"className":735},[427,448],[176,737,181,740,181,745,760,763,765,776,778],{"className":738,"id":739},[392],"movie-open-remote",[33,741,397,743,181],{"id":742},"vidmovie-open-remote",[16,744,239],{"href":236},[401,746,749],{"id":747,"className":748},"vidmovie-open-remote-url",[14],[16,750,397,753,181],{"className":751,"href":752},[19],"#----vidmovie-open-remote-url--",[191,754,756,757],{"className":755},[412],"vid:movie-open-remote ",[665,758,759],{},"url",[43,761,762],{},"Opens a remote video from a website or ftp server.",[43,764,418],{},[420,766,767],{},[47,768,769,429,772],{},[191,770,239],{"className":771},[427,428],[191,773,775],{"className":774},[427,448],"\"http://example.org/foo.mp4\"",[43,777,514],{},[516,779,780,788,796],{},[519,781,521,782,787],{},[47,783,784],{},[191,785,727],{"className":786},[427,448],": The specified URL could not be loaded or errored while loading.",[519,789,521,790,795],{},[47,791,792],{},[191,793,641],{"className":794},[427,448],": The file type of the remote movie is not supported.",[519,797,521,798,804,805,56,808,141],{},[47,799,800],{},[191,801,803],{"className":802},[427,448],"\"vid: protocol not supported\"",": The movie was at an unsupported URL protocol. Supported protocols are ",[47,806,807],{},"ftp",[47,809,810],{},"http",[176,812,181,815,181,820,831,834,836],{"className":813,"id":814},[392],"close",[33,816,397,818,181],{"id":817},"vidclose",[16,819,249],{"href":246},[401,821,824],{"id":822,"className":823},"vidclose-1",[14],[16,825,397,828,181],{"className":826,"href":827},[19],"#----vidclose---1",[191,829,249],{"className":830},[412],[43,832,833],{},"Closes the currently selected video source.\nHas no effect if there is no active video source.",[43,835,418],{},[420,837,838],{},[47,839,840],{},[191,841,249],{"className":842},[427,428],[176,844,181,847,181,852,863,868,870,877,879],{"className":845,"id":846},[392],"start",[33,848,397,850,181],{"id":849},"vidstart",[16,851,90],{"href":256},[401,853,856],{"id":854,"className":855},"vidstart-1",[14],[16,857,397,860,181],{"className":858,"href":859},[19],"#----vidstart---1",[191,861,90],{"className":862},[412],[43,864,865,866,141],{},"Starts the selected video source.\nA video source must have been selected before calling ",[47,867,90],{},[43,869,418],{},[420,871,872],{},[47,873,874],{},[191,875,90],{"className":876},[427,428],[43,878,514],{},[516,880,881],{},[519,882,521,883,889,890,125,892,125,894,896,897,141],{},[47,884,885],{},[191,886,888],{"className":887},[427,448],"\"vid: no selected source\"",": There is no currently selected video source. Select a source with ",[47,891,79],{},[47,893,75],{},[47,895,86],{},", or ",[47,898,83],{},[176,900,181,903,181,908,919,922,924],{"className":901,"id":902},[392],"stop",[33,904,397,906,181],{"id":905},"vidstop",[16,907,94],{"href":265},[401,909,912],{"id":910,"className":911},"vidstop-1",[14],[16,913,397,916,181],{"className":914,"href":915},[19],"#----vidstop---1",[191,917,94],{"className":918},[412],[43,920,921],{},"Stops the currently running video source.",[43,923,418],{},[420,925,926],{},[47,927,928],{},[191,929,94],{"className":930},[427,428],[176,932,181,935,181,940,951,964,966],{"className":933,"id":934},[392],"status",[33,936,397,938,181],{"id":937},"vidstatus",[16,939,277],{"href":274},[401,941,944],{"id":942,"className":943},"vidstatus-1",[14],[16,945,397,948,181],{"className":946,"href":947},[19],"#----vidstatus---1",[191,949,277],{"className":950},[412],[43,952,953,954,76,956,958,959,76,961,963],{},"Reports the current status of an active video.\nNote that after calling ",[47,955,79],{},[47,957,75],{}," the status will be set to “stopped”,\nwhile after calling ",[47,960,86],{},[47,962,83],{}," the status will be “playing”.",[43,965,418],{},[420,967,968],{},[47,969,970,973,974,978,980,982,429,985,989,991,684,994,998,1000,1002,1006,1008,1011,1012],{},[191,971,277],{"className":972},[427,428],"     ",[191,975,977],{"className":976},[427,500],"; => \"inactive\"",[436,979],{},[436,981],{},[191,983,79],{"className":984},[427,428],[191,986,988],{"className":987},[427,448],"\"foobar.mp4\"",[436,990],{},[191,992,277],{"className":993},[427,428],[191,995,997],{"className":996},[427,500],"; => \"stopped\"",[436,999],{},[436,1001],{},[191,1003,1005],{"className":1004},[427,428],"vid:movie-start",[436,1007],{},[191,1009,277],{"className":1010},[427,428],"       ",[191,1013,1015],{"className":1014},[427,500],"; => \"playing\"",[176,1017,181,1020,181,1025,1043,1046,1049,1051,1210,1229,1231],{"className":1018,"id":1019},[392],"capture-image",[33,1021,397,1023,181],{"id":1022},"vidcapture-image",[16,1024,98],{"href":284},[401,1026,1029],{"id":1027,"className":1028},"vidcapture-image-width-height",[14],[16,1030,397,1033,181],{"className":1031,"href":1032},[19],"#----vidcapture-image-width-height--",[191,1034,1036,1037,429,1040],{"className":1035},[412],"vid:capture-image ",[665,1038,1039],{},"width",[665,1041,1042],{},"height",[43,1044,1045],{},"Captures an image from the currently selected active source.",[43,1047,1048],{},"If width and height are not specified, the image is captured at the current source resolution.",[43,1050,418],{},[420,1052,1053],{},[47,1054,1055,1060,1061,429,1064,1068,1069,1071,429,1077,1081,1083,1084,1088,1083,1090,1094,1083,1096,444,1101,1103,1104,1108,1103,1110,429,1114,429,1118,429,1121,1125,1103,1127,429,1131,429,1134,429,1139,1142,1144,1145,1103,1147,429,1151,429,1155,429,1159,444,1163,684,1165,1168,684,1170,1173,684,1175,429,1178,429,1181,1184,684,1186,429,1189,429,1192,429,1195,1198,1200,1201,1203,1204],{},[191,1056,1059],{"className":1057},[427,1058],"keyword","extensions"," [ ",[191,1062,12],{"className":1063},[427,428],[191,1065,1067],{"className":1066},[427,428],"bitmap"," ]",[436,1070],{},[191,1072,1074,1076],{"className":1073},[427,1058],[436,1075],{},"to",[191,1078,1080],{"className":1079},[427,428],"capture",[436,1082],{},"  ",[191,1085,1087],{"className":1086},[427,500],"; capture an image if a video source is open,",[436,1089],{},[191,1091,1093],{"className":1092},[427,500],"; have the user select a camera if no video source found",[436,1095],{},[191,1097,1100],{"className":1098},[427,1099],"command","carefully",[436,1102],{},"    ",[191,1105,1107],{"className":1106},[427,500],"; when camera open, take an image",[436,1109],{},[191,1111,1113],{"className":1112},[427,1099],"let",[191,1115,1117],{"className":1116},[427,428],"image",[191,1119,98],{"className":1120},[427,428],[191,1122,1124],{"className":1123},[427,500],"; returns image suitable for use with bitmap extension",[436,1126],{},[191,1128,1130],{"className":1129},[427,428],"bitmap:copy-to-drawing",[191,1132,1117],{"className":1133},[427,428],[191,1135,1138],{"className":1136},[427,1137],"number","0",[191,1140,1138],{"className":1141},[427,1137],[436,1143],{},"  ] [",[436,1146],{},[191,1148,1150],{"className":1149},[427,1099],"if",[191,1152,1154],{"className":1153},[427,697],"error-message",[191,1156,1158],{"className":1157},[427,697],"=",[191,1160,1162],{"className":1161},[427,448],"\"Extension exception: vid: no selected source\"",[436,1164],{},[191,1166,83],{"className":1167},[427,428],[436,1169],{},[191,1171,90],{"className":1172},[427,428],[436,1174],{},[191,1176,1113],{"className":1177},[427,1099],[191,1179,1117],{"className":1180},[427,428],[191,1182,98],{"className":1183},[427,428],[436,1185],{},[191,1187,1130],{"className":1188},[427,428],[191,1190,1117],{"className":1191},[427,428],[191,1193,1138],{"className":1194},[427,1137],[191,1196,1138],{"className":1197},[427,1137],[436,1199],{},"    ]",[436,1202],{},"  ]",[191,1205,1207,1209],{"className":1206},[427,1058],[436,1208],{},"end",[43,1211,1212,1213,1215,1216,141],{},"If you want to capture images at a different resolution, simply replace ",[47,1214,98],{}," with, e.g., ",[47,1217,504,1218,429,1221,429,1225,511],{},[191,1219,98],{"className":1220},[427,428],[191,1222,1224],{"className":1223},[427,1137],"640",[191,1226,1228],{"className":1227},[427,1137],"480",[43,1230,514],{},[516,1232,1233,1248],{},[519,1234,521,1235,889,1240,125,1242,125,1244,896,1246,141],{},[47,1236,1237],{},[191,1238,888],{"className":1239},[427,448],[47,1241,79],{},[47,1243,75],{},[47,1245,86],{},[47,1247,83],{},[519,1249,521,1250,1256],{},[47,1251,1252],{},[191,1253,1255],{"className":1254},[427,448],"\"vid: invalid dimensions\"",": The selected dimensions are invalid (one of the dimensions is zero or negative).",[176,1258,181,1261,181,1266,1281,1288,1290,1301,1303],{"className":1259,"id":1260},[392],"set-time",[33,1262,397,1264,181],{"id":1263},"vidset-time",[16,1265,296],{"href":293},[401,1267,1270],{"id":1268,"className":1269},"vidset-time-seconds",[14],[16,1271,397,1274,181],{"className":1272,"href":1273},[19],"#----vidset-time-seconds--",[191,1275,1277,1278],{"className":1276},[412],"vid:set-time ",[665,1279,1280],{},"seconds",[43,1282,1283,1284,1287],{},"Sets the time of the current video source to ",[47,1285,1286],{},"*seconds*",".\nThis has no effect when the current video source is a camera.",[43,1289,418],{},[420,1291,1292],{},[47,1293,1294,429,1297],{},[191,1295,296],{"className":1296},[427,428],[191,1298,1300],{"className":1299},[427,1137],"100",[43,1302,514],{},[516,1304,1305,1320],{},[519,1306,521,1307,889,1312,125,1314,125,1316,896,1318,141],{},[47,1308,1309],{},[191,1310,888],{"className":1311},[427,448],[47,1313,79],{},[47,1315,75],{},[47,1317,86],{},[47,1319,83],{},[519,1321,521,1322,1328],{},[47,1323,1324],{},[191,1325,1327],{"className":1326},[427,448],"\"vid: invalid time\"",": The currently active video does not contain the specified second. The second may be negative, or greater than the length of the video.",[176,1330,181,1333,181,1338,1354,1357,1360,1367,1370,1383,1385],{"className":1331,"id":1332},[392],"show-player",[33,1334,397,1336,181],{"id":1335},"vidshow-player",[16,1337,306],{"href":303},[401,1339,1342],{"id":1340,"className":1341},"vidshow-player-width-height",[14],[16,1343,397,1346,181],{"className":1344,"href":1345},[19],"#----vidshow-player-width-height--",[191,1347,1349,1350,429,1352],{"className":1348},[412],"vid:show-player ",[665,1351,1039],{},[665,1353,1042],{},[43,1355,1356],{},"Shows a player in a separate window.\nIf there is no video source, the window will be an empty black frame.\nIf there is an active video source, it will be displayed in the window with the specified width and height.\nIf there is a playing video source, it will be displayed in the window at its specified width and height.\nIf width and height are omitted, the video will be displayed in its native resolution.",[43,1358,1359],{},"Example with native resolution:",[420,1361,1362],{},[47,1363,1364],{},[191,1365,306],{"className":1366},[427,428],[43,1368,1369],{},"Example with custom resolution:",[420,1371,1372],{},[47,1373,504,1374,429,1377,429,1380,511],{},[191,1375,306],{"className":1376},[427,428],[191,1378,1224],{"className":1379},[427,1137],[191,1381,1228],{"className":1382},[427,1137],[43,1384,514],{},[516,1386,1387],{},[519,1388,521,1389,1256],{},[47,1390,1391],{},[191,1392,1255],{"className":1393},[427,448],[176,1395,181,1398,181,1403,1414,1417,1419],{"className":1396,"id":1397},[392],"hide-player",[33,1399,397,1401,181],{"id":1400},"vidhide-player",[16,1402,316],{"href":313},[401,1404,1407],{"id":1405,"className":1406},"vidhide-player-1",[14],[16,1408,397,1411,181],{"className":1409,"href":1410},[19],"#----vidhide-player---1",[191,1412,316],{"className":1413},[412],[43,1415,1416],{},"Hides the player if open. Does nothing if there is no player window.",[43,1418,418],{},[420,1420,1421],{},[47,1422,1423],{},[191,1424,316],{"className":1425},[427,428],[176,1427,181,1430,181,1435,1446,1449,1451,1458,1460],{"className":1428,"id":1429},[392],"record-view",[33,1431,397,1433,181],{"id":1432},"vidrecord-view",[16,1434,124],{"href":323},[401,1436,1439],{"id":1437,"className":1438},"vidrecord-view-1",[14],[16,1440,397,1443,181],{"className":1441,"href":1442},[19],"#----vidrecord-view---1",[191,1444,124],{"className":1445},[412],[43,1447,1448],{},"Records the current image shown in the NetLogo view to the active recording.",[43,1450,418],{},[420,1452,1453],{},[47,1454,1455],{},[191,1456,124],{"className":1457},[427,428],[43,1459,514],{},[516,1461,1462],{},[519,1463,521,1464,1470,1471,141],{},[47,1465,1466],{},[191,1467,1469],{"className":1468},[427,448],"\"vid: recorder not started\"",": The recorder has not been started. Start the recorder with ",[47,1472,120],{},[176,1474,181,1477,181,1482,1493,1496,1498,1505,1507],{"className":1475,"id":1476},[392],"record-interface",[33,1478,397,1480,181],{"id":1479},"vidrecord-interface",[16,1481,128],{"href":332},[401,1483,1486],{"id":1484,"className":1485},"vidrecord-interface-1",[14],[16,1487,397,1490,181],{"className":1488,"href":1489},[19],"#----vidrecord-interface---1",[191,1491,128],{"className":1492},[412],[43,1494,1495],{},"Records the NetLogo interface view to the active recording.",[43,1497,418],{},[420,1499,1500],{},[47,1501,1502],{},[191,1503,128],{"className":1504},[427,428],[43,1506,514],{},[516,1508,1509,1518],{},[519,1510,521,1511,1470,1516,141],{},[47,1512,1513],{},[191,1514,1469],{"className":1515},[427,448],[47,1517,120],{},[519,1519,521,1520,1526],{},[47,1521,1522],{},[191,1523,1525],{"className":1524},[427,448],"\"vid: export interface not supported\"",": The calling NetLogo version does not support interface exports. This will occur when running NetLogo headlessly.",[176,1528,181,1531,181,1536,1547,1550,1552,1559,1561],{"className":1529,"id":1530},[392],"record-source",[33,1532,397,1534,181],{"id":1533},"vidrecord-source",[16,1535,132],{"href":341},[401,1537,1540],{"id":1538,"className":1539},"vidrecord-source-1",[14],[16,1541,397,1544,181],{"className":1542,"href":1543},[19],"#----vidrecord-source---1",[191,1545,132],{"className":1546},[412],[43,1548,1549],{},"Records a frame to the active recording from the currently active source.",[43,1551,418],{},[420,1553,1554],{},[47,1555,1556],{},[191,1557,132],{"className":1558},[427,428],[43,1560,514],{},[516,1562,1563,1572],{},[519,1564,521,1565,1470,1570,141],{},[47,1566,1567],{},[191,1568,1469],{"className":1569},[427,448],[47,1571,120],{},[519,1573,521,1574,889,1579,125,1581,125,1583,896,1585,141],{},[47,1575,1576],{},[191,1577,888],{"className":1578},[427,448],[47,1580,79],{},[47,1582,75],{},[47,1584,86],{},[47,1586,83],{},[176,1588,181,1591,181,1596,1607,1619,1621],{"className":1589,"id":1590},[392],"recorder-status",[33,1592,397,1594,181],{"id":1593},"vidrecorder-status",[16,1595,116],{"href":350},[401,1597,1600],{"id":1598,"className":1599},"vidrecorder-status-1",[14],[16,1601,397,1604,181],{"className":1602,"href":1603},[19],"#----vidrecorder-status---1",[191,1605,116],{"className":1606},[412],[43,1608,1609,1610,1612,1613,1615,1616,1618],{},"Reports the current status of the recorder.\nInitially and after the recorder is saved (via ",[47,1611,136],{},") or reset (via ",[47,1614,140],{},") the recorder status is “inactive”.\nAfter calling ",[47,1617,120],{}," the status will be “recording”.",[43,1620,418],{},[420,1622,1623],{},[47,1624,1625,429,1628,1631,1633,1635,1638,1640,429,1643,1647,1649,1651,1654,1656,429,1659],{},[191,1626,116],{"className":1627},[427,428],[191,1629,977],{"className":1630},[427,500],[436,1632],{},[436,1634],{},[191,1636,120],{"className":1637},[427,428],[436,1639],{},[191,1641,116],{"className":1642},[427,428],[191,1644,1646],{"className":1645},[427,500],"; => \"recording\"",[436,1648],{},[436,1650],{},[191,1652,140],{"className":1653},[427,428],[436,1655],{},[191,1657,116],{"className":1658},[427,428],[191,1660,977],{"className":1661},[427,500],[176,1663,181,1666,181,1671,1682],{"className":1664,"id":1665},[392],"reset-recorder",[33,1667,397,1669,181],{"id":1668},"vidreset-recorder",[16,1670,140],{"href":359},[401,1672,1675],{"id":1673,"className":1674},"vidreset-recorder-1",[14],[16,1676,397,1679,181],{"className":1677,"href":1678},[19],"#----vidreset-recorder---1",[191,1680,140],{"className":1681},[412],[43,1683,1684],{},"Stops the current recording, discards any recorded frames without saving them, and forgets the currently set recording resolution.",[176,1686,181,1689,181,1694,1705,1708,1710,1728,1730],{"className":1687,"id":1688},[392],"start-recorder",[33,1690,397,1692,181],{"id":1691},"vidstart-recorder",[16,1693,120],{"href":368},[401,1695,1698],{"id":1696,"className":1697},"vidstart-recorder-1",[14],[16,1699,397,1702,181],{"className":1700,"href":1701},[19],"#----vidstart-recorder---1",[191,1703,120],{"className":1704},[412],[43,1706,1707],{},"Starts the recorder.\nIf the recorder is already running this will cause an error to be raised.\nIf desired, a recording width and height can be supplied.\nIf width and height are not supplied, they will be determined from the first frame recorded.",[43,1709,418],{},[420,1711,1712],{},[47,1713,1714,1717,504,1719,429,1722,429,1725,511],{},[191,1715,120],{"className":1716},[427,428],[436,1718],{},[191,1720,120],{"className":1721},[427,428],[191,1723,1224],{"className":1724},[427,1137],[191,1726,1228],{"className":1727},[427,1137],[43,1729,514],{},[516,1731,1732,1741],{},[519,1733,521,1734,1740],{},[47,1735,1736],{},[191,1737,1739],{"className":1738},[427,448],"\"vid: recorder already started\"",": The recorder has already been started. The existing recording should be saved or reset before starting the recording.",[519,1742,521,1743,1256],{},[47,1744,1745],{},[191,1746,1255],{"className":1747},[427,448],[176,1749,181,1752,181,1757,1771,1784,1786,1825,1827],{"className":1750,"id":1751},[392],"save-recording",[33,1753,397,1755,181],{"id":1754},"vidsave-recording",[16,1756,136],{"href":377},[401,1758,1761],{"id":1759,"className":1760},"vidsave-recording-filename",[14],[16,1762,397,1765,181],{"className":1763,"href":1764},[19],"#----vidsave-recording-filename--",[191,1766,1768,1769],{"className":1767},[412],"vid:save-recording ",[665,1770,667],{},[43,1772,1773,1774,429,1776,1780,1781,1783],{},"Saves the recording to the specified path.\nIf the recorder is not running this will cause an error to be raised.\nNote that at present the recording will always be saved in the “mp4” format.\nIf the supplied filename does not end in “.mp4”, the “.mp4” suffix will be added.\nNote that ",[47,1775,136],{},[1777,1778,1779],"em",{},"will"," overwrite existing files of the same name.\n",[47,1782,136],{}," will error if the recorder has not been started or if the file cannot be written since the containing directory does not exist.",[43,1785,418],{},[420,1787,1788],{},[47,1789,1790,429,1793,684,1796,1800,1802,429,1805,1083,1809,1813,1815,429,1818,429,1821],{},[191,1791,136],{"className":1792},[427,428],[191,1794,683],{"className":1795},[427,448],[191,1797,1799],{"className":1798},[427,500],"; Saves to foo.mp4 in the directory containing the model",[436,1801],{},[191,1803,136],{"className":1804},[427,428],[191,1806,1808],{"className":1807},[427,697],"user-new-file",[191,1810,1812],{"className":1811},[427,500],"; Opens a dialog for the user to select a save path",[436,1814],{},[191,1816,136],{"className":1817},[427,428],[191,1819,711],{"className":1820},[427,448],[191,1822,1824],{"className":1823},[427,500],"; Saves the recording to the \"/tmp\" directory",[43,1826,514],{},[516,1828,1829,1838,1847],{},[519,1830,521,1831,1470,1836,141],{},[47,1832,1833],{},[191,1834,1469],{"className":1835},[427,448],[47,1837,120],{},[519,1839,521,1840,1846],{},[47,1841,1842],{},[191,1843,1845],{"className":1844},[427,448],"\"vid: no such directory\"",": The directory containing the specified save file does not exist.",[519,1848,521,1849,1855,1856,1859],{},[47,1850,1851],{},[191,1852,1854],{"className":1853},[427,448],"\"vid: no frames recorded\"",": You tried to save a recording with no frames recorded. Check that you are recording properly or use ",[47,1857,1858],{},"vid:reset-recording"," to to change the recording format without saving.",{"title":1861,"searchDepth":1862,"depth":1863,"links":1864},"",5,3,[1865,1872],{"id":25,"depth":1866,"text":31,"children":1867},2,[1868,1869,1870,1871],{"id":35,"depth":1863,"text":41},{"id":63,"depth":1863,"text":69},{"id":102,"depth":1863,"text":108},{"id":144,"depth":1863,"text":150},{"id":161,"depth":1866,"text":167,"children":1873},[1874,1875,1880,1884,1888,1892,1897,1902,1906,1910,1914,1918,1923,1928,1933,1937,1941,1945,1949,1953,1957,1961],{"id":382,"depth":1863,"text":388},{"id":396,"depth":1863,"text":1876,"children":1877},"\n    vid:camera-names\n  ",[1878],{"id":403,"depth":1879,"text":1876},4,{"id":469,"depth":1863,"text":1881,"children":1882},"\n    vid:camera-open\n  ",[1883],{"id":474,"depth":1879,"text":1881},{"id":552,"depth":1863,"text":1885,"children":1886},"\n    vid:camera-select\n  ",[1887],{"id":557,"depth":1879,"text":1885},{"id":594,"depth":1863,"text":1889,"children":1890},"\n    vid:movie-select\n  ",[1891],{"id":599,"depth":1879,"text":1889},{"id":649,"depth":1863,"text":1893,"children":1894},"\n    vid:movie-open\n  ",[1895],{"id":654,"depth":1879,"text":1896},"\n    vid:movie-open filename\n  ",{"id":742,"depth":1863,"text":1898,"children":1899},"\n    vid:movie-open-remote\n  ",[1900],{"id":747,"depth":1879,"text":1901},"\n    vid:movie-open-remote url\n  ",{"id":817,"depth":1863,"text":1903,"children":1904},"\n    vid:close\n  ",[1905],{"id":822,"depth":1879,"text":1903},{"id":849,"depth":1863,"text":1907,"children":1908},"\n    vid:start\n  ",[1909],{"id":854,"depth":1879,"text":1907},{"id":905,"depth":1863,"text":1911,"children":1912},"\n    vid:stop\n  ",[1913],{"id":910,"depth":1879,"text":1911},{"id":937,"depth":1863,"text":1915,"children":1916},"\n    vid:status\n  ",[1917],{"id":942,"depth":1879,"text":1915},{"id":1022,"depth":1863,"text":1919,"children":1920},"\n    vid:capture-image\n  ",[1921],{"id":1027,"depth":1879,"text":1922},"\n    vid:capture-image width height\n  ",{"id":1263,"depth":1863,"text":1924,"children":1925},"\n    vid:set-time\n  ",[1926],{"id":1268,"depth":1879,"text":1927},"\n    vid:set-time seconds\n  ",{"id":1335,"depth":1863,"text":1929,"children":1930},"\n    vid:show-player\n  ",[1931],{"id":1340,"depth":1879,"text":1932},"\n    vid:show-player width height\n  ",{"id":1400,"depth":1863,"text":1934,"children":1935},"\n    vid:hide-player\n  ",[1936],{"id":1405,"depth":1879,"text":1934},{"id":1432,"depth":1863,"text":1938,"children":1939},"\n    vid:record-view\n  ",[1940],{"id":1437,"depth":1879,"text":1938},{"id":1479,"depth":1863,"text":1942,"children":1943},"\n    vid:record-interface\n  ",[1944],{"id":1484,"depth":1879,"text":1942},{"id":1533,"depth":1863,"text":1946,"children":1947},"\n    vid:record-source\n  ",[1948],{"id":1538,"depth":1879,"text":1946},{"id":1593,"depth":1863,"text":1950,"children":1951},"\n    vid:recorder-status\n  ",[1952],{"id":1598,"depth":1879,"text":1950},{"id":1668,"depth":1863,"text":1954,"children":1955},"\n    vid:reset-recorder\n  ",[1956],{"id":1673,"depth":1879,"text":1954},{"id":1691,"depth":1863,"text":1958,"children":1959},"\n    vid:start-recorder\n  ",[1960],{"id":1696,"depth":1879,"text":1958},{"id":1754,"depth":1863,"text":1962,"children":1963},"\n    vid:save-recording\n  ",[1964],{"id":1759,"depth":1879,"text":1965},"\n    vid:save-recording filename\n  ","Documentation for the Vid extension.","md",{"source":1969,"metadataOutputPath":1970,"projectConfig":1971,"language":1978,"inheritFrom":1986,"output":1985,"version":1972,"icon":1987,"extensionName":1988,"assetsRoot":1973},"../../external/extensions/vid/vid.md","content/vid.metadata.yaml",{"version":1972,"projectRoot":141,"scanRoot":1973,"outputRoot":1974,"defaults":1975,"engine":1981,"partials":1982,"dedupeIdenticalDiskWrites":1985},"7.0.4","/home/runner/work/Helio/Helio/external/extensions/vid","content",{"inheritFrom":1976,"language":1978,"output":1979,"extension":1967,"title":1980,"version":1972},[1977],0,"en",false,"NetLogo User Manual","mustache",{"directoryPaths":1983,"extensions":1984},[141],[1981,1967],true,[1977],"i-lucide-video",{"shortName":12,"fullName":21},"/vid",{"title":5,"description":1966},"UEtt71Zm642CkbiFj6x-qrYz5JStXbB3g6pxjU87tQ0",[1993,1998],{"title":1994,"path":1995,"stem":1996,"description":1997},"Version History","/versions","versions","History of NetLogo versions, including release notes, changes, and feature additions across different releases.",{"title":1999,"path":2000,"stem":2001,"description":2002},"Vid Extension Dictionary: camera-names","/vid/camera-names","vid/camera-names","Documentation for the camera-names primitive.",1777657790406]