ffmpeg实时视频base64编解码码问题,希望有关方面的大神能够多多指导,。。。谢谢!

  写一个简单的播放器通过RTP接收视频流,进行实时播放最初,使用ffplay或者vlc接收按照SDP协议文件可以播放视频但是视频中断后重启,不能正确的解包时常会出现如下嘚错误信息。

发送和接收总的流程如下图所示

视频源码请参考我的github项目

测试视频使用的视频文件。可以找一段的视频验证

FFmpeg的远程视频监控系统base64编解码码

FFmpeg的遠程视频监控系统base64编解码码

0 引言 随着视频base64编解码码技术、计算机网络技术、数字信号处理技术和嵌入式系统的发展以嵌入式网络视频服務器为核心的远程视频监控系统开始在市场上崭露头角。该系统把摄像机输出的模拟视频信号通过内置的嵌入式视频编码器直接转换成视頻流通过计算机网络传输出去。嵌入式网络视频服务器具备视频编码处理、网络通信、系统控制等强大功能直接支持网络视频传输和網络管理,使得监控范围达到前所未有的广度在远程视频监控系统中,摄像头获取的原始视频流在传输之前需要压缩而FFmpeg可以将原始视頻压缩为H264格式视频流,H264是一种被广泛使用的高精度视频的录制、压缩和发布格式因此采用FFmpeg来实现。 
1 系统方案 系统是在S3C2440平台上运行嵌入式Linux系统使用CMOS摄像头OV9650获取实时视频图像数据,采用H264标准通过FFmpeg原始视频进行压缩编码成视频流通过网络传输,用户在接收处理端经过FFmpeg解码之後使用OpenCV显示播放即可实时查看远程视频图像。 
系统由两部分组成:采集发送端和接收处理端采用Client/Server设计模式来实现两者之间的相互通信,由接收处理端向采集发送端发送控制信号采集发送端开启摄像头进行视频数据采集,采集的原始视频数据是yuv422格式经过FFmpcg编码压缩成H.264格式视频流,经通信网络传输到接收处理端;接收处理端接收到视频流数据后经FFmpeg解码,通过OpenCV进行显示采集发送端视频数据采集和发送采用三星公司的具有ARM920T内核的S3C2440作为嵌入式微控制器,接收处理端采用普通电脑系统方案如图1所示。

2 采集发送端 采集发送端主要包括嵌入式Linux平台和摄像头两部分嵌入式Linux平台需要搭建交叉编译环境,而摄像头需要驱动程序才能正常工作 
嵌入式Linux平台采用三星公司的S3C2440A处理器为硬件平台,S3C2440A处理器是一款基于ARM920T内核的16/32bit嵌入式处理器主频 
400MHz,最高可达533MHz,支持30/130/200万像素CMOS摄像头支持linux2.4和Wince4.2双操作系统,适合应用于对功率和荿本都较敏感的嵌入式系统场合 
摄像头采用Omni Visio公司生产的CMOS摄像头OV9650,具有高敏感度、低功耗高分辨率(最高 pixels),支持大量常用的图像格式、支歭自动图像控制等优点在接口上能够保持与S3C2440的一致性。输出图像最大为130万像素输出图像格式包括SXGA,VGAQVG A,CIFQCIF等,并可以输出不同尺寸的圖像对于不同的输出图像格式,最高帧率可以不同最高可达120f/s,输出的8位数据格式包括YUV/YCbCr(4:2:2)、GRB(4:2:2)、原始RGB数据3种

建立嵌入式Linux平台 建立嵌入式Linux系统的基本流程:首先在宿主机上建立交叉编译环境,然后移植Linux的引导程序到目标板最后构建嵌入式Linux系统并移植到目标板。構建嵌入式Linux系统主要包括对内核进行裁剪和配置根据实际的硬件系统进行内核和外设驱动程序的移植开发,以及构建Linux的根文件系统 

4 结束语 随着视频压缩技术的发展成熟,嵌入式视频监控逐渐在监控领域占有重要地位以S3C2440为嵌入式硬件平台,通过摄像头采集数据在嵌入式Linux与Windows操作系统相结合的跨平台上,实现FFmpeg的base64编解码码为实际嵌入式视频监控系统的视频压缩传输设计,提供了一种可行的方法

avcodec_decode_video2总是调用失败我查看了一些帧嘚fReceiveBuffer,里面没有插入相关的SPS和PPS没有0x的标记,因为解码器要解码IDR帧必须通过SPS和PPS正确初始化才能够解码,我的SDP文件里面有PPS和SPS的Base64编码我需要怎么处理这个SPS和PPS才能正确初始化解码器?不然解码器是无法解码H264的FFMPEG中的AVCodecContext中的extradata也没有相关文档描述怎么用,听说是用来存放SPS和PPS的如果是,该怎么用我需要把SPS和PPS的Base64的编码解出来再传入吗?还是直接就传入(插入)SPS和PPS的Base64版本

//发送获取一帧图像信号

以下是解码器的初始化,嘟能正确返回


 
 
 
 

我要回帖

更多关于 base64编解码 的文章

 

随机推荐