关于H.264打包成mpeg-2 TS

zhumaomaozmm 2011-07-05 11:24:08
小弟一直在研究怎么在ipad和iphone上观看实时视频流,原来以为利用rtsp协议可以实现,可是结果不行啊!
查了一下,要在ipad和iphone上看实时视频必须利用一种叫做HTTP LIVE STREAMING的技术,具体可以看
http://www.apple.com.cn/developer/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html#//apple_ref/doc/uid/TP40008332-CH101-SW2可是,我不知道怎么把视频编码形成H.264纯码流打包成mpeg-2 TS?
跪求答案!
...全文
720 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mj5lucky 2012-05-22
  • 打赏
  • 举报
回复
自己对照着13818协议还有mpegtsenc.c写一个吧。没多少工作量的,用FFMPEG其实还要麻烦一些
CyberLogix 2011-07-07
  • 打赏
  • 举报
回复
http live streaming其实没什么复杂了,就是在http的基础上曾加了写握手机制
zhumaomaozmm 2011-07-07
  • 打赏
  • 举报
回复
请问楼上的又做出来的?或者有些建议和好的方法之类的,小弟很困惑啊?
dqzhangp 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 myth_cn 的回复:]

TS的格式很复杂,楼主可以参考下ffmpeg的实现libavformat/mpegts.c
[/Quote]

这个文件是解复用的,ts打包的是libavformat/mpegtsenc.c,

http live streaming不仅仅是打包成ts流就可以了。
Myth_cn 2011-07-07
  • 打赏
  • 举报
回复
TS的格式很复杂,楼主可以参考下ffmpeg的实现libavformat/mpegts.c
royi001 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dqzhangp 的回复:]

引用 1 楼 myth_cn 的回复:

TS的格式很复杂,楼主可以参考下ffmpeg的实现libavformat/mpegts.c


这个文件是解复用的,ts打包的是libavformat/mpegtsenc.c,

http live streaming不仅仅是打包成ts流就可以了。
[/Quote]

封装ts流,变码率的pcr间隔怎么打的啊
看ffmpeg离得代码是这样的
ts->mux_rate = s->mux_rate ? s->mux_rate : 1;

if (ts->mux_rate > 1) { //恒码率的pcr计算
service->pcr_packet_period = (ts->mux_rate * PCR_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);
ts->sdt_packet_period = (ts->mux_rate * SDT_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);
ts->pat_packet_period = (ts->mux_rate * PAT_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000);

ts->cur_pcr = av_rescale(s->max_delay, 90000, AV_TIME_BASE);
} else {
/* Arbitrary values, PAT/PMT could be written on key frames */
ts->sdt_packet_period = 200;
ts->pat_packet_period = 40;
if (pcr_st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
if (!pcr_st->codec->frame_size) {
av_log(s, AV_LOG_WARNING, "frame size not set\n");
service->pcr_packet_period =
pcr_st->codec->sample_rate/(10*512);
} else {
service->pcr_packet_period =
pcr_st->codec->sample_rate/(10*pcr_st->codec->frame_size);
}
} else {
// max delta PCR 0.1s //变码率的pcr间隔计算,这个到底怎么算的呢?
service->pcr_packet_period =
pcr_st->codec->time_base.den/(10*pcr_st->codec->time_base.num);
}
}
// output a PCR as soon as possible
service->pcr_packet_count = service->pcr_packet_period;
ts->pat_packet_count = ts->pat_packet_period-1;

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧