精华内容
下载资源
问答
  • 海康大华RTSP转HLS直播
    万次阅读 热门讨论
    2018-08-02 07:49:24

    海康RTSP地址:

    老版本: 

    rtsp://username:password@<ipaddress>/<videotype>/ch<number>/<streamtype>

    例子:

    DS-9016HF-ST的IP通道01主码流:
    
    rtsp://admin:12345@172.6.22.106:554/h264/ch33/main/av_stream
    
    DS-9016HF-ST的模拟通道01子码流:
    
    rtsp://admin:12345@172.6.22.106:554/h264/ch1/sub/av_stream
    
    DS-9016HF-ST的零通道主码流(零通道无子码流):
    
    rtsp://admin:12345@172.6.22.106:554/h264/ch0/main/av_stream
    
    DS-2DF7274-A的第三码流:
    
     rtsp://admin:12345@172.6.10.11:554/h264/ch1/stream3/av_stream

    新版本:

    rtsp://username:password@<address>:<port>/Streaming/Channels/<id>(?parm1=value1&parm2-=value2…)

    例子:

    DS-9632N-ST的IP通道01主码流:
    
    rtsp://admin:12345@172.6.22.234:554/Streaming/Channels/101?transportmode=unicast
    
    DS-9016HF-ST的IP通道01主码流:
    
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/1701?transportmode=unicast
    
    DS-9016HF-ST的模拟通道01子码流:
    
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=unicast  (单播)
    
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=multicast (多播)
    
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102 (?后面可省略,默认单播)
    
    DS-9016HF-ST的零通道主码流(零通道无子码流):
    
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/001
    
    DS-2DF7274-A的第三码流:
    
    rtsp://admin:12345@172.6.10.11:554/Streaming/Channels/103

    注:前面老URL,NVR(>=64路的除外)的IP通道从33开始;新URL,通道号全部按顺序从1开始。

    公司海康型号DS-7104N-SN/P

    用 rtsp://admin:12345@192.168.0.113:554/Streaming/Channels/101?transportmode=unicast 测试成功.

    1.搭建Nginx

    下载地址:https://nginx.org/en/download.html,我用的是nginx/Windows-1.12.2.

     解压后修改nginx\conf\nginx.conf文件:

    1.在nginx\conf\nginx.conf中:
      http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        access_log off;
        server {
    修改:    
        listen       20000;
            server_name  localhost;
           修改:
            location / {
               root   html;
               index  index.html index.htm;
            }
    为了能访问到hls流协议新增:
    location /hls {  
    types{  
    application/vnd.apple.mpegurl m3u8;  
    video/mp2t ts;  
    }  
    root html;  
    add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
            }  

    2.在nginx\conf\mime.types中
    为了支持hls流协议新增:

    application/vnd.apple.mpegurl or x-mpegURL m3u8;
    video/mp2t ts;

    3.在命令行中输入即可转换:也可写成脚本的形式运行。<加上-f rtsp -rtsp_transport tcp参数,可以有效防止丢包,默认传输是UDP>

    大华:

    ffmpeg -f rtsp -rtsp_transport tcp -i "rtsp://admin:ADMIN123@192.168.0.200:554/cam/realmonitor?channel=1&subtype=0" -strict -2 -c:v libx264 -vsync 2 -c:a aac -f hls -hls_time 4 -hls_list_size 5 -hls_wrap 10 E:/live/nginx-1.12.2/nginx-1.12.2/html/test.m3u8

    海康:

    ffmpeg -f rtsp -rtsp_transport tcp -i "rtsp://admin:12345@192.168.0.113:554/Streaming/Channels/101?transportmode=unicast" -strict -2 -c:v libx264 -vsync 2 -c:a aac -f hls -hls_time 4 -hls_list_size 5 -hls_wrap 10 E:/live/nginx-1.12.2/nginx-1.12.2/html/test.m3u8

    4.用CKPlayer自带的demo,部署到nginx/html目录下,启动nginx访问/ckplayer/index.html首页即可。

    在m3u8播放地址栏里写入自己的m3u8地址。比如:http://192.168.0.102:20000/test.m3u8.即可查看效果。

    5.demo下载

    更多相关内容
  • udp转换hls进行直播的方法

    千次阅读 2018-01-08 18:03:22
    若你的编码器输出TS组播或者单播的UDP流,我们可以通过AMS接收这UDP流,并提供HLS直播服务。利用AMS接收UDP提供HLS直播非常简单,只需要添加一个拉流的直播频道即可。  下面我们详细讲解一下: 有个编码器向我的...
    若你的编码器输出TS组播或者单播的UDP流,我们可以通过AMS接收这UDP流,并提供HLS直播服务。利用AMS接收UDP提供HLS直播非常简单,只需要添加一个拉流的直播频道即可。

        下面我们详细讲解一下:

    有个编码器向我的电脑进行UDP单播ts流,我电脑IP地址为:192.168.2.10,发流的端口号是9008,可以通过vlc看到直播,VLC中输入打开udp://@192.168.2.10:9008,就可以打开观看到。如下图:

    我们关闭VLC。采用调试的方式开启AMS,这样方便看日志。

    双击AMS目录下的AokuMediaServer.exe,看到如下窗口,说明AMS已经成功运行。


    AMS正常运行后,在浏览器中输入http://192.168.2.10:9001,进入后台,后台默认登陆用户名是admin,密码是123456。点击“添加直播频道”,弹出的框中,输入基本信息,如下:


    高级配置如下:


    请确认:选择的是拉流方式,立刻启动,输入流地址:udp://@192.168.2.10:9008,启用HLS,如上图。点击确定。AMS将成功拉到UDP流了,如下图,我们可以通过后台看到显示的直播流。

     


    同时AMS已经把得到的UDP流进行HLS直播了,通过手机浏览器访问http://192.168.2.10:9001,就可以看到直播了,如下图:


    【其他功能】

    1、通过AMS拉到的udp还可以转发到其他RTMP服务器;

    2、通过AMS拉到的udp流同时以rtmp,rtsp,flv_over_http, ts_over_http对外提供直播;

    3、可以在直播流中实时或者定时插入广告视频流;

    4、可以通过AMS对udp流进行收录,录制成flv或者mp4视频文件。

    展开全文
  • HLS转UDP协议转换器的实现

    千次阅读 2017-11-29 16:39:41
    由于业务的需要,笔者所处的业务环境内的视频传输基本采用的是UDP的方式,为了便于对各类型的视频源进行...本文探索了对HLS视频流媒体服务提供的索引文件下载、索引文件内容分析、TS切片下载、UDP转发的基础业务流程。

     

    1.   摘要

    由于业务的需要,笔者所处的业务环境内的视频传输基本采用的是UDP的方式,为了便于对各类型的视频源进行统一的接入、传输、转发往往需要进行协议的转换。本文探索了对HLS视频流媒体服务提供的索引文件下载、索引文件内容分析、TS切片下载、UDP转发的基础业务流程。

    2.   HLS视频服务系统

    HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP流媒体网络传输协议。它的工作原理是把整个流分成一个个小的基于HTTP的TS切片文件来下载。在开始一个流媒体会话时,客户端会下载一个包含元数据的extendedM3U (m3u8)playlist文件,用于寻找可用的媒体流TS切片文件。HLS只请求基本的HTTP报文,与实时传输协议(RTP)、用户数据表协议(UDP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

    3.   M3u8文件示意

        通过ffmpeg+nginx+摄像头构建一个基本的HLS推流服务器,通过浏览器访问如下地址:http://192.168.1.102:10000/hls/camera/index.m3u8,可以下载一个名为index.m3u8的文件,用文本编辑器打开,内容如下:

                   #EXTM3U             

    #EXT-X-VERSION:3

    #EXT-X-MEDIA-SEQUENCE:121

    #EXT-X-TARGETDURATION:14

    #EXTINF:6.360,

    121.ts

    #EXTINF:10.000,

    122.ts

    #EXTINF:13.720,

    123.ts

    这里面重点关注EXTINF之后的时长、.ts对应切片名称,根据时长、下载的切片大小可以计算出码率。

    4.   M3u8分析模块

    虽然python本身对http的处理提供了丰富的机制和手段,但是相对于m3u8 parser模块对于索引文件的处理来说还是有些单薄。m3u8 parser对于HLS的索引文件处理非常好用,基于m3u8分析器,能够非常方便的实现索引文件下载、内容分析、字段对应值的读取。

    m3u8的下载可以通过pip进行,如果开发环境安装了多个版本,需要明确下载到相应的python版本下面。比如Python2.7的版本执行程序为python2,则下载命令为:

    [root@localhostffmpeg]$ python2 -m pip install m3u8

    下载完毕后在代码中即可通过importm3u8引用

    5.   开发环境

          系统:CentOS 7.4

          Python版本:3.6.3

          IDE:Pycharm

     

    6.   HLS分析下载实现

    类HLSDownloader为线程类,初始化时传入待下载的URL和TS切片内容存储队列。具体实现见如下代码

    importthreading,socket,time

    import m3u8 as hls

    importurllib.request as request

    classHLSDownloader(threading.Thread):

     

        def __init__(self,clip_queue,url):

     

            self.url = url

     

            self.clip_queue = clip_queue

     

            threading.Thread.__init__(self)

     

     

        def DownloadTS(self,url,duration):

     

            response = request.urlopen(url)

     

            if(200 == response.code):

     

                context = response.read()

     

               self.clip_queue.put((context,duration))

     

     

        def run(self):

     

            ts_files = []

     

            while (True):

     

                content = hls.load(self.url)

     

                slic = len(content.segments)

     

                for i in range(slic):

     

                    if((content.segments[i].uri ints_files) == False):

     

                        print("startingDownload %s" %(content.segments[i].absolute_uri))

     

                       ts_files.append(content.segments[i].uri)

     

                       self.DownloadTS(content.segments[i].absolute_uri,content.segments[i].duration)

     

                time.sleep(content.target_duration)

    7.   UDP转发实现

        通过绑定转发使用的网口、组播地址以及指定接受TS的队列实现从队列读取TS切片内容并通过指定网口将TS数据组播到指定地址和端口

    importthreading,socket,time

    importurllib.request as request

    class UDPSender(threading.Thread):

        def__init__(self, clip_queue, localAddr, groupAddr):

     

           self.clip_queue = clip_queue

           self.groupAddr = groupAddr

     

     

           threading.Thread.__init__(self)

     

           sockHandle = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

            status =sockHandle.bind(localAddr)

            status =sockHandle.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

           self.sockHandle = sockHandle

     

     

        defrun(self):

     

           udp_frame_size = 7 * 188

     

            #每200ms秒发送一次

           send_interval = 200/1000

     

            while(True):

     

                node= self.clip_queue.get()

                data= node[0]

               duration = node[1]

     

               data_size = len(data)

               frames = data_size//udp_frame_size

     

               total_times = int(duration * (1/send_interval))

                # 根据TS传输速率控制发送速度,太快容易丢包,

               rest_interval = data_size//total_times

     

               sent_data_size = 0

                foreach in range(frames):

     

                   frame = data[each * udp_frame_size : (each + 1) * udp_frame_size]

                   sent_data_size += self.sockHandle.sendto(frame, self.groupAddr)

     

                   if(sent_data_size > rest_interval ):

                       time.sleep(send_interval)

                       sent_data_size = 0

     

               self.sockHandle.sendto(data[each * udp_frame_size : data_size],self.groupAddr)

     

    8.   主控程序入口

    from queue import Queue

    from taskmanager import HLSDownloader,UDPSender

    import fcntl,socket,struct

     

    def get_ip_address(ifname):

        s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        keys =s.fileno()

        returnsocket.inet_ntoa(fcntl.ioctl(keys,0x8915,struct.pack('256s',ifname[:15].encode()))[20:24])

     

     

    def main():

        clip_deque =Queue(5)

        url ='http://192.168.1.102:10000/hls/camera/index.m3u8'

        mdloader =HLSDownloader(clip_deque,url)

       mdloader.start()

     

        ip =get_ip_address('eth0')

        udpSender =UDPSender(clip_deque,(ip,11000),('230.1.1.1',5001))

       udpSender.start()

     

    if __name__ == '__main__':

    main()

     

    9.   业务流程

    9.1  启动nginx

      笔者手上的nginx不是标准版本,具备了rtmp直播流接收,然后自动形成m3u8索引文件、TS切片文件,提供http服务。

     

    9.2  启动ffmpeg

    视频部分实时采集摄像头、音频部分实时采集麦克风。Ffmpeg的命令如下:

    ffmpeg -f dshow -i video="IntegratedCamera":audio="麦克风 (High Definition Audio 设备)" -aspect4:3 -r 25 -vcodec libx264  -acodec aac-ar 44100 -ab 64k  -ac 2 -f flvrtmp://127.0.0.1:1935/live/camera

    正常运行后ffmpeg便可源源不断的打印采集、编码日志

    9.3  原始HLS流查看

    可以通过手机、VLC查看推送的直播流,访问地址是http://nginx服务器IP:10000/hls/camera/index.m3u8


    9.4  转发后数据查看

        通过VLC打开udp://@230.1.1.1:5001即可看到流畅的传播画面

       

     

    展开全文
  • HLS点播--FFmpeg接收udp视频流

    千次阅读 2017-05-12 10:01:23
    看到有网友问到,FFmpeg接收udp视频流实现HLS直播的方法,我这里由于没有UDP的直播源就用VLC将一个MP4文件生成UDP视频流来代替直播流。 1、确认Nginx安装配置成功支持HLS,具体过程可参考我以前博客。 2、使用...

    看到有网友问到,FFmpeg接收udp视频流实现HLS直播的方法,我这里由于没有UDP的直播源就用VLC将一个MP4文件生成UDP视频流来代替直播流。

    1、确认Nginx安装配置成功支持HLS,具体过程可参考我以前博客。

    2、使用VLC生成UDP视频流

    3、FFmpeg接收udp流转换成RTMP视频流推送到Nginx上

    [plain]  view plain  copy
    1. ffmpeg -i udp://192.168.1.110:1234 -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.1.110:1935/hls/test2  

    效果如下:

    [plain]  view plain  copy
    1. Input #0, mpegts, from 'udp://192.168.1.110:1234':  
    2.   Duration: N/A, start: 1904.952289, bitrate: N/A  
    3.   Program 1   
    4.     Stream #0:0[0x45]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x554 [SAR 1:1 DAR 640:277], 23.98 fps, 25 tbr, 90k tbn, 47.96 tbc  
    5. Output #0, flv, to 'rtmp://192.168.1.110:1935/hls/test2':  
    6.   Metadata:  
    7.     encoder         : Lavf56.15.102  
    8.     Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 1280x554 [SAR 1:1 DAR 640:277], q=2-31, 23.98 fps, 1k tbn, 90k tbc  
    9. Stream mapping:  
    10.   Stream #0:0 -> #0:0 (copy)  
    11. Press [q] to stop, [?] for help  
    12. frame= 3695 fps= 15 q=-1.0 size=   32812kB time=00:02:36.16 bitrate=1721.3kbits/s      

    4、在手机浏览器中输入地址

    [plain]  view plain  copy
    1. http://192.168.1.110/hls/test2.m3u8  


    1
    展开全文
  • 湖南卫视的一段hls切片,5段,每段10s,编码是h264,ts封装
  • 之前做的ffmpeg+ffserver实现http流媒体播放,现在做的是ffmpeg+nginx搭建HLS流媒体服务器。 由于做的是基于ARM上的,首先要做nginx的移植,ffmpeg移植网上很多可以参考,nginx的arm移植比较推荐这一篇,一步一步...
  • 流媒体服务器支持HLS,RTMP,RTSP,HTTP-FLV,HTTP-TS,HTTP-AAC输出
  • UDP 在现代电视广播中被广泛使用并与 "低延迟 "一词相关的第一项技术可能是通过UDP的MPEG TS流内容进行的组播。通常情况下,这种格式适合封闭的无负载网络,在这种情况下,丢包率是最小的。例如,从编码器到源端站...
  • 原有的RTMP, FLV, HLS这些使用TCP,新增阿里自研私有ARTP短延时方案,最终会支持WebRTC,ARTP和WebRTC使用UDP传输。 在研发之前,我们会对各项部署做一些思考。 1. 端口问题 WebRTC的默认工作方式SFU服务器会为每个...
  • 1、支持国标GB28181平台、国标GB28181 IPC和国标GB28181 NVR设备... 21、支持rtmp和hls会话一直保留  22、支持报警消息(设备上线、下线和设备端报警)通过httpclient方式主动通知  23、支持公网和局域网同时存在
  • HLS点播 FFmpeg udp视频流

    千次阅读 2016-10-29 17:47:58
    HLS点播--FFmpeg接收udp视频流 FFmpeg接收udp视频流实现HLS直播的方法,就用VLC将一个MP4文件生成UDP视频流来代替直播流。 1、确认Nginx安装配置成功支持HLS,具体过程可参考我以前博客。 2、使用VLC...
  • EasyPlayerPro是一款全功能的流媒体播放器,支持RTSP、RTMP、HTTP、HLSUDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放等多种功能特性,核心基于ffmpeg,稳定...
  • ffmpeg -i s01e01.mkv -c:v libx264 -vf scale=960:-1 -b:v 500k -preset medium -c:a copy -hls_time 4 -hls_playlist_type vod -t 100 sensei.m3u8 ffmpeg -i caes.mp4 -c:v copy -c:a copy -hls_time 10 -hls_...
  • 使用ffmpeg将视频转为hls格式并播放

    千次阅读 2019-11-15 12:06:51
    -hls_time 10 -hls_list_size 0 -f hls /root/download/智慧城市大脑.m3u8 转换名将讲解 -i 指定输入文件 -hls_time 10 每10秒输出一个TS文件 -hls_list_size 0 则是在m3u8文件中记录所有ts文件(默认是...
  • windows平台的VR全景播放器,支持图片,视频,rtsp,rtmp,http,udphls等网络格式,自动识别vr和普通视频,支持翻转,旋转等操作
  •  21、支持rtmp和hls会话一直保留  22、支持报警消息(设备上线、下线和设备端报警)通过httpclient方式主动通知  23、支持公网和局域网同时存在  24、支持httpserver,接口支持http+json  25、支持设备上线...
  • 它是一种将流分解成基于文件小段的格式, 可以通过 HTTP 下载,HLS 可以通过标准的 HTTP 或代理服务器等,这和基于 UDP 的协议(例如 RTP)不同。既然 HLS 现在如此受欢迎,那么它有那些优点和缺点呢。 优点 应用...
  • Now i want to know How can i convert RTP (Or UDP)stream to Http Live Stream (HLS)? Edit: I could convert live stream with ffmpeg, but its not stable, when an error occurred in ffmpeg the conversation...
  • 文章目录网络流媒体协议的联系与区别(RTP RTCP RTSP RTMP HLS)简结RTP RTCP RTSP 区别与联系RTSP、RTMP、HLS 区别与联系关于直播流媒体各协议层次图基于RTP的流式媒体RTPRTCPRTSPRTSP请求例RTMPRTMP扩展HLS ...
  • 服务配置项全局配置rtmp服务配置http-flv配置http-ts服务配置hls服务配置QQ交流群:697773082(流媒体人的后院) 全局配置 配置项 参数类型 默认值 描述 server_names_hash_max_size 整型数 512 服务器...
  • HLS 小结

    2021-02-19 15:50:02
    什么是HLS:  HTTP Live Streaming,简称HLS,是苹果公司提出的基于HTTP的流媒体...  优点:与基于UDP的RTP协议不同,HLS请求仅使用HTTP传输,因此可以穿过任何允许HTTP数据通过的防火墙或代理服务器。这也便于使用传
  • HLS知识基础

    2021-05-30 17:50:40
    HLS为之后的FPGA学习内容
  • <p>2、参考<strong>push.mpegts.over.udp.conf文件将其写入<strong>srs.conf文件中,如下所示 <p>listen 1935; max_connections 200; #srs_log_tank file; #srs_log_file ./objs/duan.log;...
  • 发下很久都未更新博客了,最近把小平台的功能做了完善,主要加了两大功能:1、支持集中存储,集中存储输出的hls地址 2、携带了BS客户端,可以直接搭建使用。 针对平台做了架构的优化,把原来的单线程接收sip消息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,554
精华内容 1,421
关键字:

udp转hls

友情链接: szlwjgeb.zip