User Tools

Site Tools


work:quadcopter

개발

## ar9331 보드 만들기

### USB 허브칩 ftdi GL850G

TP WR703N의 확장 보드: GL850사용해서 만든 허브 http://www.kean.com.au/oshw/WR703N/WR703N%20Expander%20v1.pdf

arduino yun에서 RT8010-33GQW라는 step down dcdc 사용합 1.5mhz 1A


## 알리바바에 파는 ar9331 보드

![](http://i.imgur.com/ujk9RQQ.png)

http://www.alibaba.com/product-gs/1333014406/150Mbps_Wireless_Module_AR9331_security_and.html

이런거 사서 써도 되겠다. 100개 US $5 - 30 / Piece Get Latest Price 크기 50×30


![](http://i.imgur.com/yDcJLr7.png) http://www.alibaba.com/product-gs/1242172281/OPENWRT_module_WLAN_module_WiFi_module.html

FOB Price: US $10 - 13 /Port: Guangzhou/ Minimum Order Quantity: 1


![](http://i.imgur.com/K4PFu7f.png)

http://www.alibaba.com/product-gs/761550814/ar9331_module.html

US $9 - 16 요거 작네(27.5×40.5) carambola2랑 비슷한 수준; 그런데 1000개가 기본 수량


### TL-WR703N Reverse Engineering

* https://github.com/Squonk42/TL-WR703N * http://squonk42.github.io/TL-WR703N/


## openwrt configure for tplink 703N

steps:

1. buy an tplink 703N, if it is A17 version , need to download an old firmware from tplink http://service.tp-link.com.cn/download/20131/TL-WR703N_V1_121204.rar 2. download the bin to downgrade the firmware 3. download tplink specific firmware with squre factory os 4. flash the firmware within the web ui 5. after reboot, link lan with laptop, and telnet into the system 6. type passwd to set new passwd for root, reboot and ssh to system with new passwd 7. change /etc/config/wireless file and reboot to enale wifi


STM32F Hard fault

http://www.freertos.org/FreeRTOS_Support_Forum_Archive/February_2012/freertos_STM32F2_hard_fault_5015439.html

http://www.coactionos.com/embedded-design/133-effective-use-of-arm-cortex-m3-svcall.html

http://sourceforge.net/p/freertos/discussion/382005/thread/109acbfc 좀 이유 설명

Hard Fault freertos xPortPendSVHandler

http://blog.frankvh.com/2011/12/07/cortex-m3-m4-hard-fault-handler/

http://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html

http://sourceforge.net/p/freertos/discussion/382005/thread/49667801 Mike, I've seen exactly this problem several times on the 205 and it was generally caused by the main 'C' stack being too small or corrupted.

http://www.freertos.org/RTOS-Cortex-M3-M4.html

. If you are using an STM32 with the STM32 driver library then ensure all the priority bits are assigned to be preempt priority bits by calling NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); before the RTOS is started.

이미 NVIC_PriorityGroup_4로 되어 있네ㅣ

스택 사이즈? 시스템 테스크를 2배에서 4배로 스택 크기를 수정 → 그래도 죽네;; 다른때보다 3배정도는 늦게 죽는다.

http://www.freertos.org/a00111.html

Uart에 이걸 넣음

vTaskSuspendAll() xTaskResumeAll()

The stack in use when you call main() is recycled for use by all interrupt handlers.


Heli controls are like following

Throttle/Collective Pitch == up/down Rudder == yaw, rotate left/right Elevator == (bank)/fly forward/backward Aileron == (bank)/fly sideways left/right

openpilot

https://github.com/zhao0079/openpilot/blob/master/hardware/Production/CopterControl/CopterControl%20Schematic.pdf

체크 리스트 - http://wiki.openpilot.org/display/Doc/Hardware+FAQ#HardwareFAQ-ESCsandBESCs BEC 영향 없나? - mbed로

- openpilot esc - x copter, quard copter http://i.imgur.com/AesvWf9.png

esc 세팅 http://wiki.openpilot.org/display/Doc/TurboPWM+ESC's#TurboPWMESC%27s-Whyisthisimportant%3F http://wiki.openpilot.org/display/Doc/RapidESC+Database 데이터베이스

http://git.openpilot.org/browse/OpenPilot

http://www.rc-airplane-world.com/rc-airplane-controls.html

pwm 코드 수정 - http://guyvo-cortex.blogspot.kr/2009_04_01_archive.html - 50mhz 1ms~2ms 로 데이터 수정!

pid 코드 수정 - http://forum.bitcraze.se/viewtopic.php?f=6&t=192 - pid 값 수정해서 스테이블한 상태 만들기

modules/interface/pid.h

http://forum.bitcraze.se/viewtopic.php?f=6&t=192

crazyflie는 기본으로 attitude mode? rate 모드는 뭐지?

Project Quadcopter

http://quadcopter.wordpress.com/

http://wiki.bitcraze.se/_media/projects:crazyflie:hardware:crazyflie_control_board_schematics_rev.f.pdf http://wiki.bitcraze.se/_media/projects:crazyflie:hardware:crazyflie_control_board_rev.f_-_component_placement_top.pdf

http://shop.8devices.com/wifi4things/carambola m-bugs altitude holding

쿼드콥터 만들기 - 8MIPS로 400hz? 제어기 성능보다 추저성능이 중요. http://blog.naver.com/PostList.nhn?from=postList&blogId=solsol8711&categoryNo=15&currentPage=2 - 인터럽트 사용해서 쓰는uart와 i2c가 추적 성능을 낮게 만들지.도 nrf24는 dma로 했나?

칼만필터: http://realsys.co.kr/data/hobby/6_%EC%B9%BC%EB%A7%8C%ED%95%84%ED%84%B0.pdf

## crazyflie

https://bitbucket.org/phiamo/crazyflie-firmware/commits/all

http://forum.bitcraze.se/viewtopic.php?f=11&t=128

슬라이딩 어떻게 하지?

![](accelerometers)

Accel보다 자이로만 사용했을때 계속 밀린다.

GyroBias 값을 0으로 해보았는데, 흠 그럼 더 밀린다.

Gyro에 low pass filter를 적용 해보자!

→ lpf와 average filter(250hz) 적용

low pass filter가 별로 나아지는것은 없어보이는데

  GyroBias가 지대한 영향을 끼치는것 같다. 

분산, 평균을 이용해서 추세를 보는듯.

0.296548, -0.452743, 3.047594 gyro.x: 0.0, gyro.y: 0.0, gyro.z: -0.061035, acc.x: -0.007568, acc.y: 0.004882, acc.z 1.000732 0.295663, -0.450056, 3.115887 gyro.x: 0.030517, gyro.y: 0.0, gyro.z: -0.061035, acc.x: -0.007934, acc.y: 0.004272, acc.z 1.001464 0.292134, -0.452814, 3.190397 gyro.x: 0.0, gyro.y: 0.122070, gyro.z: 0.0, acc.x: -0.007568, acc.y: 0.005126, acc.z 0.999267 0.236752, -0.417580, 3.254106


bias계산 안하고 그냥 손으로 넣은게 나을려나?

bias계산해서 넣으니깐 한쪽으로 계속 치우친다.

날개를 바꾸는것도 이상해.


#### Reading accelerometers

AccelBias 를 사용해서 기울어진 것 찾기.

## openpilot

- http://wiki.openpilot.org/display/Doc/OpenPilot+Flight+Control+board+Common+issues


https://bitbucket.org/danhamilt1/crazyflie-firmware/commits/7445a483fb44a25e730408e293088258be3d11e5?at=stabalizer

모터를 exp? 왜 이렇게 계산하냐?

 motorPowerM1 = limitThrust(calculatePower(thrust + pitch + yaw));
 motorPowerM2 = limitThrust(calculatePower(thrust - roll - yaw));
 motorPowerM3 =  limitThrust(calculatePower(thrust - pitch + yaw));
 motorPowerM4 =  limitThrust(calculatePower(thrust + roll - yaw));

static int32_t calculatePower(int32_t thrust) {

 int32_t value = 0;
 

- value = ipow(UINT16_MAX, -0.5) * ipow(thrust, 1.5); + value = fastPow(UINT16_MAX, -0.5) * fastPow(thrust, 1.5);

 return value;

}

+double fastPow(double a, double b) { + union { + double d; + int x[2]; + } u = { a }; + u.x[1] = (int)(b * (u.x[1] - 1072632447) + 1072632447); + u.x[0] = 0; + return u.d; +}

+static double fastPrecisePow(double a, double b) { + calculate approximation with fraction of the exponent + int e = (int) b; + union { + double d; + int x[2]; + } u = { a }; + u.x[1] = (int)((b - e) * (u.x[1] - 1072632447) + 1072632447); + u.x[0] = 0; + + exponentiation by squaring with the exponent's integer part + double r = u.d makes everything much slower, not sure why + double r = 1.0; + while (e) { + if (e & 1) { + r *= a; + } + a *= a; + e »= 1; + } + + return r * u.d; +} + —- 안드로이드 콘트롤러 <2013-09-20 금 15:31> 이어서 시작 andorid vm 버전 avd 4.3과 avd 4.0.3 설치 두개 설치 E:\adt-bundle-windows-x86_64-20130911\adt-bundle-windows-x86_64-20130911\eclipse 4.3에서 한글이 안나오네. 4.0.3으로 가자! - http://8devices.com/wiki_carambola/doku.php/carambola_robot1 - http://lukse.lt/uzrasai/2013-01-carambola-powered-robot-v2/ - http://github.com/Lukse/cara-rover2 android controllerd rover application cara-rover2를 다운받아서 우선 설치. http://trackfield.webcam.oregonstate.edu/axis-cgi/mjpg/video.cgi?resolution=800x600&amp%3bdummy=1333689998337 mjpeg jni사용해서 빠름 시간나면 안드로이드 말고 pc용 클라이언트도 하나 만들어야 겠다. pyside가 좋겠어. http://forums.thefoundry.co.uk/phpBB2/viewtopic.php?p=37955&sid=c01d69e25a98b521d088f57b582a7232 여기보니 pyqt가 낫다고 하네;;; pc client 수정해서 동작 하도록 만들고 있음 ← 5:3 (97, 114, 100, 32, 102, 97, 117, 108, 116, 32, 104, 97, 110, 100, 108, 101, 114, 93, 10, 82, 48, 32, 61, 32, 50, 48, 48, 48, 53, 48, 48, 48, 10, 82, 49, 32, 61, 32, 48, 10, 82, 50, 32, 61, 32, 48, 10, 82, 51, 32, 61, 32, 50, 48, 48, 48, 48, 50, 49, 67, 10, 82, 49, 50, 32, 61, 32, 50, 48, 10, 76, 82) 그런데 이거 뱃으면서 죽어버렸네.. 3채널은 있지도 않은데. http://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html 이건 HardFault 메시지? gdbㄷ로 디버깅 필요. ====== Camera ====== 카메라 모듈 USB 카메라 - CMOS USB 2MP 167도 Ø28mm http://www.alibaba.com/product-gs/469335926/CMOS_USB_2MP_Wide_Angle_167.html - 3.0MP HD USB 19mmx19mm 49달러 http://www.aliexpress.com/store/product/3-0MP-compact-HD-USB-camera-module-auto-iris-hardware-snapshot/903991_649483245.html - H264 32×32 http://www.alibaba.com/product-gs/1351816205/720P_H_264_MJPEG_USB2_0.html - 길쭉한 형태 http://www.alibaba.com/product-gs/1162789849/1_5_usb_CMOS_camera_module.html - cmos usb 3.2mp 29mm 원형 http://huentek.com/board/k_sub02_04.php ] - DFM 42BUC03-ML http://www.theimagingsource.com/en_US/products/oem-cameras/usb-cmos-color/dfm42buc03ml/ H: 30 mm, W: 30 mm, L: 15 mm - pogolm —- http://staticwave.ca/source/uvccapture/ 구입 —- 휴엔텍 usb캠 디멘젼 - 1.3M 8×27.3 http://i.imgur.com/FRxUfnS.png - 3M 19×19 http://i.imgur.com/lpHuK8n.png camera mjpg_streamer -i “input_uvc.so -d /dev/video0 -f 10 -r 1280×720” -o output_http.so “ “로 묶어야 하네 mjpg_streamer -i “input_uvc.so -d /dev/video0 -f 10 -r 1280×1024 ” -o “output_file.so -f /root/ -d 1500” http://www.youtube.com/watch?v=eLAqMYy_CEE http://abatis.org.uk/quadv1/ uvcaptuer를 사용해서 디코딩해서 뿌리는 방식 Raspberry Pi Camera Streaming Application (with real Pi camera!) - http://www.youtube.com/watch?v=8cFXnVDa5Cc h264 streaming하는 방법이 있구만 gst-launch-0.10 -v v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=640,height=480' ! ffmpegcolorspace ! x264enc ! rtph264pay ! udpsink host=192.168.2.112 port=9078 http://blog.chinaunix.net/uid-22666248-id-282313.html http://www.unimv.com/en/productshow.asp?id=892 ar9331로 이걸로 h.264하는데 리눅스에서 인코딩 http://www.trans-omni.co.uk/capture/v4l2capturetoH264.c http://wiki.oz9aec.net/index.php/Gstreamer_cheat_sheet http://lists.freedesktop.org/archives/gstreamer-embedded/2012-October/000918.html mjpeg → yuv → x264 http://ffmpeg.gusari.org/viewtopic.php?f=12&t=816&start=10 c920 신정동에서 구입 - 계산서 가능한지? - 02-2654-9956 (컴텍/ 옥션) - http://itempage3.auction.co.kr/DetailView.aspx?ItemNo=A788219452&frm3=V2 c930e http://prod.danawa.com/info/?pcode=2225675 h.264 : https://github.com/vecio/MediaCodecDemo/blob/master/src/io/vec/demo/mediacodec/DecodeActivity.java mediacodec으로 디코딩. gstreamer ffserver - http://ffmpeg.org/pipermail/ffserver-user/2013-January/000277.html raspvl4 mkfifo stream.video.h264 ./raspiv4l.bin -o > stream.video.h264 & ./ffmpeg -re -f h264 -i stream.video.h264 -c copy -f flv “${RTMP_URL}/${KEY} flashver=FME/2.5\20(compatible;\20FMSc\201.0)” http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=41844&start=50 crtmpserver를 띄어서 ffmpeg로 /dev/video0 보냅 http://wiki.alessandro.delgallo.net/wiki/index.php/Crtmpserver —- ffserver: http://ffmpeg.org/trac/ffmpeg/wiki/Streaming%20media%20with%20ffserver —- 안드로이드에서 h.264로 스트리밍 서버 RtspServer https://github.com/fyhertz/libstreaming https://code.google.com/p/spydroid-ipcamera/ —- 안드로이드에서 rtsp videoview 사용 http://stackoverflow.com/questions/11715702/cannot-play-rtsp-video-in-videoview-in-samsung-galaxy-s2 http://stackoverflow.com/questions/3937241/reduce-video-buffering 버퍼링시간 줄이기 —- videoview를 사용하고, 그래픽을 overlay함 : http://stackoverflow.com/questions/17899474/draw-overlay-hud-on-android-videoview https://github.com/arthurbenemann/droidplanner —- # droidplander도 rtsp사용하네 쿼드 돌아다니는거 설정 가능하게 만든 앱. 괜찮네. http://stackoverflow.com/questions/17899474/draw-overlay-hud-on-android-videoview/18221800#18221800 https://github.com/arthurbenemann/droidplanner/wiki/Build-Setup - http://ardupilot.com/forum/viewforum.php?f=15 droidplaner forum —- vlc “sudo -u pi vlc-wrapper -I dummy -vvv v4l2:/dev/video0 :v4l2-width=352 :v4l2-height=288 :v4l2-fps=10 :sout='#transcode{vcodec=MJPG,vb=500,fps=10,scale=1,width=352,height=288,acodec=none}:std{mux=ts,access=udp{ttl=10},dst=mydyndnshostname.domain.no:2000}' :sout-all :sout-keep”

“C:\Program Files (x86)\VideoLAN\VLC\vlc.exe” udp:@226.0.1.150:2000 –sout=#transcode{vcodec=MJPG,vb=500,fps=10,scale=1,width=352,height=288,acodec=none}:duplicate{dst=http{mux=mpjpeg,dst=:8080/},dst=display} :sout-all :sout-keep —- 보내기 ./vlc –live-caching 0 –sout-rtp-caching 0 -vvv v4l2:/dev/video1 :v4l2-standard= :v4l2-dev=/dev/video0 –v4l2-width=352 –v4l2-height=288 –sout-x264-tune zerolatency –sout-x264-bframes 0 –sout-x264-options repeat-headers=1 –sout-x264-aud –sout-x264-vbv-maxrate=1000 –sout-x264-vbv-bufsize=512 –sout-x264-slice-max-size=1460 –sout '#duplicate{dst=“transcode{vcodec=h264,vb=384,scale=0.75}:rtp{dst=130.149.228.93,port=49170}”,dst=display}' http://devcon-1.blogspot.kr/2013/01/ffmpegvlc-command-lines-linux.html

—- vlc c920에서 다이렉트로 h.264 보냄 cvlc v4l2:/dev/video1:chroma=h264:width=800:height=600 –sout '#standard{access=http,mux=ts,dst=localhost:8080,name=stream,mime=video/ts}' -vvv http://wiki.matthiasbock.net/index.php/Logitech_C920,_streaming_H.264 —-VLC is a popular open source video player that can capture, playback, streaming video. It's live performance is not that great. v4l capture and streaming (version 1.0.2) /usr/local/av/bin/vlc -I dummy v4l: :v4l-vdev=/dev/video :v4l-adev= :v4l-norm=1 :v4l-frequency=-1 :v4l-caching=100 :fps=15 :v4l-channel=0 :v4l-width=480 :v4l-height=360 :v4l-chroma=RGBO –verbose=0 -I telnet –telnet-port=8000 –sout=#transcode{venc=x264{keyint=10, vbv-maxrate=256},vb=256, width=480, height=360, fps=15}:std{access=udp{ttl=32}, mux=ts, dst=127.0.0.1:32816}

  v4l2 capture and streaming (version 1.1.9)
      /opt/mutualink/media/bin/vlc -I dummy v4l2:///dev/video0 :v4l2-adev= :v4l2-standard=3 :v4l2-frequency=-1 :v4l2-caching=100 :fps=14 :v4l2-channel=0 :v4l2-width=480 :v4l2-height=352 :v4l2-chroma=YUV2 --verbose=0 -I telnet --telnet-port=8000 --sout=#transcode{venc=x264{keyint=10, tune=zerolatency, vbv-maxrate=256},vb=256, width=480, height=352, fps=14}:std{access=udp{ttl=32}, mux=ts, dst=127.0.0.1:45592}
  v4l2 H.264 capture and streaming (modified version for capturing h.264 video)
      /opt/mutualink/media/bin/vlc -I dummy v4l2:///dev/video0 :v4l2-adev= :v4l2-standard=3 :v4l2-frequency=-1 :v4l2-caching=100 :fps=14 :v4l2-channel=0 :v4l2-width=480 :v4l2-height=352 :v4l2-chroma=H264 :v4l2-set-ctrls={video_bitrate=200000,video_gop_size=10} --verbose=0 -I telnet --telnet-port=8000 --sout=#std{access=udp{ttl=32}, mux=ts, dst=127.0.0.1:47309}
   
  v4l2 capture RTP streaming output
      /usr/local/mlinkmedia/bin/cvlc v4l2:///dev/video1:width=480:height=360 -I telnet --telnet-port=8000 --sout="#transcode{venc=x264{keyint=50,vbv-maxrate=256},vb=256,acodec=none}:rtp{mux=ts,dst=192.168.10.121,port=1234}"
      
 v4l2 capture RTSP streaming output
  /usr/local/mlinkmedia/bin/cvlc v4l2:///dev/video1:width=480:height=360 -I telnet --telnet-port=8000 --sout="#transcode{venc=x264{keyint=50,vbv-maxrate=256},vb=256,acodec=none}:rtp{mux=ts,dst=192.168.10.121,port=1234}"
 v4l2 capture H.263 streaming output
  /usr/local/mlinkmedia/bin/cvlc v4l2:///dev/video1:width=480:height=360 -I telnet --telnet-port=8000 --sout="#transcode{{vcodec=H263,width=352,height=288,vb=256,fps=15,acodec=none}:std{access=udp{ttl=32}, mux=ts, dst=192.168.10.121:1234}"
  v4l2 capture H.264 streaming output
  /usr/local/mlinkmedia/bin/cvlc v4l2:///dev/video1:width=480:height=360 -I telnet --telnet-port=8000 --sout="#transcode{width=480,height=360,venc=x264{keyint=15,level=1.3,ratetol=90,vbv-maxrate=110,profile=base,no-cabac,nr=1000},vcodec="H264",scale=0.25,vb=100,acodec=mp4a,ab=10,channels=1,fps=15}:std{access=udp{ttl=32}, mux=ts, dst=192.168.10.121:1234}"
  v4l2 capture MPEG2 streaming output
  /usr/local/mlinkmedia/bin/cvlc v4l2:///dev/video1:width=480:height=360 -I telnet --telnet-port=8000 --sout="#transcode{venc=ffmpeg{keyint=0},vcodec=mp2v,vb=256,acodec=none, width=480, height=360}:std{access=udp{ttl=32}, mux=ts, dst=192.168.10.121:1234}"
  v4l2 capture MPEG4 streaming output
  /usr/local/mlinkmedia/bin/cvlc v4l2:///dev/video1:width=480:height=360 -I telnet --telnet-port=8000 --sout="#transcode{venc=ffmpeg{keyint=0},vcodec=mp4v,vb=256,acodec=none, width=320, height=240}:std{access=udp{ttl=32}, mux=ts, dst=192.168.10.121:1234}"
  receive udp video and display
  /usr/local/mlinkmedia/bin/vlc udp://@192.168.10.250:1234 --qt-minimal-view --video-on-top --udp-caching=300 --wx-config-title "Sensoray Video" --qt-display-mode=2 --no-qt-name-in-title --key-play-pause ''
  receive rtp video and display
  /usr/local/mlinkmedia/bin/vlc --no-overlay rtp://@192.168.10.250:1234 --qt-minimal-view --video-on-top --udp-caching=300 --wx-config-title "Sensoray Video" --qt-display-mode=2 --no-qt-name-in-title --key-play-pause ''

Receive rtsp video and display

  /usr/local/mlinkmedia/bin/vlc --no-overlay rtsp://192.168.10.121:8554/chnl1.sdp --qt-minimal-view --video-on-top --udp-caching=300 --wx-config-title "Sensoray Video" --qt-display-mode=2 --no-qt-name-in-title --key-play-pause ''

Receive udp video and output rtsp server

  /usr/local/mlinkmedia/bin/vlc udp://@192.168.10.250:1234 -I telnet --telnet-port=8000 --sout '#rtp{dst=0.0.0.0,sdp=rtsp://0.0.0.0:8554/chnl1.sdp,mux=ts}'

winpvr input vnic

  /usr/local/av/bin/vlc -I dummy pvr:///dev/video0 :pvr-adev= :pvr-bitratemode=1 :pvr-frequency=-1 :pvr-caching=100 :fps=12 :pvr-channel=2 :pvr-width=320 :pvr-height=240 --verbose=0 -I telnet --telnet-port=8000 --sout=#transcode{venc=x264{keyint=10, vbv-maxrate=256},vb=256, width=320, height=240, fps=12}:std{access=udp{ttl=32}, mux=ts, dst=127.0.0.1:45861}

H.264 UDP MP2T Streaming

      :sout=#transcode{venc=x264{keyint=50, vbv-maxrate=512},width=320,height=240,vb=512,fps=15,acodec=none}:std{access=udp{ttl=32}, mux=ts, dst=192.168.10.121:1234}
     /usr/local/av/bin/vlc udp://@192.168.10.121:1234 --verbose=0 -I telnet --telnet-port=8000 --sout=#transcode{venc=x264{keyint=50, vbv-maxrate=256},vb=256}:std{access=udp{ttl=32}, mux=ts, dst=127.0.0.1:32779}
  1. -sout=#transcode{vcodec=h264,vb=192,scale=1}:std{access=udp{ttl=32}, mux=ts, dst=127.0.0.1:32794} -I telnet –telnet-port=8000 –intf rc –rc-host localhost:5555 –rc-fake-tty

H.264 RTP MP2T Streaming

  :sout=#transcode{venc=x264{keyint=10, tune=zerolatency, vbv-maxrate=512},vb=512,acodec=none, width=352, height=288}:rtp{mux=ts,dst=192.168.10.121, port=6010,sdp=file:///home/vlcrpmbuild/file.sdp}

H.263 RTP MP2T Streaming

      :sout=#transcode{vcodec=H263,width=176,height=144,vb=256,fps=15,acodec=none}:rtp{mux=ts,dst=192.168.10.121,port=1234,sdp=file://file.sdp}

RTP (recevive via SDP) Transcoding H.264 RTP MP2T Streaming

/usr/local/av/bin/vlc –loop /root/file.sdp –verbose=0 -I telnet –telnet-port=8000 –sout=#transcode{venc=x264{keyint=50, vbv-maxrate=256},vb=256}:std{access=udp{ttl=32}, mux=ts, dst=127.0.0.1:32788}

H.264 RTSP Server/Client

:sout=#transcode{venc=x264{keyint=50, vbv-maxrate=512},width=320,height=240,vb=512,fps=15,acodec=none}:rtp{mux=ts,sdp=rtsp:0.0.0.0:554/chnl1.sdp} /usr/local/av/bin/vlc rtsp:192.168.10.238/chnl1.sdp

Transcoding MPEG2

:sout=#transcode{vcodec=mp2v,vb=1024,width=320,height=240,acodec=none}:rtp{mux=ts,sdp=rtsp:0.0.0.0:554/chnl1.sdp} Transcoding MPEG4 :sout=#transcode{vcodec=mp4v,vb=1024,width=320,height=240,fps=15,acodec=none}:rtp{mux=ts,sdp=rtsp:0.0.0.0:554/chnl1.sdp}

Transcoding H.263

:sout=#transcode{vcodec=H263,width=176,height=144,vb=256,fps=15,acodec=none}:rtp{mux=ts,sdp=rtsp:0.0.0.0:554/chnl1.sdp} Receiving UDP and Sending out RTP /usr/local/av/bin/vlc -I dummy udp:@127.0.0.1:6004 –sout=#rtp{dst=192.168.10.104, port=1234}

Receiving UDP and Sending out UDP

  /usr/local/av/bin/vlc -I dummy udp://@127.0.0.1:6004 --sout=#std{access=udp{ttl=32}, mux=raw, dst=192.168.10.104:1234}

Receiving UDP and Sending out RTSP

  
  /usr/local/av/bin/vlc -I dummy udp://@127.0.0.1:6004 --sout=#rtp{sdp=rtsp://0.0.0.0:554/chnl1.sdp}
  /usr/local/av/bin/vlc -I dummy udp://@127.0.0.1:6004 --sout=#rtp{mux=ts,sdp=rtsp://0.0.0.0:554/chnl1.sdp}

Receiving UDP and Streaming UDP + RTSP

/usr/local/av/bin/vlc -I dummy udp:@127.0.0.1:6004 –sout=#duplicate{dst=rtp{mux=ts,sdp=rtsp:0.0.0.0:554/chnl1.sdp},dst=std{access=udp{ttl=32}, mux=ts, dst=192.168.10.104:1234}}

Transcoding

/usr/local/av/bin/vlc -I dummy udp:@127.0.0.1:6004 –sout=#transcode{venc=ffmpeg{keyint=0},vcodec=mp2v,vb=256,acodec=none, width=320, height=240}:rtp{mux=ts, dst=192.168.10.104, port=1234} VideoOutCodec = mpeg4 /usr/local/av/bin/vlc -I dummy udp:@127.0.0.1:6004 –sout=#transcode{venc=ffmpeg{keyint=0},vcodec=mp4v,vb=256,acodec=none, width=320, height=240}:rtp{mux=ts, dst=192.168.10.104, port=1234}

      VideoOutCodec = h.263

/usr/local/av/bin/vlc -I dummy udp:@127.0.0.1:6004 –sout=#transcode{venc=ffmpeg{keyint=0},vcodec=H263,vb=256,acodec=none, width=352, height=288}:rtp{mux=ts, dst=192.168.10.104, port=1234} VideoOutCodec = h.264 /usr/local/av/bin/vlc -I dummy udp:@127.0.0.1:6004 –sout=#transcode{venc=x264{keyint=0, vbv-maxrate=256},vb=256,acodec=none, width=352, height=288}:rtp{mux=ts, dst=192.168.10.104, port=1234}


vlc v4l2: :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 –sout=”#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp::8554/live.ts}” -I dummy

cvlc -v v4l2:/dev/video0:chroma=“H264”:width=1024:height=570:fps=30 –sout=“#rtp{sdp=rtsp::8554/live}” –rtsp-timeout=-1

     http://stackoverflow.com/questions/15787967/capturing-h-264-stream-from-camera-with-gstreamer
     

—- c920 사용하는 pandaboard rtsp 서버를 만들었네 https://github.com/limitz/PB_C920

carambola는 vlc 패키지가 없네;;; gstreamer 0.10.36버전 쓰는데, 이걸로 과연 스트리밍이 될까?

http://frankuo.blogspot.kr/2013/03/gstreamer-from-010x-to-10x-in-openwrt.html

이렇게 업데이트 한사람도 있지만;

휴엔텍에서 h.264

휴엔텍에서 h.264 \


v4l2-ctl –list-formats v4l2-ctl –list-formats-ext

v4l2-ctl –set-fmt-video=width=1280,height=720,pixelformat=1 v4l2-ctl –set-parm=24

ffmpeg -f video4linux2 -r 24 -s 1280×720 -i /dev/video0 -vcodec copy -f rtp rtp:192.168.1.1:7010 ffmpeg -f video4linux2 -r 24 -s 640×480 -i /dev/video0 -vcodec copy -f rtp rtp:192.168.1.1:7010


gstreamer + capture

opkg package install 1. feed/multimedia/capture/Makefile 만들기 2. ./scripts/feeds update -a 3. ./script/feeds install capture 4. make menuconfig 5. make 6.

scp gst-mod-rtp_0.10.31-1_ar71xx.ipk root@192.168.1.1:~/ scp libgstrtp_0.10.36-1_ar71xx.ipk root@192.168.1.1:~/

scp libgsttag_0.10.36-1_ar71xx.ipk  root@192.168.1.1:~/

scp libgstpbutils_0.10.36-1_ar71xx.ipk root@192.168.1.1:~/

scp libgstinterfaces_0.10.36-1_ar71xx.ipk root@192.168.1.1:~/ scp libgstaudio_0.10.36-1_ar71xx.ipk root@192.168.1.1:~/

scp gst-mod-h264parse_0.10.23-1_ar71xx.ipk root@192.168.1.1:~/

run.sh ./capture -c 10000 -o | gst-launch -v fdsrc ! legacyh264parse ! rtph264pay ! udpsink host=192.168.1.1 port=400


bonecam.sdp

v=0 o=- 1188340656180883 1 IN IP4 127.0.0.1 s=Bonecam streamed by GStreamer i=bonecam t=0 0 a=tool:GStreamer a=type:broadcast m=video 4000 RTP/AVP 96 c=IN IP4 127.0.0.1 a=rtpmap:96 H264/90000

work/quadcopter.txt · Last modified: 2018/07/18 14:10 by 127.0.0.1