树莓派摄像头模块转成H264编码通过RTMP实现Html输出
2013-09-18 10:14
337 查看
官方原帖
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=45368&sid=b81f6551e478f0f6e172aa40e31ee179
安装 crtmpserver服务
sudo aptitude install crtmpserver
添加 crtmpserver日志文件
sudo mkdir /var/log/crtmpserver
配置crtmpserver服务环境
sudo nano /etc/crtmpserver/applications/flvplayback.lua
修改以下几行 保存退出
validateHandshake=false,
keyframeSeek=false,
seekGranularity=0.1
clientSideBuffer=30
重启 crtmpserver 服务
sudo /etc/init.d/crtmpserver restart
安装编译 ffmpeg ,系统的ffmpeg自带的不支持H264编码的flash 流,需要下载支持的ffmpeg编译,这个部分编译时间比较长,也是重要的一个步骤。
sudo aptitude remove ffmpeg
cd /usr/src
sudo mkdir ffmpeg
sudo chown `whoami`:users ffmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure
make
sudo make install
我编译好的包 http://urlxf.qq.com/?j6feUrQ ,下载解压到 可以省很多时间
sudo make install
实现摄像头数据转实现RTMP,官方时间用-1有错误提示,下面更正了
raspivid -t 9999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec copy -an -r 25 -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
视频输出
下载jwplayer
sudo ln -s /usr/share/nginx/www /var
cd /var/www
wget http://account.longtailvideo.com/static/download/jwplayer-6.5.zip
或者
wget https://www.dropbox.com/s/bfgr7146u3g7kf7/jwplayer-6.5.zip
解压
sudo unzip jwplayer-6.5.zip -d /var/www
sudo mkdir /var/www/720p
sudo nano /var/www/720p/index.php
保存退出
Ctrl+O
Enter
Ctrl+X
# start the streaming process 720p at bitrate of cca 448.6kbits/s
-------------------------------------------------------------------------------------------------------------------------------------------------------------
raspivid -t -0 -w 1280 -h 768 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
-------------------------------------------------------------------------------------------------------------------------------------------------------------
# start the streaming process 720p at bitrate of cca 1671.0kbits/s
-------------------------------------------------------------------------------------------------------------------------------------------------------------
raspivid -t -0 -w 1280 -h 720 -fps 25 -b 2000000 -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
it should look like this:
pi@RPi ~ $ raspivid -t -0 -w 1920 -h 1080 -fps 25 -b 2000000 -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
ffmpeg version N-54897-g7dc7761 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 23 2013 14:58:53 with gcc 4.6 (Debian 4.6.3-14+rpi1)
configuration:
libavutil 52. 40.100 / 52. 40.100
libavcodec 55. 19.100 / 55. 19.100
libavformat 55. 12.102 / 55. 12.102
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 81.102 / 3. 81.102
libswscale 2. 4.100 / 2. 4.100
libswresample 0. 17.103 / 0. 17.103
Input #0, h264, from 'pipe:':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p, 1920x1080, 25 fps, 25 tbr, 1200k tbn, 50 tbc
Output #0, flv, to 'tcp://0.0.0.0:6666':
Metadata:
streamName : myStream
encoder : Lavf55.12.102
Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 1920x1080, q=2-31, 25 fps, 1k tbn, 1200k tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
frame=103030 fps= 25 q=-1.0 size= 840608kB time=01:08:41.16 bitrate=1671.0kbits/s
http://192.168.0.2/720p is where you can view your camera
for outside (internet), you need to open port 1935 and 80 to your RPi
if you have two or more cameras, only one can be accessed from internet :(
------------------------------------------------------------------------------------------------------------------------------------------------------------
# for some stats install Webalizer for Raspberry Pi
------------------------------------------------------------------------------------------------------------------------------------------------------------ http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=22519
sudo apt-get install webalizer
------------------------------------------------------------------------------------------------------------------------------------------------------------
# back up /etc/webalizer/webalizer.conf file
------------------------------------------------------------------------------------------------------------------------------------------------------------
sudo cp /etc/webalizer/webalizer.conf /etc/webalizer/webalizer.conf.bakORIGINAL
------------------------------------------------------------------------------------------------------------------------------------------------------------
# edit /etc/webalizer/webalizer.conf to read the correct logfile
------------------------------------------------------------------------------------------------------------------------------------------------------------
sudo nano /etc/webalizer/webalizer.conf
#######################################
/var/log/lighttpd/access.log
#LogFile /var/log/apache/access.log.1
LogFile /var/log/lighttpd/access.log
#######################################
sudo webalizer /var/log/lighttpd/access.log
or
sudo webalizer -c /etc/webalizer/webalizer.conf
http://192.168.0.2/webalizer
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=45368&sid=b81f6551e478f0f6e172aa40e31ee179
安装 crtmpserver服务
sudo aptitude install crtmpserver
添加 crtmpserver日志文件
sudo mkdir /var/log/crtmpserver
配置crtmpserver服务环境
sudo nano /etc/crtmpserver/applications/flvplayback.lua
修改以下几行 保存退出
validateHandshake=false,
keyframeSeek=false,
seekGranularity=0.1
clientSideBuffer=30
重启 crtmpserver 服务
sudo /etc/init.d/crtmpserver restart
安装编译 ffmpeg ,系统的ffmpeg自带的不支持H264编码的flash 流,需要下载支持的ffmpeg编译,这个部分编译时间比较长,也是重要的一个步骤。
sudo aptitude remove ffmpeg
cd /usr/src
sudo mkdir ffmpeg
sudo chown `whoami`:users ffmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure
make
sudo make install
我编译好的包 http://urlxf.qq.com/?j6feUrQ ,下载解压到 可以省很多时间
sudo make install
实现摄像头数据转实现RTMP,官方时间用-1有错误提示,下面更正了
raspivid -t 9999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec copy -an -r 25 -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
树莓派安装web(nginx)服务器
http://yujianxuechuan.blog.163.com/blog/static/2174560072013511103620861/视频输出
下载jwplayer
sudo ln -s /usr/share/nginx/www /var
cd /var/www
wget http://account.longtailvideo.com/static/download/jwplayer-6.5.zip
或者
wget https://www.dropbox.com/s/bfgr7146u3g7kf7/jwplayer-6.5.zip
解压
sudo unzip jwplayer-6.5.zip -d /var/www
sudo mkdir /var/www/720p
sudo nano /var/www/720p/index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>OV5647 Webcam Live 720p (1280 x 720 progressive scan)</title> </head> <body> <!-- Code for WebCam START --> <div id="video-jwplayer_wrapper" style="position: relative; display: block; width: 1280px; height: 720px;margin:auto "> <object type="application/x-shockwave-flash" data="/jwplayer/jwplayer.flash.swf" width="100%" height="100%" bgcolor="#000000" id="video-jwplayer" name="video-jwplayer" tabindex="0"> <param name="allowfullscreen" value="true"> <param name="allowscriptaccess" value="always"> <param name="seamlesstabbing" value="true"> <param name="wmode" value="opaque"> </object> <div id="video-jwplayer_aspect" style="display: none;"></div> <div id="video-jwplayer_jwpsrv" style="position: absolute; top: 0px; z-index: 10;"></div> </div> <script src="/jwplayer/jwplayer.js"></script> <script type="text/javascript"> jwplayer('video-jwplayer').setup({ flashplayer:"/jwplayer/jwplayer.flash.swf" , file:"rtmp://" + window.location.hostname + "/flvplayback/flv:myStream.flv" , autoStart: true , rtmp:{ bufferlength:0.1 } , deliveryType: "streaming" , width: 1280 , height: 720 , player: { modes: { linear: { controls:{ stream:{ manage:false , enabled: false } } } } } , shows: { streamTimer: { enabled: true , tickRate: 100 } } }); </script> <!-- Code for WebCam END --> <br> </body> </html> 当前CPU温度: <?php $temp = intval(file_get_contents("/sys/class/thermal/thermal_zone0/temp")); // read the file as a string[file_get_contents()], and convert to an int [intval()]so we can do math functions with it $color = "#060"; // default colour if($temp >= 60000) { $color = "#F00"; } //set to red if over 60 degrees (is in milliDegrees) elseif($temp >= 50000) { $color = "#FC0"; } // set to yellow if over 50 degrees echo "<span style=\"color:".$color.";\">".($temp/1000)."°C / ".(($temp/1000)+271.15)."K</span>"; ?> <br /> 当前CPU主频: <?php $freq = intval(file_get_contents("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq")); echo ($freq/1000)."MHz"; // covert to MHz from kHz ?> <br /> 运行时间: <?php // Grab uptime output $uptime_array = explode(" ", exec("cat /proc/uptime")); $seconds = round($uptime_array[0], 0); $minutes = $seconds / 60; $hours = $minutes / 60; $days = floor($hours / 24); $hours = floor($hours - ($days * 24)); $minutes = floor($minutes - ($days * 24 * 60) - ($hours * 60)); $seconds = floor($seconds - ($days * 24 * 60 * 60) - ($hours * 60 * 60) - ($minutes * 60)); $uptime_array = array($days, $hours, $minutes, $seconds); $uptime = ($days . " days " . $hours . " hours " . $minutes . " minutes" ); echo $uptime; ?> <br /> 系统时间: <?php // Get the Time $time = (exec("date +'%d %b %Y - %T %Z'")); echo $time; ?> <br /> <!-- Network-Data: --> 获取网络数据: <?php // Get Network-Data $RX = (exec("ifconfig wlan0 | grep 'RX bytes'| cut -d: -f2 | cut -d' ' -f1")); $TX = (exec("ifconfig wlan0 | grep 'TX bytes'| cut -d: -f3 | cut -d' ' -f1")); echo $RX; $TX; ?> <br /> <br> <?php $ip = $_SERVER['REMOTE_ADDR']; $hostaddress = gethostbyaddr($ip); $browser = $_SERVER['HTTP_USER_AGENT']; $referred = $_SERVER['HTTP_REFERER']; // a quirky spelling mistake that stuck in php print "<strong>IP地址:</strong><br />\n"; print "$ip<br /><br />\n"; print "<strong>主机地址:</strong><br />\n"; print "$hostaddress<br /><br />\n"; print "<strong>浏览器信息:</strong>:<br />\n"; print "$browser<br /><br />\n"; print "<strong>Where you came from, if you clicked on a link to get here</strong>:<br />\n"; if ($referred == "") { print "Page was directly requested"; } else { print "$referred"; } ?> <br />
保存退出
Ctrl+O
Enter
Ctrl+X
# start the streaming process 720p at bitrate of cca 448.6kbits/s
-------------------------------------------------------------------------------------------------------------------------------------------------------------
raspivid -t -0 -w 1280 -h 768 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
-------------------------------------------------------------------------------------------------------------------------------------------------------------
# start the streaming process 720p at bitrate of cca 1671.0kbits/s
-------------------------------------------------------------------------------------------------------------------------------------------------------------
raspivid -t -0 -w 1280 -h 720 -fps 25 -b 2000000 -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
it should look like this:
pi@RPi ~ $ raspivid -t -0 -w 1920 -h 1080 -fps 25 -b 2000000 -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666
ffmpeg version N-54897-g7dc7761 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 23 2013 14:58:53 with gcc 4.6 (Debian 4.6.3-14+rpi1)
configuration:
libavutil 52. 40.100 / 52. 40.100
libavcodec 55. 19.100 / 55. 19.100
libavformat 55. 12.102 / 55. 12.102
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 81.102 / 3. 81.102
libswscale 2. 4.100 / 2. 4.100
libswresample 0. 17.103 / 0. 17.103
Input #0, h264, from 'pipe:':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p, 1920x1080, 25 fps, 25 tbr, 1200k tbn, 50 tbc
Output #0, flv, to 'tcp://0.0.0.0:6666':
Metadata:
streamName : myStream
encoder : Lavf55.12.102
Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 1920x1080, q=2-31, 25 fps, 1k tbn, 1200k tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
frame=103030 fps= 25 q=-1.0 size= 840608kB time=01:08:41.16 bitrate=1671.0kbits/s
http://192.168.0.2/720p is where you can view your camera
for outside (internet), you need to open port 1935 and 80 to your RPi
if you have two or more cameras, only one can be accessed from internet :(
------------------------------------------------------------------------------------------------------------------------------------------------------------
# for some stats install Webalizer for Raspberry Pi
------------------------------------------------------------------------------------------------------------------------------------------------------------ http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=22519
sudo apt-get install webalizer
------------------------------------------------------------------------------------------------------------------------------------------------------------
# back up /etc/webalizer/webalizer.conf file
------------------------------------------------------------------------------------------------------------------------------------------------------------
sudo cp /etc/webalizer/webalizer.conf /etc/webalizer/webalizer.conf.bakORIGINAL
------------------------------------------------------------------------------------------------------------------------------------------------------------
# edit /etc/webalizer/webalizer.conf to read the correct logfile
------------------------------------------------------------------------------------------------------------------------------------------------------------
sudo nano /etc/webalizer/webalizer.conf
#######################################
/var/log/lighttpd/access.log
#LogFile /var/log/apache/access.log.1
LogFile /var/log/lighttpd/access.log
#######################################
sudo webalizer /var/log/lighttpd/access.log
or
sudo webalizer -c /etc/webalizer/webalizer.conf
http://192.168.0.2/webalizer
相关文章推荐
- 达芬奇处理器的H264编码关键模块的实现研究----笔记
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- 实现输出h264直播流的rtmp服务器 flash直播服务器
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播
- 实现输出h264直播流的rtmp服务器
- 实现输出h264直播流的rtmp服务器
- 利用ffmpeg进行摄像头提取视频编码为h264通过RTP发送数据到指定的rtp地址
- RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播
- RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播
- 实现输出h264直播流的rtmp服务器 flash直播服务器
- 【嵌入式开发】树莓派+官方摄像头模块+VLC串流实时输出网络视频流
- 通过Render来实现输出html
- 实现输出h264直播流的rtmp服务器 flash直播服务器【转】
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- 实现输出h264直播流的rtmp服务器
- 实现输出h264直播流的rtmp服务器
- 实现输出h264直播流的rtmp服务器
- 利用ffmpeg进行摄像头提取视频编码为h264通过RTP发送数据到指定的rtp地址