gstreamer读取USB摄像头H264帧并用rtmp推流


因为要在嵌入式端使用rtmp推流,目前我知道的有三种办法,ffmpeg、gstreamer、librtmp,每一种都需要移植到嵌入式平台,还是从我最熟悉的gstreamer开始验证吧。
现在我的嵌入式平台gstreamer库没有rtmp元件,因此只能先在Ubuntu16.04系统的PC上测试,然后再移植带有rtmp元件的gstreamer库。
Ubuntu16.04系统已经自带了gstreamer-1.0的库,并且已经包含rtmp元件,不用移植可以直接测试了。
注意:我使用的USB摄像头可以直接输出H264帧,因此不需要使用编码元件。

gstreamer命令行实现rtmp推流

首先用命令行工具测试:

gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-h264, width=1280, height=720, framerate=30/1' ! queue !  h264parse ! flvmux ! rtmpsink location='rtmp://192.168.1.102/live'

这个命令行执行后,就可以在192.168.1.102地址的PC上打开流媒体服务端观看。可以使用nginx或者srs流媒体服务端,创建一个html文件打开网页观看。

	<h1>01</h1>
	<object width='640' height='377' id='SampleMediaPlayback' name='SampleMediaPlayback' type='application/x-shockwave-flash' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' >
		<param name='movie' value='swfs/SampleMediaPlayback.swf' /> 
		<param name='quality' value='high' /> 
		<param name='bgcolor' value='#000000' /> 
		<param name='allowfullscreen' value='true' /> 
		<embed src='SampleMediaPlayback.swf' width='640' height='377' id='SampleMediaPlayback' quality='high' bgcolor='#000000' name='SampleMediaPlayback' allowfullscreen='true' pluginspage='http://www.adobe.com/go/getflashplayer' flashvars='&src=rtmp://192.168.1.102:1935/live&autoHideControlBar=true&streamType=live&autoPlay=true&verbose=true' type='application/x-shockwave-flash'> 
		</embed>
	</object>

gstreamer代码实现rtmp推流

#include <string.h>
#include <gst/gst.h>
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值