解决方案 »

  1.   

    发送的什么格式的数据?不会是YUV or RGB的吧?如果是视频编码过的数据,还是慢的话,估计只能等网速变快了吧……
      

  2.   

    发送采用UDP 有可能丢包,再就是你发送和采集是不是在一个线程里面做的,还有你手机性能如何
      

  3.   


    视频是确实是彩色数据的,我觉得花屏的现象应该是出现在这个丢包上,也就是说在传输过程中出现的问题,udp的传输本身就不保证可靠,我再发送端和接收端log查看了一下,当发送端数据大时,对方收到的数据与发送的不相符,也就导致了花屏。我的疑问是市面上的做的实时视频传输都是用的什么协议进行传送的呢?他们如何做到流程而且不花屏的?
      

  4.   


    发送和采集不是在同一个线程里的,要说性能的话,这是完全可以应付视频传输的,没有任何问题。所以我觉得问题的关键可能是udp的原因。
    但是若采用tcp的话,又不能保证实时性了。
      

  5.   

    和UPD关系不大,虽然原则上UDP不可靠,但实际上网路正常的情况下,几乎很少有丢包的情况。
    常见的实现是编码成流媒体视频,用rtsp之类的协议传输的。
    如果是通过Camera.onPreviewCallback获取Preview直接发送,必然很卡了
      

  6.   


    差不多吧,我就是获取的实时视频数据,而非rtsp流,然后将数据转发给服务器,服务器再转码播放。为什么您说这个直接发送会很卡?为什么?
    难道封装成rtsp流就可以了吗?
      

  7.   


    差不多吧,我就是获取的实时视频数据,而非rtsp流,然后将数据转发给服务器,服务器再转码播放。为什么您说这个直接发送会很卡?为什么?
    难道封装成rtsp流就可以了吗?
    再描述一下我的应用场景,将设备的网口与一个dvr连接,然后设备取到dvr传输过来的视频数据转发到服务器。我也考虑过直接转发dvr的rtsp流,但问题是我用什么方式去获取这个rtsp流呢?如果转发的话,要怎么转呢,这都是问题
      

  8.   

    基于视频编码的流媒体要比每一帧每一帧的发送预览图,数据包要小很多,原理可以参考视频编码的原理。
    也不是一定要包装成流媒体/rtsp,只要用视频格式编码一下就会小很多(比如H.264等)。流媒体/rtsp只不过是为了接收方播放方便。
    至于怎么编码成rtsp,网上有很多人研究过,百度一下就知道了。你的需求应该不是很难实现。
      

  9.   

    我们项目中用的是TCP,h264,受制于手机性能和网速,分辨率320x240,实时性勉强可以接受
      

  10.   

    我将自己的项目也改成了tcp的,效果还可以,花屏现象没大有,延时大概在5秒左右,但是出现了视频卡顿的现象。你的tcp发送的时候使用的阻塞式还是非阻塞的??
      

  11.   

    3g进行实时视屏效果是 非常差的,业内没有一个效果好的 包括中国移动做的视频,或是你用手机qq等工具进行视频自己看效果
      

  12.   


    确实是有点不尽如意,不过市面上有些号称3G可以做到720P实时传输的,这个可能吗两种方法达到所谓的720p实时传输。1,降低帧率,2,低分辨率强行在接收端拉大到720p。这都是所谓的720p实时传输。 
      

  13.   

    实时传输没做过,不过播放视频流的话,可以在服务器用ffmpeg切割成ts文件,在客户端直接用http播放就好了。
      

  14.   


    确实是有点不尽如意,不过市面上有些号称3G可以做到720P实时传输的,这个可能吗两种方法达到所谓的720p实时传输。1,降低帧率,2,低分辨率强行在接收端拉大到720p。这都是所谓的720p实时传输。 对方说可以做到720p。帧率为16帧/s。。 不过你说的第二种方式倒是有可能的。
      

  15.   


    您是说把实时视频流转换为ts文件,然后就可以播放吗?敢问这个ffmpeg的指令是什么
      

  16.   


    您是说把实时视频流转换为ts文件,然后就可以播放吗?敢问这个ffmpeg的指令是什么
    抱歉了哥们,这指令我找了蛮久没找到,忘了放哪儿了,其实原理就是把整个视频切割成一个个小片段播放的,播放起来就会比较流畅
      

  17.   


    您是说把实时视频流转换为ts文件,然后就可以播放吗?敢问这个ffmpeg的指令是什么
    抱歉了哥们,这指令我找了蛮久没找到,忘了放哪儿了,其实原理就是把整个视频切割成一个个小片段播放的,播放起来就会比较流畅
    http://blog.raphaelzhang.com/2013/04/video-streaming-and-ffmpeg-transcoding/ 都在这了
      

  18.   


    确实是有点不尽如意,不过市面上有些号称3G可以做到720P实时传输的,这个可能吗两种方法达到所谓的720p实时传输。1,降低帧率,2,低分辨率强行在接收端拉大到720p。这都是所谓的720p实时传输。 
    世面上的都是 理论上 的 ,  大家要想想我们不是 学者不是做理论的, 做的东西是要用的,还必须客户体验度好才行,
    还有一点就是 流量现在这么贵 ,这个是国内必须考虑的。
      

  19.   

    你好,楼主!你的问题解决了?我最近也在做相关的东西,android手机客户端采用google提供的api,通过MediaRecorder类实现视频的采集以及h.264的硬编码,接着再用rtp封包,采用tcp发送到指定的流媒体服务器上,流媒体播放器再从流媒体服务器上获取流进行播放。经过测试,在WiFi环境下,效果是不错的,(当然这个要调试不同的分辨率和帧率等参数),但是当我运用到3g环境下时,就和楼主你一样,出现很不流畅的现象,在3g很好的情况下,有时延时也很小(<2s),就是有点不是很流畅,楼主,能给点建议?
      

  20.   

    视频卡顿应该和3G网速有关系吧,我们处理的时候,如果发送速度跟不上,就会丢弃一些视频帧,在线程里面发送的,异步发送我将自己的项目也改成了tcp的,效果还可以,花屏现象没大有,延时大概在5秒左右,但是出现了视频卡顿的现象。你的tcp发送的时候使用的阻塞式还是非阻塞的??
      

  21.   

    @hushoubo 你好!你视频发送是在Java层实现的还是利用jni调用c来实现的;再有如果发送速度跟不上的话,就会丢弃一些视频帧,这样不会导致马赛克出现?
      

  22.   

    怎么对相机预览获取到的数据NV21进行H264编码
      

  23.   

    怎么对相机预览获取到的数据NV21进行H264编码