刚在VC下编译了ffplay的代码,由于原来的代码是直接播放本地文件的,现在想改成可以播放ts流的形式,不知道怎么入手的好。
各位大侠,有想法进来说说

解决方案 »

  1.   


    但是ffmpeg sdk里面的接口大多是和文件操作相关的,难道还有直接操作buffer的接口?
      

  2.   

    /**
     * Start playing a network-based stream (e.g. RTSP stream) at the
     * current position.
     */
    int av_read_play(AVFormatContext *s);
    可以参考ffserver
      

  3.   

    那如何填充AVFormatContext 呢?
      

  4.   

    ffplay用的是SDL做的播放,既然有视频数据了,可以考虑直接拿SDL来播放,就省了ffmpeg来做转换了,
    当然有个稳妥的方法就是,把TS流过来的数据可以考虑先存放到文件里,然后在借助ffplay来播放
    不过这样就违背你的意思了吧你可以仔细看看ffplay的代码,里面也就是获取一帧一帧的数据后,填入一个缓冲队列,然后用SDL来播放,你可以直接获取数据后重装成帧,
    然后往队列里面写数据,原理就是这样
      

  5.   

    重装成帧的过程ffserver里有,多看看代码吧,其实很了然了