参考链接:http://blog.csdn.net/eguid_1/article/details/52678775

相信大家对JAVACV做了些了解,我在这话也不多说了,直接上代码:

public class Client1 {

/**
* Socket客户端
*/
public static void main(String[] args) throws Exception {
try {
int count=0;
while(true){
// "GET /ipcam/jpeg.cgi HTTP/1.1\r\n\r\nAuthorization: Basic YWRtaW46OTk5OQ====\r\n\r\n"
// 创建Socket对象
Socket socket = new Socket("192.168.0.80", 8080);
// 根据输入输出流和服务端连接
OutputStream outputStream = socket.getOutputStream();// 获取一个输出流,向服务端发送信息
// "GET /ipcam/jpeg.cgi HTTP/1.1\r\nAuthorization: Basic YWRtaW46OTk5OQ====\r\n\r\n"
outputStream
.write("GET /ipcam/avc.cgi HTTP/1.1\r\nAuthorization: Basic YWRtaW46OTk5OQ====\r\n\r\n"
.getBytes());
outputStream.flush();
socket.shutdownOutput();// 关闭输出流
InputStream inputStream = socket.getInputStream();// 获取一个输入流,接收服务端的信息
String outputFile = "rtmp://localhost:1935/live/test2";
Player.frameRecord(inputStream, outputFile, 1);
count++;
System.out.println("================================"+count+"次数");
socket.close();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}

public class Player {

/** 
     * 按帧录制视频 
     *  
     * @param inputFile-该地址可以是网络直播/录播地址,也可以是远程/本地文件路径 
     * @param outputFile 
     *            -该地址只能是文件地址,如果使用该方法推送流媒体服务器会报错,原因是没有设置编码格式 
     * @throws FrameGrabber.Exception 
     * @throws FrameRecorder.Exception 
     * @throws org.bytedeco.javacv.FrameRecorder.Exception 
     */  
    public static void frameRecord(InputStream inputFile, String outputFile, int audioChannel)  
            throws Exception, org.bytedeco.javacv.FrameRecorder.Exception {
            boolean isStart=true;//该变量建议设置为全局控制变量,用于控制录制结束  
        // 获取视频源  
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile); 
        grabber.setOption("rtsp_transport", "tcp");
        // 流媒体输出地址,分辨率(长,高),是否录制音频(0:不录制/1:录制)  
        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFile, 1280, 720, audioChannel); 
        recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
        recorder.setFormat("flv");
        // 开始取视频源  
        recordByFrame(grabber, recorder, isStart);
    }

private static void recordByFrame(FFmpegFrameGrabber grabber, FFmpegFrameRecorder recorder, Boolean status)  
            throws Exception, org.bytedeco.javacv.FrameRecorder.Exception {  
        try {//建议在线程中使用该方法  
            grabber.start();  
            recorder.start();  
            Frame frame =null ;  
            while (status&& (frame = grabber.grabFrame()) != null) {  
                recorder.record(frame);  
            }  
            recorder.stop();  
            grabber.stop();  
        } finally {  
            if (grabber != null) {  
                grabber.stop();  
            }  
        }  
    }    
}

JAR下载链接:http://download.csdn.net/download/xiaojie11800/10202284

javaCV将socket获取的视频流推到流媒体(RTMP)服务器相关推荐

  1. 音视频7——安卓软编音视频数据推送到rtmp服务器

    音视频开发路线: Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门 demo地址: videoPath/Demo8Activity.j ...

  2. 音视频7——安卓硬编音视频数据推送到rtmp服务器

    音视频开发路线: Android 音视频开发入门指南_Jhuster的专栏的技术博客_51CTO博客_android 音视频开发入门 demo地址: videoPath/Demo8Activity.j ...

  3. 安卓硬编音视频数据推送到rtmp服务器

    一.RTMP使用流程 rtmp协议的api调用顺序如下: 二.初始化RTMP,连接服务器 有两种构建rtmp服务器的方式我们使用的b站的服务器,要使用b站的服务器,你得认证一下,审核还需要大概1天得时 ...

  4. Android平台如何实现屏幕数据采集并推送至RTMP服务器

    随着无纸化.智慧教室等场景的普及,好多企业或者开发者开始寻求更高效稳定低延迟的RTMP同屏方案,本文以大牛直播SDK(Github)的同屏demo(对应工程:SmartServicePublisher ...

  5. 将h.264裸码流推送到RTMP服务器

    h.264裸码流的格式,参考"H.264-AVC-ISO_IEC_14496-10.pdf, page 211.",这个文档的下载地址:https://github.com/win ...

  6. Android socket 编程 实现消息推送(二)

    上篇文章Android socket 编程 实现消息推送(一)讲到socket编程的消息推送原理,现在我们来看看基于Android客户机socket编程实现消息推送的过程. 根据消息推送的原理图,我们 ...

  7. Drift 运动相机 获取相机视频流进行二次开发教程

    Drift运动相机获取视频流开发教程 简介 Drift动动相机支持TCP, RTSP以及RTMP传输协议提供视频流. 其中TCP及RTSP协议,是相机做流服务器端,手机APP端采用拉流的方式获取视频流 ...

  8. V4L2获取usb视频流测试代码

    Video4Linux2(Video for Linux Two, 简称V4L2)是Linux中关于视频设备的驱动框架,为上层访问底层的视频设备提供统一接口.V4L2主要支持三类设备:视频输入输出设备 ...

  9. Android socket 编程 实现消息推送

    最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图:    原理 ...

最新文章

  1. 【软件构造】第二章 软件构建的过程和工具(2)
  2. 阿里1682亿背后的协同研发云——云效正式商业化
  3. Android 中的线程及 AsyncTask(线程形态之一)解析一下
  4. 【每日一题】8月6日题目精讲—追债之旅
  5. uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇
  6. iPhone砍单后 分析师称苹果也将削减AirPods 3产量
  7. Rulo扫地机器人app_米家扫拖机器人1T测评|米家扫拖机器人1T的3D避障实际效果如何?...
  8. linux日常运维命令
  9. 僵化封闭的苹果:鼠标不支持右键,键盘没有DEL键
  10. document.querySelector()方法
  11. [error]: Found option without preceding group in config file ....\my.ini at line:1
  12. 编程的名言名句(幽默版)
  13. PHP获取字符串长度之strlen和mb_strlen的区别
  14. 过程之美——过程让结果更精彩
  15. sws_kp操作(selenium webdriver+python)
  16. 仿 Cuto 壁纸应用的加载动画
  17. WORD “锁定标记”的功能
  18. layui下的图片轮播图效果代码收藏
  19. 实验一:行为型设计模式之Strategy模式
  20. toad关联oracle,配置toad远程连接oracle

热门文章

  1. 知识点 - 因数之和 因数个数公式
  2. 【分享论坛】最新steam离线账号/单机资源/优质软件/资源问题解答
  3. 佛山顺德计算机美工培训班,顺德区电子商务美工培训
  4. (毕业设计资料)基于单片机FM数字收音机电路系统
  5. 2017冬季24集训模拟-4.排座椅
  6. IBM投入千万美元支持中国渠道培训
  7. 解决M1芯片版本安装Sketch问题 M1芯片安装那个Sketch版本?Sketch已完美支持M1芯片安装 支持big sur系统
  8. 什么是缓存穿透和缓存雪崩?【缓存问题】【刘新宇】
  9. 秦腔《花脸》首度加入游戏音乐盒,CSGO让全球玩家聆听“中国声音” 你想成为那个传颂者吗?CSGO开服搭建计划
  10. 【报告分享】2021中国锂电行业发展-德勤(附下载)