{"id":877,"date":"2012-11-05T16:55:01","date_gmt":"2012-11-05T16:55:01","guid":{"rendered":"http:\/\/www.phillips321.co.uk\/?p=877"},"modified":"2014-02-03T14:47:01","modified_gmt":"2014-02-03T14:47:01","slug":"raspberrypi-webcam-mjpg-stream-cctv","status":"publish","type":"post","link":"https:\/\/www.phillips321.co.uk\/2012\/11\/05\/raspberrypi-webcam-mjpg-stream-cctv\/","title":{"rendered":"RaspberryPi + Webcam = mjpg stream \/ CCTV?"},"content":{"rendered":"<p>So I already have CCTV around the house and I was wondering just how cheaply I could add a few more cameras to my existing system using some webcams I have left over.<\/p>\n<p>So the first thing you&#8217;ll need to do is set up a basic <a href=\"http:\/\/www.raspbian.org\/\" target=\"_blank\">raspbian<\/a> system, I wont cover the details of those steps as they are outlined in numerous other locations.<\/p>\n<p>For reference this setup was built on a 512MB or a <a href=\"http:\/\/www.raspberrypi.org\/\" target=\"_blank\">raspberry pi<\/a> using raspbian image <a href=\"http:\/\/downloads.raspberrypi.org\/images\/raspbian\/2012-10-28-wheezy-raspbian\/2012-10-28-wheezy-raspbian.zip\" target=\"_blank\">2012-10-28-wheezy-raspbian.zip<\/a><\/p>\n<p>The webcam I have available for testing is a <a href=\"http:\/\/www.microsoft.com\/hardware\/en-us\/p\/lifecam-cinema\/H5D-00001#details\" target=\"_blank\">Microsoft LifeCam 720p 30fps<\/a> , the important thing to note is that it outputs as mjpg which means the raspberrt pi will not need to do any CPU intensive encoding.<\/p>\n<div class=\"codecolorer-container bash vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"bash codecolorer\">phillips321<span class=\"sy0\">@<\/span>raspberrypi <span class=\"sy0\">\/<\/span>etc<span class=\"sy0\">\/<\/span>init.d $ lsusb<br \/>\nBus 001 Device 004: ID 045e:075d Microsoft Corp. LifeCam Cinema<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>The first thing to do is install some required dependencies:<\/p>\n<div class=\"codecolorer-container bash vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"kw2\">sudo<\/span> <span class=\"kw2\">apt-get install<\/span> subversion libv4l-dev libjpeg8-dev imagemagick fswebcam<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Then check that your webcam supports mjpg:<\/p>\n<div class=\"codecolorer-container bash vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"bash codecolorer\">phillips321<span class=\"sy0\">@<\/span>raspberrypi ~ $ <span class=\"kw2\">sudo<\/span> fswebcam <span class=\"re5\">--verbose<\/span><br \/>\n<span class=\"re5\">---<\/span> Opening <span class=\"sy0\">\/<\/span>dev<span class=\"sy0\">\/<\/span>video0...<br \/>\nTrying <span class=\"kw3\">source<\/span> module v4l2...<br \/>\n<span class=\"sy0\">\/<\/span>dev<span class=\"sy0\">\/<\/span>video0 opened.<br \/>\n<span class=\"sy0\">&lt;<\/span>SNIP<span class=\"sy0\">&gt;<\/span><br \/>\nsrc_v4l2_set_pix_format,<span class=\"nu0\">541<\/span>: Device offers the following V4L2 pixel formats:<br \/>\nsrc_v4l2_set_pix_format,<span class=\"nu0\">554<\/span>: <span class=\"nu0\">0<\/span>: <span class=\"br0\">&#91;<\/span>0x56595559<span class=\"br0\">&#93;<\/span> <span class=\"st_h\">'YUYV'<\/span> <span class=\"br0\">&#40;<\/span>YUV <span class=\"nu0\">4<\/span>:<span class=\"nu0\">2<\/span>:<span class=\"nu0\">2<\/span> <span class=\"br0\">&#40;<\/span>YUYV<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nsrc_v4l2_set_pix_format,<span class=\"nu0\">554<\/span>: <span class=\"nu0\">1<\/span>: <span class=\"br0\">&#91;<\/span>0x47504A4D<span class=\"br0\">&#93;<\/span> <span class=\"st_h\">'MJPG'<\/span> <span class=\"br0\">&#40;<\/span>MJPEG<span class=\"br0\">&#41;<\/span><br \/>\nUsing palette MJPEG<br \/>\n<span class=\"sy0\">&lt;<\/span>SNIP<span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>If it does that&#8217;s great, otherwise you&#8217;ll need to do a small bit of messing around to ensure the stream gets converted.<\/p>\n<p>Now we need to install mjpg_streamer, to do this download the source via svn and then compile it:<\/p>\n<div class=\"codecolorer-container bash vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"kw2\">svn checkout<\/span> http:<span class=\"sy0\">\/\/<\/span>svn.code.sf.net<span class=\"sy0\">\/<\/span>p<span class=\"sy0\">\/<\/span>mjpg-streamer<span class=\"sy0\">\/<\/span>code<span class=\"sy0\">\/<\/span> mjpg-streamer-code<br \/>\n<span class=\"kw3\">cd<\/span> mjpg-streamer-code<span class=\"sy0\">\/<\/span>mjpg-streamer<br \/>\n<span class=\"kw2\">make<\/span> <span class=\"re2\">USE_LIBV4L2<\/span>=<span class=\"kw2\">true<\/span> clean all<br \/>\n<span class=\"kw2\">sudo<\/span> <span class=\"kw2\">make<\/span> <span class=\"re2\">DESTDIR<\/span>=<span class=\"sy0\">\/<\/span>usr <span class=\"kw2\">install<\/span><br \/>\n<span class=\"kw3\">cd<\/span> ..<span class=\"sy0\">\/<\/span>.. ; <span class=\"kw2\">rm<\/span> <span class=\"re5\">-rf<\/span> mjpg-streamer-code<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Now test that you can stream your webcam using:<\/p>\n<div class=\"codecolorer-container bash vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"bash codecolorer\">mjpg_streamer <span class=\"re5\">-i<\/span> <span class=\"st0\">&quot;\/usr\/lib\/input_uvc.so -d \/dev\/video0&quot;<\/span> <span class=\"re5\">-o<\/span> <span class=\"st0\">&quot;\/usr\/lib\/output_http.so -p 80 -w \/var\/www\/mjpg_streamer -n&quot;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>and access the stream using <a href=\"http:\/\/IP\/?action=stream\" target=\"_blank\">http:\/\/IP\/?action=stream<\/a>.<\/p>\n<p>If you get bitched at about user per missing accessing V4L then you&#8217;ll need to add your user to the video group like so:<\/p>\n<div class=\"codecolorer-container bash vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"bash codecolorer\">phillips321<span class=\"sy0\">@<\/span>raspberrypi ~ $ mjpg_streamer <span class=\"re5\">-i<\/span> <span class=\"st0\">&quot;\/usr\/lib\/input_uvc.so -d \/dev\/video0&quot;<\/span> <span class=\"re5\">-o<\/span> <span class=\"st0\">&quot;\/usr\/lib\/output_http.so -p 80 -w \/var\/www\/mjpg_streamer -n&quot;<\/span><br \/>\nMJPG Streamer Version: <span class=\"kw2\">svn<\/span> rev: <span class=\"nu0\">3<\/span>:<span class=\"nu0\">172<\/span><br \/>\n&nbsp;i: Using V4L2 device.: <span class=\"sy0\">\/<\/span>dev<span class=\"sy0\">\/<\/span>video0<br \/>\n&nbsp;i: Desired Resolution: <span class=\"nu0\">640<\/span> x <span class=\"nu0\">480<\/span><br \/>\n&nbsp;i: Frames Per Second.: <span class=\"nu0\">5<\/span><br \/>\n&nbsp;i: Format............: MJPEG<br \/>\nERROR opening V4L interface: Permission denied<br \/>\n&nbsp;Init v4L2 failed <span class=\"sy0\">!!<\/span> <span class=\"kw3\">exit<\/span> fatal<br \/>\n&nbsp;i: init_VideoIn failed<br \/>\nphillips321<span class=\"sy0\">@<\/span>raspberrypi ~ $ <span class=\"kw2\">sudo<\/span> usermod <span class=\"re5\">-a<\/span> <span class=\"re5\">-G<\/span> video phillips321<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Once you have it working you can adjust the webcam resolution and fps using:<\/p>\n<div class=\"codecolorer-container text vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"text codecolorer\">[-r | --resolution ]...: the resolution of the video device, can be one of the following strings: &nbsp;QSIF QCIF CGA QVGA CIF VGA SVGA XGA SXGA or a custom value like the following example: 640x480<br \/>\n[-f | --fps ]..........: frames per second<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Now once you have your command to start the stream you need to set it to run at boot. To do this we&#8217;ll need to create an init script. Copy the following to a file called \/etc\/init.d\/mjpg_streamer.sh and make is executable. Here&#8217;s mine which you can copy\/paste and then change for your own use:<\/p>\n<div class=\"codecolorer-container bash vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"co0\">#!\/bin\/sh<\/span><br \/>\n<span class=\"co0\"># \/etc\/init.d\/mjpg_streamer.sh<\/span><br \/>\n<span class=\"co0\"># v0.2 phillips321.co.uk<\/span><br \/>\n<span class=\"co0\">### BEGIN INIT INFO<\/span><br \/>\n<span class=\"co0\"># Provides: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mjpg_streamer.sh<\/span><br \/>\n<span class=\"co0\"># Required-Start: &nbsp; &nbsp;$network<\/span><br \/>\n<span class=\"co0\"># Required-Stop: &nbsp; &nbsp; $network<\/span><br \/>\n<span class=\"co0\"># Default-Start: &nbsp; &nbsp; 2 3 4 5<\/span><br \/>\n<span class=\"co0\"># Default-Stop: &nbsp; &nbsp; &nbsp;0 1 6<\/span><br \/>\n<span class=\"co0\"># Short-Description: mjpg_streamer for webcam<\/span><br \/>\n<span class=\"co0\"># Description: &nbsp; &nbsp; &nbsp; Streams \/dev\/video0 to http:\/\/IP\/?action=stream<\/span><br \/>\n<span class=\"co0\">### END INIT INFO<\/span><br \/>\n<br \/>\nf_message<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;[+] $1&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co0\"># Carry out specific functions when asked to by the system<\/span><br \/>\n<span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;$1&quot;<\/span> <span class=\"kw1\">in<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; start<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;Starting mjpg_streamer&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mjpg_streamer <span class=\"re5\">-b<\/span> <span class=\"re5\">-i<\/span> <span class=\"st0\">&quot;\/usr\/lib\/input_uvc.so -d \/dev\/video0&quot;<\/span> <span class=\"re5\">-o<\/span> <span class=\"st0\">&quot;\/usr\/lib\/output_http.so -p 80 -w \/var\/www\/mjpg_streamer -n&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">sleep<\/span> <span class=\"nu0\">2<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;mjpg_streamer started&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">;;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; stop<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;Stopping mjpg_streamer...&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">killall<\/span> mjpg_streamer<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;mjpg_streamer stopped&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">;;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; restart<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;Restarting daemon: mjpg_streamer&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">killall<\/span> mjpg_streamer<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mjpg_streamer <span class=\"re5\">-b<\/span> <span class=\"re5\">-i<\/span> <span class=\"st0\">&quot;\/usr\/lib\/input_uvc.so -d \/dev\/video0&quot;<\/span> <span class=\"re5\">-o<\/span> <span class=\"st0\">&quot;\/usr\/lib\/output_http.so -p 80 -w \/var\/www\/mjpg_streamer -n&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">sleep<\/span> <span class=\"nu0\">2<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;Restarted daemon: mjpg_streamer&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">;;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; status<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">pid<\/span>=<span class=\"sy0\">`<\/span><span class=\"kw2\">ps<\/span> <span class=\"re5\">-A<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">grep<\/span> mjpg_streamer <span class=\"sy0\">|<\/span> <span class=\"kw2\">grep<\/span> <span class=\"re5\">-v<\/span> <span class=\"st0\">&quot;grep&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">grep<\/span> <span class=\"re5\">-v<\/span> mjpg_streamer. <span class=\"sy0\">|<\/span> <span class=\"kw2\">awk<\/span> <span class=\"st_h\">'{print $1}'<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">head<\/span> <span class=\"re5\">-n<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">`<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span> <span class=\"re5\">-n<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$pid<\/span>&quot;<\/span> <span class=\"br0\">&#93;<\/span>;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;mjpg_streamer is running with pid <span class=\"es3\">${pid}<\/span>&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;mjpg_streamer was started with the following command line&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">cat<\/span> <span class=\"sy0\">\/<\/span>proc<span class=\"sy0\">\/<\/span><span class=\"co1\">${pid}<\/span><span class=\"sy0\">\/<\/span>cmdline ; <span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;Could not find mjpg_streamer running&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">fi<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">;;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f_message <span class=\"st0\">&quot;Usage: $0 {start|stop|status|restart}&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">exit<\/span> <span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">;;<\/span><br \/>\n<span class=\"kw1\">esac<\/span><br \/>\n<span class=\"kw3\">exit<\/span> <span class=\"nu0\">0<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Once that is done you&#8217;ll need to instruct the command to be run at boot, you can do that using the following:<\/p>\n<div class=\"codecolorer-container text vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"text codecolorer\">sudo chmod +x \/etc\/init.d\/mjpg_streamer.sh<br \/>\nsudo update-rc.d mjpg_streamer.sh defaults<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Now reboot and test that it&#8217;s working \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So I already have CCTV around the house and I was wondering just how cheaply I could add a few more cameras to my existing system using some webcams I have left over. So the first thing you&#8217;ll need to do is set up a basic raspbian system, I wont cover the details of those [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[332,5,334,336,331,330,335,333],"_links":{"self":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/877"}],"collection":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/comments?post=877"}],"version-history":[{"count":16,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/877\/revisions"}],"predecessor-version":[{"id":1157,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/877\/revisions\/1157"}],"wp:attachment":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/media?parent=877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/categories?post=877"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/tags?post=877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}