zoukankan      html  css  js  c++  java
  • Utunbu VLC 播放器播放本机rtp码流

    1.ffmpeg命令推流

    ffmpeg -re -i in.h264 -vcodec copy -f rtp rtp://127.0.0.1:8888

    补充:

    -re参数,这是一个输入文件的参数,表示以原始帧速率读取输入。 主要用于模拟抓取设备(a grab device)或实时输入流(例如,从文件读取时)。 不应与实际的抓取设备或实时输入流一起使用(这可能会导致数据包丢失)。 默认情况下,ffmpeg尝试尽快读取输入。 此选项会将输入的读取速度减慢到输入的原始帧速率。 对于实时输出(例如实时流式传输)很有用。

    2.ffmpeg命令导出sdp信息

    ffmpeg -re -i in.h264 -vcodec copy -f rtp rtp://127.0.0.1:8888 > txt.sdp

    推流命令的sdp信息会输出到屏幕上,但是一般播放器播放rtp码流的时候都需要相应rtp码流的sdp信息,故而需要将sdp信息导出到文件,以便播放器读取sdp信息。

    txt.sdp文件内容:

    SDP:
    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=No Name
    c=IN IP4 127.0.0.1
    t=0 0
    a=tool:libavformat 57.83.100
    m=video 8888 RTP/AVP 96
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAFtkAoC/5YQAAAwABAAADACiPFi5I,aMuMsg==; profile-level-id=42C016

    3.ffplay读取sdp,播放相应rtp码流

    ffplay -protocol_whitelist "file,udp,rtp" -i txt.sdp 

    4.vlc播放器读取sdp,播放相应的rtp码流。

    4.1打开vlc播放器

    4.2读取sdp文件

    注意:对于上述sdp.txt文件,测试发现VLC播放器无法直接正确读取解析,反而会使得电脑卡死,需要删除前几行信息。

    更改后的文件内容:

    a=tool:libavformat 57.83.100
    m=video 8888 RTP/AVP 96
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAFtkAoC/5YQAAAwABAAADACiPFi5I,aMuMsg==; profile-level-id=42C016

    4.3点击播放,使得VLC处于等待码流状态。

    4.4使用ffmpeg命令向目标主机推送rtp流。

     ffmpeg -re -i in.h264 -vcodec copy -f rtp rtp://127.0.0.1:8888

    4.5VLC播放rtp码流。

  • 相关阅读:
    对《软件工程》这门课的总结
    结对编程项目---四则运算
    PSP记录个人项目耗时情况
    代码复审
    是否需要有代码规范
    四则运算的实现(C++)重做
    四则运算器的实现
    学习进度总结
    通过阅读教材,所得的不懂的问题
    自我介绍
  • 原文地址:https://www.cnblogs.com/iuyy/p/13834068.html
Copyright © 2011-2022 走看看