{"id":207,"date":"2015-01-13T18:55:40","date_gmt":"2015-01-13T10:55:40","guid":{"rendered":"http:\/\/blog.haostudio.net\/hwp\/?p=207"},"modified":"2017-07-25T00:12:03","modified_gmt":"2017-07-24T16:12:03","slug":"%e5%9c%a8cubieboard%e4%b8%8a%e7%94%a8usb-webcam-%e4%be%86%e5%81%9a-real-time-video-streaming","status":"publish","type":"post","link":"https:\/\/blog.haostudio.net\/hwp\/%e5%9c%a8cubieboard%e4%b8%8a%e7%94%a8usb-webcam-%e4%be%86%e5%81%9a-real-time-video-streaming\/","title":{"rendered":"\u5728Cubieboard\u4e0a\u7528USB WebCam \u4f86\u505a real-time video streaming"},"content":{"rendered":"<!--more-->\n<h1>\u5728Cubieboard\u4e0a\u7528USB WebCam \u4f86\u505a real-time video streaming<\/h1>\n<h2>\u60f3\u6cd5<\/h2>\n<p>\u624b\u4e0a\u7684CubieTruck \u677f\u5b50\u662f\u7528Allwinner A20\u7684CPU, \u5176\u5167\u90e8\u6709\u4e00\u500bA hardware video unit  (VE), \u53ef\u4ee5\u7528\u4f86\u505aVideo Encoder\/Decoder. \u770b\u4e86\u4e00\u4e9b<a href=\"http:\/\/linux-sunxi.org\/CedarX\/Encoder\">sunxi \u793e\u7fa4\u7684\u8cc7\u6599CedarX<\/a>, \u53ca\u4e00\u4e9b\u7db2\u7ad9\u4e0a\u7684\u8a0e\u8ad6, \u5c31\u624b\u7662\u4e5f\u4f86\u958b\u59cb\u73a9\u73a9, \u76ee\u6a19\u662f\u5c07USB WebCam \u6293\u4e0b\u4f86\u7684\u5f71\u50cf, \u5373\u6642\u7528H.264 \u786c\u9ad4\u58d3\u7e2e, \u518d stream \u51fa\u53bb.  \u5728client \u7aef, \u6211\u7528VLC \u4f86\u6536\u770b\u9019\u500breal-time \u7684 live video.<\/p>\n<h2>Linux Kernel<\/h2>\n<p>\u9996\u5148\u8981\u4f7f\u7528CedarX \u7684Encoder, \u5728linux kernel \u4e2d\u8981\u6709sunxi&#095;mem \u53ca cedar driver. \u76ee\u524d<a href=\"https:\/\/github.com\/linux-sunxi\/linux-sunxi\">sunxi-linux<\/a>  \u53ea\u6709\u6574\u5408cedar driver, \u4f46\u662f\u4e26\u6c92\u6709\u628asunxi&#095;mem driver \u6574\u5408\u9032\u53bb, \u6240\u4ee5\u53c3\u8003\u4e86<a href=\"https:\/\/github.com\/juanfont\/linux-sunxi\/commit\/e8937b50bc749cf1069b6881e0189831381d342b\">juanfont\u7684patch<\/a>, \u5c07\u5176\u52a0\u5165\u5230sunxi-linux \u7684\u6700\u65b0kenel source \u4e2d.\n\u4e26\u4e14\u5728kernel config \u4e2d\u78ba\u8a8d\u6709\u4e0b\u5217\u8a2d\u5b9a:<\/p>\n<pre><code>CONFIG_SUNXI_PHYS_MEM_ALLOCATOR=y\nCONFIG_VIDEO_SUNXI_CEDAR=m\n<\/code><\/pre>\n<p>\u7136\u5f8c\u7de8\u8b6flinux kernel.<\/p>\n<p>\u6211\u5df2\u5728\u9019\u7bc7\u6587\u7ae0<a href=\"http:\/\/blog.haostudio.net\/hwp\/%E5%BE%9Esource-code-%E9%96%8B%E5%A7%8B%E6%89%93%E9%80%A0%E6%9C%80%E5%9F%BA%E6%9C%AC%E7%9A%84debian-linux-system\/\">&#8220;\u5f9esource code \u958b\u59cb\u6253\u9020\u6700\u57fa\u672c\u7684Debian linux system&#8221;<\/a> \u63d0\u5230\u7684script \u4e2d\u52a0\u5165sunxi&#095;mem driver \u7684\u652f\u63f4, \u6240\u4ee5\u6709\u8208\u8da3\u7684\u4eba, \u53ef\u4ee5\u5230<a href=\"https:\/\/github.com\/haotseng\/auto_build_cubieboard\">GitHub\u9019\u88cf<\/a> \u4e2d\u6293\u53d6\u9019\u4e9bscript \u4f86build linux kernel \u6bd4\u8f03\u5feb..<\/p>\n<h2>\u555f\u7528kernel module.<\/h2>\n<p>\u505a\u597dkernel image \u5f8c, \u5c07\u5176\u653e\u5165\u4f60\u539f\u6709\u7684root file system \u4e2d, \u4e26\u4e14\u5728\/etc\/modules \u52a0\u5165\u6b64\u884c:<\/p>\n<pre><code>sunxi_cedar_mod\n<\/code><\/pre>\n<p>\u7136\u5f8c\u555f\u52d5linux, \u8acb\u78ba\u8a8d\u5728\/dev\u4e2d\u6709\u4e0b\u5217\u5169\u500bdevice<\/p>\n<pre><code># ls \/dev\/cedar_dev \/dev\/sunxi_mem     \n\/dev\/cedar_dev  \/dev\/sunxi_mem \n<\/code><\/pre>\n<p>\u82e5\u51fa\u73fe\u9019\u5169\u500bdevice, \u8868\u793a\u4f60\u7684linux kernel \u662fok\u7684\u4e86.<\/p>\n<p>\u82e5\u8981\u8b93\u4e00\u822cuser \u4e5f\u80fd\u6709access \u9019\u5169\u500bdevice \u7684\u6b0a\u9650, \u8acb\u4fee\u6539\/etc\/udev \u7684\u5167\u5bb9\u5982\u4e0b:<\/p>\n<pre><code>echo &#039;KERNEL==&quot;sunxi_mem&quot;, MODE=&quot;0666&quot;&#039; &gt;&gt; \/etc\/udev\/rules.d\/80-cedar.rules\necho &#039;KERNEL==&quot;cedar_dev&quot;, MODE=&quot;0666&quot;&#039; &gt;&gt; \/etc\/udev\/rules.d\/80-cedar.rules\n<\/code><\/pre>\n<p>\u9806\u4fbf\u4e5f\u5c07USB webcam \u7684\u88dd\u7f6e\u4e5f\u6539\u6210\u8b93\u4e00\u822cuser \u4e5f\u80fdaccess.<\/p>\n<pre><code>echo &#039;KERNEL==&quot;video?&quot;, SUBSYSTEM==&quot;video4linux&quot;, MODE=&quot;0666&quot;&#039; &gt;&gt; \/etc\/udev\/rules.d\/81-v4l2.rules\n<\/code><\/pre>\n<h2>\u7de8\u8b6f libav<\/h2>\n<p><a href=\"https:\/\/libav.org\/\">libav<\/a> \u662f\u5f9e<a href=\"https:\/\/www.ffmpeg.org\/\">ffmpeg<\/a> fork \u51fa\u4f86\u7684project, \u4ed6\u4e5f\u53ef\u4ee5\u8aaa\u662fffmpeg \u7684\u5f8c\u7e7c. \u5b83\u5177\u6709\u8ddfffmepg \u4e00\u6a23\u7684\u529f\u80fd, \u53ca\u975e\u5e38\u76f8\u4f3c\u7684\u547d\u4ee4\u53c3\u6578. \u4ed6\u4e5f\u53ef\u4ee5\u62ff\u4f86\u505a live video stream . \u76ee\u524d\u8a31\u591alinux distribution \u5df2\u7d93\u5c07libav\u7d0d\u5165\u5176official packages\u4e2d\u4e86.  \u53ea\u662f\u76ee\u524dlibav \u53caffmpeg \u4e0d\u63d0\u4f9bA20 VE \u7684\u652f\u63f4.<\/p>\n<p>\u4f46\u662f\u7db2\u8def\u7e3d\u6709\u795e\u4eba\u51fa\u73fe. <a href=\"http:\/\/www.forum-cubieboard.de\/Thread-avconv-h-264-hardware-encoding-mit-cubietruck-mediatomb-transcoding\">alcantor \u7684\u5be6\u4f5c<\/a>, \u4ed6\u5df2\u7d93\u63d0\u4f9blibav \u7684<a href=\"http:\/\/pastebin.com\/k0NvyPqY\">patch file<\/a> , \u53ef\u4ee5\u4f7f\u7528A20 CedarX \u7684hardware encoder., \u6240\u4ee5\u6211\u4e5f\u4f9d\u6a23\u756b\u846b\u8606\u505a\u4e86\u4e00\u904d.<\/p>\n<p>\u8981\u5728CubieTruck \u677f\u5b50\u4e2dDebian \u8981\u7de8\u8b6flibav \u9700\u8981\u5148\u5b89\u88dd libx264-dev libmp3lame-dev libfaac-dev \u9019\u4e9blibrary.  \u53ea\u662flibfaac-dev \u4e26\u4e0d\u5728official package list \u4e2d.\n\u76ee\u524d\u662f\u7531 <a href=\"http:\/\/deb-multimedia.org\/\">deb-multimedia<\/a>\u4f86maintain.<\/p>\n<p>\u6240\u4ee5\u5148\u5c07deb-multimedia \u7d0d\u5165apt \u7684source list\u4e2d, \u4f5c\u6cd5\u5982\u4e0b:<\/p>\n<pre><code># echo &quot;deb http:\/\/www.deb-multimedia.org wheezy main non-free&quot; &gt;&gt; \/etc\/apt\/sources.list\n1. echo &quot;deb http:\/\/www.deb-multimedia.org wheezy-backports main&quot; &gt;&gt; \/etc\/apt\/sources.list\n1. apt-get update\n1. apt-get install deb-multimedia-keyring\n<\/code><\/pre>\n<p>\u7136\u5f8c\u5b89\u88dd libx264-dev libmp3lame-dev libfaac-dev packages<\/p>\n<pre><code># apt-get update\n1. apt-get install libx264-dev libmp3lame-dev libfaac-dev \n<\/code><\/pre>\n<p>\u82e5\u662f\u5728x86\u7684\u74b0\u5883\u4e0b, \u9084\u9700\u8981\u5b89\u88dd\n<em>yasm<\/em> \u9019\u500bpackage, \u4f46\u7531\u65bc\u76ee\u524d\u662f\u5728ARM\u7684\u74b0\u5883\u4e2d\u7de8\u8b6flibav, \u6240\u4ee5\u5c31\u4e0d\u7528\u88dd\u9019\u500b\u5957\u4ef6\u5566.<\/p>\n<p>\u82e5\u662f\u60f3\u8981\u9806\u4fbf\u7de8\u8b6favplay\u7a0b\u5f0f, \u9084\u9700\u8981\u5b89\u88ddSDL library.<\/p>\n<pre><code># apt-get install libsdl1.2-dev\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u4f86\u5c31\u662f\u6293\u53d6libav \u7684source code, sunxi-armhf libcedarv binaries \u53ca\u5176header file.\n\u7136\u5f8c\u52a0\u4e0a\u9019\u500b<a href=\"http:\/\/pastebin.com\/k0NvyPqY\">libav \u7684patch<\/a>. \u8a73\u7d30\u6b65\u9a5f\u8acb\u53c3\u8003<a href=\"http:\/\/www.forum-cubieboard.de\/Thread-avconv-h-264-hardware-encoding-mit-cubietruck-mediatomb-transcoding\">alcantor \u7684\u5be6\u4f5c<\/a>. \u5728\u9019\u88e1, \u6211\u5df2\u7d93\u5c07\u9019\u4e9bsource code \u6574\u5408\u5230\u9019\u500b<a href=\"https:\/\/github.com\/haotseng\/libav\">GitHub \u7684repository<\/a>\u4e86, \u6240\u4ee5\u6b65\u9a5f\u7c21\u5316\u5982\u4e0b:<\/p>\n<pre><code># git clone https:\/\/github.com\/haotseng\/libav.git -b A20-cedar\n1. cd libav\n1. .\/configure --enable-nonfree --enable-gpl --enable-vdpau --enable-libx264 --enable-libmp3lame --enable-libfaac\n1. make -j2\n<\/code><\/pre>\n<p>\u7de8\u8b6f\u5b8c\u5f8c, \u5c31\u53ef\u4ee5\u958b\u59cb\u6e2c\u8a66avconv \u662f\u5426\u80fd\u7528.<\/p>\n<h2>\u6e2c\u8a66 libav \u7684 avconv<\/h2>\n<p>\u6211\u4f7f\u7528\u7684\u662fMicrosoft \u7684 Microsoft\u00ae LifeCam HD-3000.  \u63d2\u5165USB WebCam \u5f8c, \u5148\u78ba\u8a8d\u662f\u5426\u6709\u652f\u63f4\u6b64USB webcam.<\/p>\n<pre><code># ls \/dev\/video?\n\/dev\/video0\n\n1. v4l2-ctl --all\nDriver Info (not using libv4l2):\n    Driver name   : uvcvideo\n    Card type     : Microsoft&reg; LifeCam HD-3000\n    Bus info      : usb-sw-ehci-1\n    Driver version: 3.4.103\n    Capabilities  : 0x04000001\n        Video Capture\n        Streaming\nFormat Video Capture:\n    Width\/Height  : 640\/480\n    Pixel Format  : &#039;YUYV&#039;\n    Field         : None\n    Bytes per Line: 1280\n    Size Image    : 68392364\n    Colorspace    : SRGB\nCrop Capability Video Capture:\n    Bounds      : Left 0, Top 0, Width 640, Height 480\n    Default     : Left 0, Top 0, Width 640, Height 480\n    Pixel Aspect: 1\/1\nVideo input : 0 (Camera 1: ok)\nStreaming Parameters Video Capture:\n    Capabilities     : timeperframe\n    Frames per second: 0.009 (71\/7635)\n    Read buffers     : 0\n<\/code><\/pre>\n<p>\u4f7f\u7528avconv \u4f86\u64f7\u53d6WebCam \u7684Video \u4e26\u4e14\u4f7f\u7528\u786c\u9ad4\u58d3\u7e2e\u6210H2.64\u683c\u5f0f<\/p>\n<pre><code># cd libav\n1. LD_LIBRARY_PATH=sunxicedar\/lib\/A20-sunxi-rt .\/avconv -y -f video4linux2 -s 640x480 -r 30 -i \/dev\/video0 -filter:v pad=&quot;trunc((iw+0)\/32)*32:ih:0:0&quot; -c:v cedarh264 -f mp4 test.mp4\n<\/code><\/pre>\n<p>\u9019\u6642\u5c31\u958b\u59cb\u9304\u88fdmp4 \u6a94\u6848\u4e86, \u82e5\u8981\u505c\u6b62, \u8acb\u6309ctrl-c \u7d50\u675f. \u628atest.mp4 copy \u5230\u4f60\u7684PC \u4f86\u770b\u770b, \u662f\u5426\u6709\u9304\u88fd\u6210\u529f.<\/p>\n<h2>\u958b\u59cb\u505a live video stream<\/h2>\n<p>avconv \u652f\u63f4\u5373\u6642\u4e32\u6d41\u5354\u5b9a(RTSP), \u8981\u4f7f\u7528\u4e4b\u524d, \u8981\u5148\u7522\u751fSDP file, \u5047\u8a2d\u4f60\u7684client \u7aefPC \u7684IP address \u70ba 192.168.1.1, \u5247\u7522\u751f\u65b9\u5f0f\u5982\u4e0b:<\/p>\n<pre><code># cd libav\n1. LD_LIBRARY_PATH=sunxicedar\/lib\/A20-sunxi-rt .\/avconv -y -f video4linux2 -s 640x480 -r 30 -i \/dev\/video0 -filter:v pad=&quot;trunc((iw+0)\/32)*32:ih:0:0&quot; -c:v cedarh264 -f rtp rtp:\/\/192.168.7.139:1234\n\navconv version v12_dev0-653-g64019ad, Copyright (c) 2000-2015 the Libav developers\n  built on Jan  9 2015 13:49:33 with gcc 4.6 (Debian 4.6.3-14)\n[video4linux2 @ 0x237f100] Estimating duration from bitrate, this may be inaccurate\nInput #0, video4linux2, from &#039;\/dev\/video0&#039;:\n  Duration: N\/A, start: 87106.926535, bitrate: 147456 kb\/s\n    Stream #0:0: Video: rawvideo [YUY2 \/ 0x32595559]\n      yuyv422, 640x480, 147456 kb\/s\n      30 fps, 1000k tbn\n[cedarh264 @ 0x2381340] cedarx_hardware_init\nD\/cedarv_osal_linux: (177) use sunxi_alloc_open\nD\/cedarv_osal_linux: (321) init hw ref count:1\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/venc: (232) venc_ctx-&gt;base_cfg.codectype = 0\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\nD\/cedarv_osal_linux: (523) cedar_sys_phymalloc_map\nD\/cedarv_osal_linux: (528) cedar_sys_phymalloc_map2\n[cedarh264 @ 0x2381340] Input Stream: 640x480@30 fps encode at 200000 bits\/s\nOutput #0, rtp, to &#039;rtp:\/\/192.168.1.1:1234&#039;:\n  Metadata:\n    encoder         : Lavf56.11.0\n    Stream #0:0: Video: libx264\n      yuv420p, 640x480, q=2-31, 200 kb\/s\n      30 fps, 90k tbn, 30 tbc\n    Metadata:\n      encoder         : Lavc56.11.0 cedarh264\nStream mapping:\n  Stream #0:0 -&gt; #0:0 (rawvideo (native) -&gt; h264 (cedarh264))\nSDP:\nv=0\no=- 0 0 IN IP4 192.168.1.1\ns=No Name\nc=IN IP4 192.168.1.1\nt=0 0\na=tool:libavformat 56.11.0\nm=video 1234 RTP\/AVP 96\nb=AS:200\na=rtpmap:96 H264\/90000\na=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0IAH+VAUB7I,aM4xEg==; profile-level-id=42001F\n\nPress ctrl-c to stop encoding\nframe=   93 fps=  8 q=-1.0 size=      82kB time=3.07 bitrate= 218.4kbits\/s    \n<\/code><\/pre>\n<p>\u6ce8\u610f\u756b\u9762\u4e2d&#8221;SDP:&#8221; \u4ee5\u4e0b\u7684\u6587\u5b57<\/p>\n<pre><code>v=0\no=- 0 0 IN IP4 192.168.1.1\ns=No Name\nc=IN IP4 192.168.1.1\nt=0 0\na=tool:libavformat 56.11.0\nm=video 1234 RTP\/AVP 96\nb=AS:200\na=rtpmap:96 H264\/90000\na=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0IAH+VAUB7I,aM4xEg==; profile-level-id=42001F\n<\/code><\/pre>\n<p>\u6309\u4e0bctrl-c , \u4e2d\u65b7avconv\u7a0b\u5f0f.\n\u5c07\u6b64\u6bb5\u6587\u5b57\u64f7\u53d6\u4e0b\u4f86, \u5b58\u6210my&#095;video&#095;stream.sdp, copy \u5230\u4f60\u7684PC \u7aef\u4e2d.\n\u5728\u4f60\u7684PC \u7aef, \u4f7f\u7528VLC \u4f86\u958b\u555fmy&#095;video&#095;stream.sdp \u6a94.\n\u7136\u5f8c\u5728CubieTruck \u677f\u5b50\u4e0a\u518d\u6b21\u57f7\u884c<\/p>\n<pre><code># LD_LIBRARY_PATH=sunxicedar\/lib\/A20-sunxi-rt .\/avconv -y -f video4linux2 -s 640x480 -r 30 -i \/dev\/video0 -filter:v pad=&quot;trunc((iw+0)\/32)*32:ih:0:0&quot; -c:v cedarh264 -f rtp rtp:\/\/192.168.7.139:1234\n<\/code><\/pre>\n<p>\u5927\u7d0410\u79d2\u5f8c, PC \u7aef\u7684VLC \u5c31\u53ef\u4ee5\u770b\u5230\u5373\u6642\u7684\u5f71\u50cf\u4e86.<\/p>\n<hr \/>\n<h3>\u53c3\u8003\u8cc7\u6599<\/h3>\n<ol>\n<li><a href=\"http:\/\/www.forum-cubieboard.de\/Thread-avconv-h-264-hardware-encoding-mit-cubietruck-mediatomb-transcoding\">avconv H.264 Hardware encoding mit Cubietruck (Mediatomb transcoding)<\/a><\/li>\n<li><a href=\"http:\/\/derekmolloy.ie\/streaming-video-using-rtp-on-the-beaglebone-black\/\">Streaming Video using RTP on the Beaglebone Black<\/a><\/li>\n<li><a href=\"http:\/\/blog.csdn.net\/fallenink\/article\/details\/8721887\">ffmpeg\/avconv\u4f7f\u7528\u5b66\u4e60\u7b14\u8bb0<\/a><\/li>\n<li><a href=\"http:\/\/blog.roodo.com\/rocksaying\/archives\/22568176.html\">ffmpeg\/avconv \u8f49\u6a94\u8207\u5f71\u7247\u9023\u63a5\u7bc4\u4f8b<\/a> <\/li>\n<li><a href=\"https:\/\/libav.org\/avconv.html\">avconv Documentation<\/a><\/li>\n<li><a href=\"http:\/\/www.cubieforums.com\/index.php?topic=2810.15\">ffmpeg H264 encoding with cedrus<\/a><\/li>\n<li><a href=\"http:\/\/hkgoldenmra.blogspot.tw\/2012\/12\/vlc-rtsp_27.html\">VLC \u5efa\u7acb RTSP \u4e32\u6d41\u4f3a\u670d\u5668<\/a><\/li>\n<li><a href=\"http:\/\/bdbaishitong.blog.163.com\/blog\/static\/20149308020132232266361\/\">H.264\u7684SPS\u548cPPS\u4e32 \u7b2c\u4e00\u4e2a\u5b57\u8282\u7684\u4f4e5\u4f4d\u5224\u65ad\u662f\u5426\u4e3a7(sps)\u6216\u80058(pps)<\/a><\/li>\n<li><a href=\"http:\/\/rueiyuanlu.blogspot.tw\/2010\/11\/linux-vlc-jtvlc.html\">\u5728 Linux \u4ee5 VLC \u642d\u914d Jtvlc \u9032\u884c\u5be6\u6cc1<\/a><\/li>\n<li><a href=\"http:\/\/albert-oma.blogspot.tw\/2012\/05\/sdp-session-description-protocol.html\">SDP (Session Description Protocol) \u95b1\u8b80\u5fc3\u5f97<\/a><\/li>\n<li><a href=\"http:\/\/jex.logdown.com\/posts\/176992-raspberry-pi-camera-rtsp-video-streaming\">Raspberry Pi camera RTSP \u5f71\u50cf\u4e32\u6d41<\/a><\/li>\n<li><a href=\"http:\/\/zh.wikipedia.org\/wiki\/%E5%8D%B3%E6%99%82%E4%B8%B2%E6%B5%81%E5%8D%94%E5%AE%9A\">\u5373\u6642\u4e32\u6d41\u5354\u5b9a<\/a><\/li>\n<li><a href=\"https:\/\/www.videolan.org\/doc\/streaming-howto\/en\/ch03.html\">Advanced streaming using the command line<\/a><\/li>\n<li><a href=\"http:\/\/ubuntuforums.org\/showthread.php?t=2046337\">Streaming webcam audio and video using ffmpeg\/avconv<\/a><\/li>\n<li><a href=\"http:\/\/unix.stackexchange.com\/questions\/58687\/how-to-stream-video-from-webcam-to-network-with-ffmpeg\">How to stream video from webcam to network with ffmpeg?<\/a><\/li>\n<\/ol>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,5],"tags":[73,77,76,75,74,78],"class_list":["post-207","post","type-post","status-publish","format-standard","hentry","category-embedded-system","category-multimedia","tag-avconv","tag-cedarx","tag-cubeiboard","tag-ffmpeg","tag-libav","tag-video-stream"],"_links":{"self":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts\/207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/comments?post=207"}],"version-history":[{"count":10,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts\/207\/revisions"}],"predecessor-version":[{"id":393,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts\/207\/revisions\/393"}],"wp:attachment":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/media?parent=207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/categories?post=207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/tags?post=207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}