V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
lzyroot
V2EX  ›  iDev

请问 iOS h264 视频如何解码并播放?视频监控这一块的

  •  
  •   lzyroot · 2015-06-25 11:27:01 +08:00 · 7826 次点击
    这是一个创建于 3235 天前的主题,其中的信息可能已经有所发展或是发生改变。
    h264格式: http://stackoverflow.com/questions/24884827/possible-locations-for-sequence-picture-parameter-sets-for-h-264-stream 数据使用tcp传输的

    请问如何通过ffmpeg解码播放出来呢,难整阿,有没有大神做过呢,有做过的可否扒份demo学习下,感激不尽
    20 条回复    2015-07-11 16:39:51 +08:00
    lzyroot
        1
    lzyroot  
    OP
       2015-06-25 11:27:43 +08:00
    ffmpeg不会用阿
    lzyroot
        2
    lzyroot  
    OP
       2015-06-25 11:30:31 +08:00
    HTTP Live Streaming 苹果官方的这个不知道能不能解码
    lzyroot
        3
    lzyroot  
    OP
       2015-06-25 11:39:40 +08:00
    连接是通过ip 端口 服务端终端号 信道 客户端终端号连接 类似"192.168.230.64", "9998", "13000010007", "6 13000010006"
    NUT
        4
    NUT  
       2015-06-25 12:47:14 +08:00   ❤️ 1
    给你个思路,
    1、视频通过 PCM格式 录出来的buffer 通过 x264编码后成 H264 格式的 ES流(裸流)
    2、怎么打包自己看啥协议,一般有TS PS等。常用就是TS流,当然这里涉及到RTP等。lz这里需要知道 SPS PPS之类的东西。
    3、怎么解析服务器下发的H264, 这个我们采用先解出来成为 YUV ,然后渲染成 bitmap ,然后刷新就行。

    成品 DEMO 肯定是没有的。 不过每个部分的代码在网上都有。
    NUT
        5
    NUT  
       2015-06-25 12:48:09 +08:00   ❤️ 1
    重新看了下。。。 说多了, 你就直接看3就行,
    lzyroot
        6
    lzyroot  
    OP
       2015-06-25 13:41:24 +08:00
    @NUT 能顺手给个这部分的代码吗。。没找到呢,谢谢
    honeycomb
        7
    honeycomb  
       2015-06-25 14:27:23 +08:00   ❤️ 1
    @lzyroot bilibili的ijkplayer?
    lzyroot
        8
    lzyroot  
    OP
       2015-06-25 15:55:16 +08:00
    @honeycomb 这个可以解码h264吗?可是我不会用。。
    NUT
        9
    NUT  
       2015-06-25 16:54:30 +08:00   ❤️ 1
    这个还真不能顺手。

    看看这个
    http://www.jianshu.com/p/c69933606ddf
    MarineLv
        10
    MarineLv  
       2015-06-25 19:19:42 +08:00   ❤️ 1
    @NUT 我了个去……我说怎么又被扒出来了……原来源头在V站……
    NUT
        11
    NUT  
       2015-06-25 21:37:47 +08:00
    qq2511296
        12
    qq2511296  
       2015-06-26 09:49:37 +08:00   ❤️ 1
    tcp的不知道可以不可以 tstp http 等貌似是可以
    http://pan.baidu.com/s/1qW1bJuG 这个是用kxmovie的demo 整合好了了ffmepg的lib
    Panic
        13
    Panic  
       2015-06-26 11:29:47 +08:00
    ios 有硬件解码把, 你可以试试搞成 rtsp 直播估计比较好。
    freewarcraft
        14
    freewarcraft  
       2015-06-26 16:07:16 +08:00   ❤️ 1
    正好我在公司就是负责类似项目的产品经理,但很抱歉我不懂具体的技术,只能说个大概。

    不过我对po主的问题没看明白,因为ios原生支持h264. 例如,你在ios safari里输入一个url,链接到一个h264视频文件,safari就会自动调用系统播放器播放。

    另外,你又为何要用ffmpeg播放?我只知道ffmpeg可以在电脑上跑,你是想在ios app里用ffmpeg解码?好像没这个必要啊。

    关于你做的项目,说点我的经验,希望可以帮到你
    首先,你是想做一套视频监控系统,让用户可以在手机上看视频监控?
    如果是的话,那么大致的流程是:摄像头-转码切片-存储分发-手机观看。

    我这里采用的是HLS,转码切片用过ripcode(几十万)和ffmpeg(免费)。ffmpeg问题多多,经常手机放着放着画面就卡死了,要退出播放再开始播放才行,安卓和ios设备都这样,原因排查了半天也不知道,ripcode就没问题。

    转码切片完成后就生成了很多h264+aac的ts片段文件及一个m3u8列表文件,然后手机app里去读取m3u8的地址就ok了,会调用系统播放器播放最新生成的ts文件,实现实时视频监控。当然,从流程也可以看出,这样的视频是有延迟的,大概延迟30秒。

    另外还需要做回看点播,用户认证和防盗链,否则抓个包人人都能看了。。。

    Demo是有,但毫无疑问的不能给你。。。
    freewarcraft
        15
    freewarcraft  
       2015-06-26 16:21:12 +08:00
    刚看了下上面的回复,是我孤陋寡闻了。。。
    lzyroot
        16
    lzyroot  
    OP
       2015-06-27 09:24:08 +08:00
    @freewarcraft 感谢,这个项目播放视频是用TCP协议传输的,实时传回,因为安卓已经用h264完成了,所以ios也得用这个
    lzyroot
        17
    lzyroot  
    OP
       2015-07-03 10:23:55 +08:00
    @MarineLv 文章为何隐藏了阿
    MarineLv
        18
    MarineLv  
       2015-07-06 10:35:19 +08:00   ❤️ 1
    @lzyroot 一开始是发在开源中国上的,简书也不怎么玩干脆就都删掉了。结果后来发现开源中国上那篇google搜不出来。。坑爹啊
    http://my.oschina.net/expectoPatronum/blog/293887 你如果还需要参考这里是链接~
    lzyroot
        19
    lzyroot  
    OP
       2015-07-11 15:57:28 +08:00
    @Panic 怎么搞呢,大神,能说详细点吗。
    lzyroot
        20
    lzyroot  
    OP
       2015-07-11 16:39:51 +08:00
    @NUT 每个部分的代码也没找到阿,能帮忙找找吗,唉 ,折腾这么久了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2256 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:23 · PVG 17:23 · LAX 02:23 · JFK 05:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.