菜鸟教程小白 发表于 2022-12-13 11:39:45

ios - 如何使用 VideoCore 创建编码 session ?


                                            <p><p>我正在集成 <a href="https://github.com/jgh-/VideoCore" rel="noreferrer noopener nofollow">VideoCore</a> RTMP 编码器进入我的应用程序,但我无法启动新的编码 session 。我看到了 <code>VCSimpleSession</code> 类,但是如何启动编码器并查看输出?</p>

<pre><code>VCSimpleSession *mySession = [ init];
</code></pre>

<p>我没有看到预览 View 。我做错了什么?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>VideoCore 使用简单和复杂的图表。 <code>VCSimpleSession</code> 是设置编码器的最简单方法。</p>

<p><code>VCSimpleSession</code>有几个不同的初始化器:</p>

<pre><code>- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps;

// -----------------------------------------------------------------------------
- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps
         useInterfaceOrientation:(BOOL)useInterfaceOrientation;

// -----------------------------------------------------------------------------
- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps
         useInterfaceOrientation:(BOOL)useInterfaceOrientation
                     cameraState:(VCCameraState) cameraState;

// -----------------------------------------------------------------------------
- (instancetype) initWithVideoSize:(CGSize)videoSize
                         frameRate:(int)fps
                           bitrate:(int)bps
         useInterfaceOrientation:(BOOL)useInterfaceOrientation
                     cameraState:(VCCameraState) cameraState
                        aspectMode:(VCAspectMode) aspectMode;
</code></pre>

<p><code>videoSize</code> 是您的编码视频所需的分辨率。</p>

<p><code>fps</code> 是视频帧率。根据您的服务器设置,您可能希望将其设置为 30,如果您的服务器支持,甚至可以设置为 60。</p>

<p><code>bps</code> 是视频比特率,以比特/秒为单位。</p>

<p><code>useInterfaceOrientation</code> 用于通知编码器设备方向发生变化。传入<code>YES</code>将告诉编码器在您旋转设备时旋转视频。</p >

<p><code>cameraState</code> 用于使用所需的相机源启动编码器。 <code>VCCameraState</code> 枚举有两个值:<code>VCCameraStateFront</code> 和 <code>VCCameraStateBack</code>。</p>

<p><code>aspectMode</code> 用于设置预览 View 的纵横模式。 VCAspectMode 有两个值:<code>VCAspectModeFit</code>(您的 session 视频预览应该“适合”其父 View ,以及 <code>VCAscpectModeFill</code>(缩放您的视频预览以填充其父 View )。</p>

<p>使用这些初始化程序之一来创建新 session 。确保在初始化后将 session 保留为属性或 ivar。初始化后,将 session 的 <code>previewView</code> 属性作为 subview 添加到 ViewController 上的某些 <code>UIView</code>。</p>

<p>要连接到服务器,请在 session 中使用 <code>startRtmpSessionWithURL:</code> 方法。要停止您的编码器,请调用 <code>endRtmpSession</code>。</p>

<p>您的完整设置可能如下所示:</p>

<pre><code>@property (weak, nonatomic) IBOutlet UIView *previewView; // This is a UIView on your view controller
@property (weak, nonatomic) VCSimpleSession* session;

// ...

- (void)viewDidLoad
{
    ;

    self.session = [ initWithVideoSize:CGSizeMake(1280, 720) frameRate:30 bitrate:1000000 useInterfaceOrientation:NO];

    ;
   
    ;
}
</code></pre>

<p>完成后:</p>

<pre><code>;
</code></pre>

<p>我在 VideoCore 示例应用上做了一些工作,您应该查看 <a href="https://github.com/jgh-/VideoCore/blob/master/sample/SampleBroadcaster/SampleBroadcaster/ViewController.mm" rel="noreferrer noopener nofollow">sample view controller</a> .</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何使用 VideoCore 创建编码 session ?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33535218/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33535218/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何使用 VideoCore 创建编码 session ?