//package HttpCamera;
//
//public class RtspToH264DataPrase
//{
// private final int MAX_VIDEO_FRAME = 1280 * 720;
// private final int RECV_BUFFER_SIZE = 1024 * 256;
// private char[] OneFrameH264Data = new char[MAX_VIDEO_FRAME];
// private int g_ts = 0;
// private int g_tsLen = 0;
// static int g_nBufLen = 0;
// int g_nNeedLen = 0;
// int g_nFullPackLen = 0;
// int g_nCopyLen = 0;
// int nRemain1 = 0;
// int nRemain2 = 0;
//
// int PT_H264 = 96;// 视频数据
// int packet_len;
// int streamType;
// int nCopy;
//
// int ts;
// int nVideoLen;
//
// RtspHead RSTP_HEAD = new RtspHead();
// char[] VideoData = new char[RECV_BUFFER_SIZE];
// char[] rtsphead = new char[20];
// int N_H_S = 8;
// int N_RTP_HDR = 12;
//
// char[] pTemp1 = new char[RECV_BUFFER_SIZE];
// char[] pTemp2 = new char[RECV_BUFFER_SIZE];
// char[] data = new char[MAX_VIDEO_FRAME];
//
// RtpHead rtphead = new RtpHead();
// char[] HeadTemp = new char[N_RTP_HDR];
//
// public int PraseRcvVideoData(char[] msg, int length)
// {
// // System.out.println("****************拆包数据长度:****" + length);
// int i = 0;
// if (length < 20)
// {
// System.out.println("******* 数据错误1 *******");
// }
// g_nCopyLen = 0;
// g_nFullPackLen = 0;
// g_nNeedLen = 0;
// nRemain1 = 0;
// nRemain2 = 0;
// g_nBufLen = length;
// if (g_nNeedLen == 0)
// {
// System.arraycopy(msg, 0, rtsphead, 0, 20);
// RSTP_HEAD.setRtspHead(rtsphead);
// packet_len = RSTP_HEAD.payloadLen; // 获得有效数据包的长度,nonth1();
//
// if (packet_len > 0 && RSTP_HEAD.daollar == 0x24)
// {
// g_nFullPackLen = packet_len;
// // 当前包不够一个nalu包
// if (g_nBufLen < (g_nFullPackLen + N_H_S) && g_nBufLen >= N_H_S)
// {
// nCopy = g_nBufLen - N_H_S;
// System.arraycopy(msg, N_H_S, VideoData, 0, nCopy);
// g_nCopyLen = nCopy;
// g_nBufLen = 0;
// if (g_nFullPackLen - nCopy > 0)
// {
// g_nNeedLen = g_nFullPackLen - nCopy;
// }
// } else
// // >= 单个nalu包
// {
// nCopy = g_nFullPackLen;
// System.arraycopy(msg, N_H_S, VideoData, 0, nCopy);
// g_nCopyLen = nCopy;
// g_nNeedLen = 0;
// // ================================================
// // FULL PACK
// i = RecvPackData(VideoData, nCopy);
// nRemain1 = g_nBufLen - (g_nFullPackLen + N_H_S);
// g_nBufLen = 0;
// if (nRemain1 > 0)
// {
// System.arraycopy(msg, g_nFullPackLen + N_H_S, pTemp1,
// 0, nRemain1);
// PraseRcvVideoData(pTemp1, nRemain1);
// }
// }
// } else
// {
// g_nCopyLen = 0;
// g_nBufLen = 0;
// g_nFullPackLen = 0;
// g_nNeedLen = 0;
// nRemain1 = 0;
// nRemain2 = 0;
// }
// }
// if (g_nNeedLen > 0)
// {
// if (g_nBufLen < g_nNeedLen)
// {
// nCopy = g_nBufLen;
// System.arraycopy(msg, 0, VideoData, g_nCopyLen, nCopy);
// g_nCopyLen = g_nCopyLen + nCopy;
// g_nNeedLen = g_nNeedLen - nCopy;
// g_nBufLen = 0;
// } else
// {
// nCopy = g_nNeedLen;
// System.arraycopy(msg, 0, VideoData, g_nCopyLen, nCopy);
// g_nCopyLen = g_nCopyLen + nCopy;
// g_nNeedLen = 0;
// // ================================================
// // FULL PACK
// i = RecvPackData(VideoData, g_nFullPackLen);
// nRemain2 = g_nBufLen - nCopy;
// g_nBufLen = 0;
// if (nRemain2 > 0)
// {
// System.arraycopy(msg, nCopy, pTemp2, 0, nRemain2);
// PraseRcvVideoData(pTemp2, nRemain2);
// }
// }
// }
// return i;
// }
//
// public int RecvPackData(char[] msg, int length)
// {
// int i = 0;
// if (length < N_RTP_HDR)
// {
// System.out.println("******* 数据错误2 *******");
// }
// System.arraycopy(msg, 0, HeadTemp, 0, N_RTP_HDR);
// rtphead.setRtpHead(HeadTemp);
// ts = rtphead.ts;
// if (rtphead.pt == PT_H264)
// {
// nVideoLen = length - N_RTP_HDR;
// if (ts != g_ts && g_ts > 0)
// {
// // 在此处将OneFrameH264Data丢给解码器解码显示(先判断是否为空)
// System.arraycopy(OneFrameH264Data, 0, data, 0, g_tsLen);
// if (data != null)
// {
// System.out
// .println(" 开始解码 --DecodeH264-- 长度:: " + g_tsLen);
//// synchronized (this)
//// {
// i = HttpJniNative.DecodeH264(getBytes(data), g_tsLen); // JNI
//// }
//
// System.out.println(" 开始解码 --DecodeH264-- OK!!!! ");
// }
// g_tsLen = 0;
// System.arraycopy(msg, N_RTP_HDR, OneFrameH264Data, g_tsLen,
// nVideoLen);
// g_tsLen += nVideoLen;
// g_ts = ts;
// } else
// {
// System.arraycopy(msg, N_RTP_HDR, OneFrameH264Data, g_tsLen,
// nVideoLen);
// g_tsLen += nVideoLen;
// g_ts = ts;
// }
// }
// return i;
// }
//
// // char转byte
// public byte[] getBytes(char[] chars)
// {
// byte[] cb = new byte[chars.length];
// for (int i = 0; i < chars.length; i++)
// {
// cb[i] = (byte) chars[i];
// }
// System.gc();
// return cb;
// }
//}
Java实现Rtsp数据拆包组帧成H264帧
3星 · 超过75%的资源 需积分: 46 170 浏览量
2013-08-15
09:34:28
上传
评论 7
收藏 3KB RAR 举报
wtbee
- 粉丝: 19
- 资源: 36
最新资源
- 毕业设计- 基于STM32F103C8T6 单片机,物联网技术的太阳能发电装置+源代码+文档说明+架构图+界面截图
- 基于 LSTM(长短期记忆)(即改进的循环神经网络)预测风力发电厂中风力涡轮机产生的功率+源代码+文档说明
- 基于stm32f103+空心杯电机+oled按键+运动算法
- 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第1章docker基础(1.1-1.4)
- 基于python实现的水下压缩空气储能互补系统建模仿真与经济效益分析+源代码+论文
- 华中科技大学-自然语言处理实验,Bi-LSTM+CRF的中文分词框架,并且利用基于深度学习的方法进行中文命名实体识别++源码报告
- 基于动态罚函数的铁路车流分配与径路优化模型python源码
- 鱼群算法求解组环问题python源码+文档说明
- 基于决策优化的多波束测深测线规划模型MATLAB代码
- 课程设计-基于python实现的多目标优化算法求解带时间窗的车辆路径规划问题+源代码+文档说明+界面截图+pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
- 6
前往页