【问题标题】:How to create RTMP/RTSP player using FFMpeg for ios如何使用 FFMpeg for ios 创建 RTMP/RTSP 播放器
【发布时间】:2015-01-06 17:17:01
【问题描述】:

我正在开发一个使用 RTMP/RTSP 链接来广播/播放实时音频/视频的应用程序。由于 iOS 设备支持 HTTP,但我的要求是播放 RTMP/RTSP 链接。 我想使用 FFMpeg 框架创建我的自定义播放器。我在互联网上搜索过很多解决方案,但没有找到任何解决方案。

【问题讨论】:

标签: ios iphone ffmpeg xcode6 http-live-streaming


【解决方案1】:

要在 iOS 上使用 ffmpeg 播放 rtsp 流,我推荐 https://github.com/teocci/RTSP-Client-iOS

作为参考,这里是基于RTSP-Client-iOS/RtspClient/ViewController.swiftRTSP-Client-iOS/FFMpegDecoder/RTSPPlayer.m 的Objective-C 接口;

//
//  ViewController.h
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIImageView *imageViewInstance1;

@end


//
//  ViewController.m
//

#import "ViewController.h"
#import "RTSPPlayer.h"

RTSPPlayer *rtspPlayer;
int frameIndex;
NSTimer *timerRefresh;

#define CAMERA_RTSP_ADDRESS "rtsp://..."
#define CAMERA_FPS (30.0)
#define TIMER_INTERVAL_SECONDS (1.0/CAMERA_FPS)


@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString* address = @CAMERA_RTSP_ADDRESS;
    rtspPlayer = [[RTSPPlayer alloc] initWithVideo:address usesTcp:false];
    rtspPlayer.outputWidth = 640;
    rtspPlayer.outputHeight = 480;
    [rtspPlayer seekTime:0.0];

    timerRefresh = [NSTimer scheduledTimerWithTimeInterval:TIMER_INTERVAL_SECONDS target:self selector:@selector(run:) userInfo:nil repeats:YES];
}

-(void) run:(NSTimer *) timer
{
    if(![rtspPlayer stepFrame])
    {
        [timerRefresh invalidate];
        [rtspPlayer closeAudio];
    }

    UIImage* uiImage = rtspPlayer.currentImage;

    _imageViewInstance1.image = uiImage;

    frameIndex++;
}

@end

在用户界面中创建一个ImageView对象(_imageViewInstance1);

  • 项目导航器(左窗格) - [INSERTAPPLICATIONNAME]
  • 打开 Main.storyboard
  • 选择视图控制器场景-视图控制器-视图
  • 选择库按钮(右上方:带内方的圆形)
  • 搜索“图像视图”
  • 将新的视图图像对象拖放到视图控制器场景 - 视图控制器 - 视图中(相邻的“安全区域”)
  • 为新的 Image View 对象创建一个出口连接
  • 选择助手编辑器按钮(右上角:两个相交的圆圈)
  • 在 Project Navigator 中选择文件 ViewController.h
  • 如有必要,隐藏左右窗格以腾出更多空间(右上角:左竖条的蓝框,右竖条的蓝框)
  • 按住 Ctrl 键并将新的图像视图对象拖到 ViewController.h 文件中(紧接在 @interface ViewController: UIViewController 下方) - 将对象引用命名为 imageViewInstance1

【讨论】:

    【解决方案2】:

    以下是 iOS 上 rtsp 当前解决方案的概述: https://gist.github.com/oc2pcoj/e55795550984d205d109 我在当前项目中使用 ijkplayer 来播放来自 IP-cam 的视频流。它工作正常。

    【讨论】:

    • 没有。 ijkplayer 有两个平台的解决方案。但是 Github Gist 只描述了 iOS 的解决方案。
    • 非常感谢!最后!这是一个“开箱即用”的 rtmp 播放器,按照说明轻松设置,它不是付费版本或试用版!
    • 这里的任何人都遇到了问题:几分钟后它停止了播放。我需要重新启动。
    【解决方案3】:

    有一个基于 ffmpeg 的 Xcode 项目。可以播放 RTSP 链接。看看它: https://github.com/durfu/DFURTSPPlayer

    如果您想了解更多关于 RTSP 的信息,我强烈推荐您以下链接: https://www.rfc-editor.org/rfc/rfc2326

    【讨论】:

    • DFURTSPPlayer 如果只播放音频流则失败。我有使用 gstreamer 播放的圆顶 rtsp 流
    • DFURTSPPlayer 快两年没有更新了。目前是否有任何活跃的项目可以协助 RTMP 流式传输?
    猜你喜欢
    • 2016-10-22
    • 2012-05-06
    • 2013-12-20
    • 2013-09-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2022-01-24
    • 2019-05-18
    相关资源
    最近更新 更多