在android上实现ffmpeg的pipe功能,实现除了file和网络协议以外的流媒体播放

本文介绍了如何在Android设备上利用ffmpeg的pipe协议功能,结合 Mediaplayer 实现流媒体播放,特别是针对IPTV数据处理的实时输出需求。通过创建有名管道并实现读写功能,将数据传递给播放器,从而实现类似IPTV的流媒体体验。
摘要由CSDN通过智能技术生成

1.ffmpeg支持CONFIG_PIPE_PROTOCOL协议,说白了就是命令管道的使用。

  pipe的使用和file的使用是一样的,不同的一点在于file是可以去不断的去读取和seek的,这样在ffmpeg中就会把pipe协议当成一种流媒体来处理。

也就是URLContext->is_streamed的类型。


2.在什么情况下使用ffmpeg的pipe呢?

  现在android上最常见的播放流媒体的方式有两种,一种是file的方式,一种就是网络的形式。但是现在类似IPTV的数据处理不是这两种方式,需要实现数据的实时输出。这种是APK通过各种协议把数据处理完以后传递下来的,用传统的两种方式并没有办法管理这些数据,这个时候就需要使用的ffmpeg的pipe功能了。


3.先完成两个可执行文件,完成基于linux下的pipe的动能。

  3.1 以下代码实现有名管道的写入功能(TestWriteBin)

  #define  FIFO_NAME  "/data/iptv_hls_pipe" 

  int main()
  {

FILE* file = NULL;
int  fifo_fd;  
  if(access(FIFO_NAME, F_OK) ==  -1)  
  {  
    fifo_fd = mkfifo(FIFO_NAME, 0777);  
    if(fifo_fd < 0)
    {
      return 0;
    }
  }   
  fifo_fd = open(FIFO_NAME, O_WRONLY);  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值