91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 25KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-17
  • 語言: Java
  • 標(biāo)簽: x264RTMP??

資源簡介

Ubuntu/Linux下V4L2攝像頭視頻采集經(jīng)過x264編碼后,再進(jìn)行rtmp打包封裝并推送到服務(wù)器上;源碼有(rtmper.cpp sender.cpp vencoder.cpp...)視頻流可以在VLC和Android app上播放;更多可關(guān)注:http://blog.csdn.net/yqw2007/article/details/43273259

資源截圖

代碼片段和文件信息

extern?“C“{

#ifdef?__cplusplus
?#define?__STDC_CONSTANT_MACROS
?#ifdef?_STDINT_H
??#undef?_STDINT_H
?#endif
?#?include?
#endif

}

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
extern?“C“?{
# include?
# include?
}
#include?“capture.h“

static?const?int?BUFFS_REQUEST?=?4;

struct?Buffer
{
void?*start;
size_t?length;
};
typedef?struct?Buffer?Buffer;

struct?Ctx
{
int?vid;
int?width?height; //?輸出圖像大小
struct?SwsContext?*sws; //?用于轉(zhuǎn)換
int?rows; //?用于?sws_scale()
int?bytesperrow;?//?用于cp到?pic_src
AVPicture?pic_src?pic_target; //?用于?sws_scale
Buffer?bufs[BUFFS_REQUEST]; //?用于?mmap
????????PixelFormat?fmt;
};
typedef?struct?Ctx?Ctx;

int?capture_get_output_ptr?(void?*c?unsigned?char***ptr?int?**ls)
{
????Ctx?*ctx?=?(Ctx*)c;
????*ptr?=?ctx->pic_target.data;
????*ls?=?ctx->pic_target.linesize;
????return?1;
}

/*
函數(shù)功能:?打開視頻設(shè)備并完成設(shè)置和內(nèi)存映射
參考資料:?http://www.embedu.org/Column/Column320.htm
*/
void?*capture_open?(const?char?*dev_name?int?t_width?int?t_height?PixelFormat?tarfmt)
{
int?id?=?open(dev_name?O_RDWR);//打開視頻設(shè)備?/dev/videoX
if?(id?
Ctx?*ctx?=?new?Ctx;
ctx->vid?=?id;

//?to?query?caps
v4l2_capability?caps;
ioctl(id?VIDIOC_QUERYCAP?&caps);

//測(cè)試是否支持捕獲接口?The?device?supports?the?Video?Capture?interface.
if?(caps.capabilities?&?V4L2_CAP_VIDEO_CAPTURE)?
{

//測(cè)試是否支持讀寫??The?device?supports?the?read()?and/or?write()?I/O?methods.
if?(caps.capabilities?&?V4L2_CAP_READWRITE)?
{
//?TODO:?...
}

//測(cè)試是否支持流接口?The?device?supports?the?streaming?I/O?method.
if?(caps.capabilities?&?V4L2_CAP_STREAMING)?
{
//?檢查是否支持?MMAP?還是?USERPTR
v4l2_requestbuffers?bufs;
memset(&bufs?0?sizeof(bufs));
bufs.count?=?BUFFS_REQUEST;//The?number?of?buffers?requested?or?granted.?This?field?is?only?used?when?memory?is?set?to?V4L2_MEMORY_MMAP.
bufs.type?=?V4L2_BUF_TYPE_VIDEO_CAPTURE;//Type?of?the?stream?or?buffers?this?is?the?same?as?the?struct?v4l2_format?type?field.?See?Table?3-2?for?valid?values.
bufs.memory?=?V4L2_MEMORY_MMAP;

//向驅(qū)動(dòng)申請(qǐng)幀緩存?開啟內(nèi)存映射或用戶指針I(yè)/O
if?(ioctl(id?VIDIOC_REQBUFS?&bufs)? {
fprintf(stderr?“%s:?don‘t?support?MEMORY_MMAP?mode!\n“?__func__);
close(id);
delete?ctx;
return?0;
}

fprintf(stderr?“%s:?using?MEMORY_MMAP?mode?buf?cnt=%d\n“?__func__?bufs.count);

//?mmap
for?(int?i?=?0;?i? {
v4l2_buffer?buf;
memset(&buf?0?sizeof(buf));
buf.index=i;
buf.type?=?bufs.type;
buf.memory?=?bufs.memory;
//獲取到對(duì)應(yīng)index的緩存信息,此處主要利用length信息及offset信息來完成后面的mmap操作。
if?(ioctl(id?VIDIOC_QUERYBUF?&buf)? {
fprintf(stderr?“%s:?VIDIOC_QUERYBUF?ERR\n“?__func__);
close(id);
delete?ctx;
return?0;
}

?//轉(zhuǎn)換成相對(duì)地址
ctx->bufs[i].length?=?buf.length;
ctx->bufs[i

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

????.......????????84??2012-07-10?10:04??v4l2_x264_rtmp\run.txt

????.......?????13353??2015-02-04?15:36??v4l2_x264_rtmp\vencoder.cpp

????.......???????109??2011-07-14?11:54??v4l2_x264_rtmp\README

????.......??????1027??2011-07-14?11:54??v4l2_x264_rtmp\sender.cpp

????.......??????1106??2015-02-04?15:30??v4l2_x264_rtmp\Makefile

????.......???????234??2012-07-10?15:34??v4l2_x264_rtmp\types.h

????.......???????664??2015-02-04?15:33??v4l2_x264_rtmp\vencoder.h

????.......???????412??2011-07-14?11:54??v4l2_x264_rtmp\sender.h

????.......???????393??2012-07-10?11:26??v4l2_x264_rtmp\capture.h

?????文件??????11713??2015-02-04?15:35??v4l2_x264_rtmp\rtmper.cpp

?????文件??????50220??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.PS

?????文件????????408??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.IMD

?????文件???????2696??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.PR

?????文件???????8192??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.IMB

?????文件??????12241??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.WK3

?????文件??????14680??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.PRI

?????文件????????448??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.IAD

?????文件??????12288??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.IAB

?????文件??????????0??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.PFI

?????文件????????776??2015-02-04?15:38??v4l2_x264_rtmp\si\liveX264.PO

????.......??????7949??2012-07-10?21:11??v4l2_x264_rtmp\capture.cpp

?????目錄??????????0??2015-02-04?15:38??v4l2_x264_rtmp\si

?????目錄??????????0??2015-02-04?15:37??v4l2_x264_rtmp

-----------?---------??----------?-----??----

???????????????138993????????????????????23


評(píng)論

共有 條評(píng)論

相關(guān)資源