社区
多媒体/流媒体开发
帖子详情
用ffmpeg函数将264文件打包成rtp ts流,但vlc不能播
ashleycoder
2016-10-12 06:16:48
参照最简单的基于FFmpeg的推流器(以推送RTMP为例) - 雷霄骅(leixiaohua1020)的代码
将out_filename = "rtp://127.0.0.1:6000";
avformat_alloc_output_context2(&ofmt_ctx, NULL, "mpegts", out_filename);
改成"rtp_mpeg"报错
但vlc并不能播。
谁做过类似的功能?
...全文
615
1
打赏
收藏
用ffmpeg函数将264文件打包成rtp ts流,但vlc不能播
参照最简单的基于FFmpeg的推流器(以推送RTMP为例) - 雷霄骅(leixiaohua1020)的代码 将out_filename = "rtp://127.0.0.1:6000"; avformat_alloc_output_context2(&ofmt_ctx, NULL, "mpegts", out_filename); 改成"rtp_mpeg"报错 但vlc并不能播。 谁做过类似的功能?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ashleycoder
2016-10-13
打赏
举报
回复
用ffmpeg 3.0就可以了
流
媒体基本知识及
流
媒体服务器搭建知识大全
内容由
流
媒体协议等基本知识,视频媒体基本知识,
流
媒体服务器搭建实战,
流
媒体工具使用实战等内容组
成
。由本人“天地会珠海分舵”(http://blog.csdn.net/zhubaitian)耗时一个月整理而
成
,现分享给大家。 章节内容分布如下: 第1章Streaming 协议和服务器概览学习摘录 7 1.1 Protocol support 8 1.2 Media Container format support 12 第2章Streaming 协议学习摘录 15 2.1 MMS协议简介 15 2.2
RTP
相关协议简介 15 2.2.1
RTP
与RTCP协议简介 15 2.2.2 R
TS
P协议简介 16 2.2.3
流
传输过程 17 2.3 RTMP vs RTMFP 18 2.3.1 RTMP协议简介 18 2.3.3 RTMFP 简介 19 2.3.4 RTMP VS RTMFP 20 2.4 MPEG-
TS
20 2.4.1 MPEG2-
TS
与MPEG2-PS的区别 20 2.4.2 PES/ES/
TS
简介 20 2.5 Smooth Streaming 21 2.5 HLS简介 24 2.6 MPEG-DASH 26 2.6.1 简介 26 2.6.2 Dash
播
放器列表 28 2.6.3 MPD格式 30 2.6.5 MPD在线检查器 31 2.6.5 MPD 格式理解个人小结 31 2.6.6 PMD格式的多样性 32 2.6.7 MPD 支持的Profiles 44 2.6.8 DASH传输协议支持 44 2.7 HLS VS MPEG-DASH 45 2.8 Real Data Transport Protocol 45 2.9 webM 45 第3章 视频容器格式学习摘录 47 3.1 视频容器VS 视频编码 47 3.2 3GP容器 48 3.2 AVI容器(.avi) 49 3.3 WMV vs ASF 容器(.wmv/.asf) 49 3.3.1 ASF高级串
流
格式简介以及和WMA/WMV的区别 49 3.3.2 ASF和WMA/WMV的区别官方解析 50 3.4 QuickTime容器(.mov) 50 3.5 Ogg vs Ogm容器(.ogg) 51 3.5.1 Ogg容器格式 51 3.5.2 Ogm 51 3.5.3 Ogg vs Ogm 52 3.6 Matroska容器(.mkv|.mka|.mks) 52 3.7 MP4容器 53 3.7.1 简介 53 3.7.2 MP4格式详解 53 3.8 MPEGE
TS
容器 61 3.9 FLV容器 62 3.10 ABS – Adaptive Bitrate Streaming 自适应串
流
容器 62 3.11 码率 63 3.12
流
媒体的3种格式 63 3.12.1 压缩媒体
文件
格式 63 3.12.2
流
文件
格式 64 3.12.3
流
媒体发布格式 64 第4章 视频编码格式学习摘录 66 4.1视频编码格式简介 66 4.2主
流
视频编码格式比较 67 4.2.1 MPEG编码格式 67 4.2.2 DivX/XviD编码格式 68 4.2.3 H.
264
/X
264
编码格式 69 4.2.4 WMA-HD/VC-1编码格式 71 4.2.5 各主
流
编码格式比较 72 4.3 视频解码 73 第5章
ffmpeg
学习摘录 74 5.1 简介 74 5.2 功能 74 5.3 支持的格式和编码 75 5.4 支持的
流
媒体协议 76 5.5
ffmpeg
视频解码架构示例简略 76 5.5.1 解复用(Demux) 77 5.5.2 解码 (Decode) 78 5.5.3
Ffmpeg
中解码
流
程对应的API
函数
78 第6章GStreamer学习摘录 80 6.1 GStreamer简介 80 6.2 GStreamer编写MP3
播
放器实例 80 6.2.1 初始化GStreamer 80 6.2.2 创建GStreamer管道元件 81 6.2.3 创建元件三元组之GStreamer数据源 81 6.2.4 创建元件三元组之解码器 (即GStreamer过滤器) 插件 81 6.2.5 创建元件三元组之GStreamer接收器 81 6.2.6 链接GStreamer元件三元组到管道 –
播
放 82 6.2.7 启动GStreamer管道数据处理
流
程 82 6.2.8 MP3命令行
播
放器源代码完整实例 82 第7章
ffmpeg
VS GStreamer比较学习摘录 85 7.1 Pipeline设计模式简介 85 7.2
ffmpeg
vs GStreamer 86 7.2.1 网上解析翻译 86 7.2.1
FFmpeg
和GStreamer异同小结 87 第8章
流
媒体服务器搭建摘录 88 8.1
VLC
88 8.1.1
VLC
编码和容器兼容性 88 8.1.1
VLC
配置VOD点
播
88 8.1.2
VLC
配置组
播
服务器 90 8.2 Wowza Streaming Engine 91 8.2.1 简介及安装 91 8.2.2 MPEG-DASH 支持 92 8.2.3 如何使用
VLC
作为直
播
源 95 8.2.4 点
播
VOD配置 112 8.3 Nex Gen Media Server (NGMS) 114 8.3.1 Introduction 114 8.3.2 Feature List 115 8.3.3 Practice in Action 116 8.4 IIS Smooth Streaming(IIS Media Service) 117 8.4.1 Getting Started with IIS Smooth Streaming 117 8.4.2 Use
VLC
to play the Smooth Stream 128 8.4.3 创建Smooth Stream
文件
129 8.4.4 提供DASH服务时IIS的关键设置 129 8.4.5 Dash on IIS步骤 130 第9章 相关工具学习摘录 137 9.1 Bento4 MP4工具包 137 9.1.1 Introduction 137 9.1.2 所包含的工具简介 138 9.1.3 MPEG DASH Adaptive Streaming 139 9.1.4 Serving DASH Streams 147 9.2 MP4Box 149 9.2.1 简介 149 9.2.2 对DASH的支持命令帮助 150 9.2.3 MP4Box: fragmentation, segmentation, splitting and interleaving 153 9.2.4 把MP4转换
成
TS
155 9.2.5生
成
不同profile的MPD 155 9.2.6指定每个Representation的bandwidth 156 9.2.7生
成
多个period的MPD 156 9.2.8生
成
多个Representation的MPD 156 9.2.9 生
成
多个Segment的MPD 156 9.2.10 生
成
(Subsegment) SegmentBase拥有 indexRangeExact 为true的MPD 157 9.2.11 生
成
多个AdaptionSet的MPD 158 9.2.12 模拟live直
播
158 第10章
流
媒体服务器搭建指导 159 10.1 所需搭建服务器Matrix 159 第11章 附录 163 11.1 Wowza支持格式 163 11.2 ISO Base Media File Format (IBMFF) 163 11.3 DASH所支持Profile分类 164
openrtxp.zip
openrtxp是一个小型的r
ts
p/rtmp协议的rtxpserver, ANSI C语言开发,方便移植到嵌入式系统如IPCam. 功能list: (1)支持H
264
+ AAC编码格式封包
成
R
TS
P/RTMP,可以使用
VLC
/
VLC
网页控件
播
放,RTMP可以用
VLC
/flash player/kmplayer
播
放. 支持
RTP
over TCP/UDP. (2)R
TS
P/RTMP的URL可配置,缺省URL如下: VOD点
播
(
文件
回放):r
ts
p://192.168.2.62/playback/test.mp4 直
播
:r
ts
p://192.168.2.62/stream/0 RTMP的url和R
TS
P一致,只需要把"r
ts
p"修改为"rtmp" 图像延迟在250ms左右. (4)同时支持基于UDP/TCP的
TS
流
直
播
. (5)移植很方便,只需要编写约7个直
播
流
获取Audio/Video的
函数
即可. (6)支持DVR功能,通过简单的调用,即可实现把直
播
流
保存到硬盘中(支持.mp4/.
ts
格式) (7)所有代码为纯C代码,可移植性强。 移植很方便,只需要编写约7个直
播
流
获取Audio/Video的
函数
即可. int liveInit(); int liveUninit(); void* liveCreate(char* filename,void* prv,double* duration,unsigned int* video_codec,unsigned int* video_width,unsigned int* video_height,unsigned int* video_fps,unsigned int* video_bps,unsigned int* audio_codec,unsigned int* audio_samplerate,unsigned int* audio_channels,unsigned int* audio_bps); int liveGetHeaderPacket(void* hdl,int data_type,char* buf); int liveGetVideoPacket(void* hdl,char* buf,double* p
ts
,int* sync); int liveGetAudioPacket(void* hdl,char* buf,double* p
ts
); int liveDestroy(void* hdl); FAQ: 1.为什么要用
ffmpeg
和ssl? 答:ssl是rtmp协议要用到。
ts
流
,mp4
文件
都是由
ffmpeg
中的方法来实现的。如果去掉这两个lib,就支持不了rtmp,.
ts
,.mp4等功能。 libssl和libcrypto则是rtmp要使用的,修改configs.h 和Makefile就可以很容易地去掉。 playback/DVR/
TS
功能要用到
ffmpeg
lib的支持,修改configs.h和Makefile也很容易去掉
ffmpeg
,但这三项功能就实现不了。 去掉openssl和
ffmpeg
后,编译出来的image size在83KB左右。 2.如何支持底层的多通道?比如一个是1080P ch,一个是CIF ch. 答:通过live->idx = idx=atoi(filename);来区分不同的hw path。 3.如何支持多session或多个client连接? 答:来一个session,就调用liveCreate()来生
成
一个live实体。 liveCreate()的时候每次都是malloc()一个新的instance,那个instance包含一个h
264
enc指针和一个rd。 h
264
enc指针内部有一个wr,也就是说所有的
流
都共享一个h
264
enc指针,但每个
流
的rd是独立的。 第二次liveCreate()的时候,h
264
enc指针已经有了,就不需要再次建立h
264
enc指针了,直接引用就可以了(因此h
264
enc内部要做引用计数) 每多调用一次liveCreate(),h
264
enc->ref++。 每调用一次liveDestroy(),就h
264
enc->ref--,==0的时候就真正destroy h
264
enc。
FFmpeg
4.3系列之24:
RTP
及j
rtp
lib发送H.
264
码
流
我将带领大家一起来学习:
RTP
及j
rtp
lib发送H.
264
码
流
实战;
RTP
协议的报文结构;
RTP
封装H.
264
;开源库j
rtp
lib的源码编译及环境搭建;开源库j
rtp
lib的官方案例详解与剖析;开源库j
rtp
lib发送H
264
码
流
并用
VLC
播
放; ...
基于
FFMPEG
的
RTP
推
流
H
264
和AAC
文件
在本文中主要讲如何用
FFMPEG
编写
RTP
的推
流
程序和打视音频时间戳上的问题 PS:文中代码基于LINUX一.
文件
的打开和输出
流
的打开用avformat_open_input分别打开视音频
文件
,用avformat_alloc_output_context2打开输出的
RTP
流
,注意,这里用的选项是
rtp
_mpeg
ts
,代表的是传输的视音频数据会
打包
成
TS
流
的形式进行发送。
rtp
一个端口只能传输一路
将H
264
码
流
打包
成
RTP
包
H
264
码
流
打包
成
RTP
包的代码如下: [cpp] view plain copy #include #include #include #include #include #include //#include "mem.h" #define PACKET_BUFF
多媒体/流媒体开发
2,541
社区成员
20,280
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章