当前位置: 首页 > article >正文

音视频入门基础:RTP专题(2)——使用FFmpeg命令生成RTP流

通过FFmpeg命令可以将一个媒体文件转推RTP:

ffmpeg -re -stream_loop -1 -i input.mp4 -c:v copy -an -f rtp rtp://192.168.0.102:5400

但是通过ffplay尝试播放上述产生的RTP流时会报错:“Unable to receive RTP payload type 96 without an SDP file describing it”。这是由播放RTP视频时未提供对应的SDP文件导致。SDP文件包含有关媒体流的详细信息(例如编解码器类型和参数、传输协议和端口等),没有SDP文件,ffplay等播放器就无法正确地解析RTP数据包并进行播放:

所以修改转推RTP的FFmpeg命令如下:

ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec copy -an -f rtp rtp://192.168.0.102:6005 -acodec copy -vn -sdp_file XXX.sdp -f rtp rtp://192.168.0.102:7005

其中:

-re参数:以原始帧速率读取输入。即按时间戳读取文件,以本地帧频读数据。该参数可以避免需要被转推的本地媒体文件一下子就被读完了。

-stream_loop参数:循环次数。该参数可以使得需要被转推的本地媒体文件被读取完后可以循环读取。值为-1表示无限循环。

执行上述命令后,ffmpeg所在目录下会生成SDP文件:

通过命令:ffmpeg -protocol_whitelist "file,rtp,udp" -i XXX.sdp 可以查看生成的RTP流的信息:

通过命令:ffplay -protocol_whitelist "file,rtp,udp" -i XXX.sdp 可以播放生成的RTP流:


http://www.kler.cn/a/499996.html

相关文章:

  • 【源码解析】Java NIO 包中的 ByteBuffer
  • [免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】
  • 如何实现多级缓存?
  • 【redis】ubuntu18安装redis7
  • imageio 图片转mp4 保存mp4
  • 【学习路线】Python进阶 详细知识点学习路径(附学习资源)
  • 机器学习之基本概念 - 特征、标签、样本
  • 8分钟入门 Overleaf Latex-笔记
  • <C++学习>C++ Boost 算法集合操作教程
  • Android 13 framework方法通过AIDL方式供三方APP使用
  • 最新前端面试题(附答案)
  • 使用uniapp 微信小程序一些好用的插件分享
  • 基于单片机的指纹密码锁
  • Linux x86_64 程序静态链接之重定位
  • C#读取本地网络配置信息全攻略
  • redis的监控
  • spring boot发送邮箱,java实现邮箱发送(邮件带附件)3中方式【保姆级教程一,代码直接用】
  • 第四、五章图论和网络爬虫+网络搜索
  • Java Web开发进阶——Spring Boot与Thymeleaf模板引擎
  • 性能测试工具的原理与架构解析
  • Linux内核 -- RTC之`struct rtc_time` 字段解析
  • Oracle Dataguard(主库为双节点集群)配置详解(4):配置备库
  • 数据开发八股文整理- Hadoop
  • 向量检索的算法-乘积量化
  • 生成idea ui风格界面代码