ByteScout Screen Capturing SDK - VB.NET - Use Video Quality Profiles for Screen Recording - ByteScout
Announcement
Our ByteScout SDK products are sunsetting as we focus on expanding new solutions.
Learn More Open modal
Close modal
Announcement Important Update
ByteScout SDK Sunsetting Notice
Our ByteScout SDK products are sunsetting as we focus on our new & improved solutions. Thank you for being part of our journey, and we look forward to supporting you in this next chapter!

ByteScout Screen Capturing SDK – VB.NET – Use Video Quality Profiles for Screen Recording

  • Home
  • /
  • Articles
  • /
  • ByteScout Screen Capturing SDK – VB.NET – Use Video Quality Profiles for Screen Recording

How to use video quality profiles for screen recording in VB.NET with ByteScout Screen Capturing SDK

The tutorial below will demonstrate how to use video quality profiles for screen recording in VB.NET

The coding tutorials are designed to help you test the features without need to write your own code. ByteScout Screen Capturing SDK: the tool for developers who want to add screen capturing in their application. Can record screen into video and into single screenshots. Output formats are WMV, AVI, WebM for video and PNG for screenshots. You can adjust output video size, quality, resolution, framerate, video and audio codecs. Includes special privacy features for blacking out sensitive information on screen. Can also capture video from web camera, can add overlays with text or images. It can use video quality profiles for screen recording in VB.NET.

You will save a lot of time on writing and testing code as you may just take the VB.NET code from ByteScout Screen Capturing SDK for use video quality profiles for screen recording below and use it in your application. In order to implement the functionality, you should copy and paste this code for VB.NET below into your code editor with your app, compile and run your application. Implementing VB.NET application typically includes multiple stages of the software development so even if the functionality works please test it with your data and the production environment.

You can download free trial version of ByteScout Screen Capturing SDK from our website to see and try many others source code samples for VB.NET.

On-demand (REST Web API) version:
 Web API (on-demand version)

On-premise offline SDK for Windows:
 60 Day Free Trial (on-premise)

Form1.Designer.vb
      
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class Form1 Inherits System.Windows.Forms.Form 'Form overrides dispose to clean up the component list. <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Me._btnPauseScreenCapture = New System.Windows.Forms.Button() Me._btnScreenCapture = New System.Windows.Forms.Button() Me.label6 = New System.Windows.Forms.Label() Me._numEncodingThreads = New System.Windows.Forms.NumericUpDown() Me._lblBitrate = New System.Windows.Forms.Label() Me.label5 = New System.Windows.Forms.Label() Me._cmbQuality = New System.Windows.Forms.ComboBox() Me.label4 = New System.Windows.Forms.Label() Me._numFramerate = New System.Windows.Forms.NumericUpDown() Me.label3 = New System.Windows.Forms.Label() Me._numHeight = New System.Windows.Forms.NumericUpDown() Me.label2 = New System.Windows.Forms.Label() Me._numWidth = New System.Windows.Forms.NumericUpDown() Me.label1 = New System.Windows.Forms.Label() Me._txtOutputFile = New System.Windows.Forms.TextBox() CType(Me._numEncodingThreads, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me._numFramerate, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me._numHeight, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me._numWidth, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' '_btnPauseScreenCapture ' Me._btnPauseScreenCapture.Location = New System.Drawing.Point(201, 202) Me._btnPauseScreenCapture.Margin = New System.Windows.Forms.Padding(4) Me._btnPauseScreenCapture.Name = "_btnPauseScreenCapture" Me._btnPauseScreenCapture.Size = New System.Drawing.Size(163, 28) Me._btnPauseScreenCapture.TabIndex = 34 Me._btnPauseScreenCapture.Text = "Pause Screen Capture" Me._btnPauseScreenCapture.UseVisualStyleBackColor = True Me._btnPauseScreenCapture.Visible = False ' '_btnScreenCapture ' Me._btnScreenCapture.Location = New System.Drawing.Point(15, 202) Me._btnScreenCapture.Margin = New System.Windows.Forms.Padding(4) Me._btnScreenCapture.Name = "_btnScreenCapture" Me._btnScreenCapture.Size = New System.Drawing.Size(163, 28) Me._btnScreenCapture.TabIndex = 33 Me._btnScreenCapture.Text = "Screen capture video" Me._btnScreenCapture.UseVisualStyleBackColor = True ' 'label6 ' Me.label6.AutoSize = True Me.label6.Location = New System.Drawing.Point(13, 147) Me.label6.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.label6.Name = "label6" Me.label6.Size = New System.Drawing.Size(192, 17) Me.label6.TabIndex = 32 Me.label6.Text = "Number of encoding threads:" ' '_numEncodingThreads ' Me._numEncodingThreads.Increment = New Decimal(New Integer() {2, 0, 0, 0}) Me._numEncodingThreads.Location = New System.Drawing.Point(213, 144) Me._numEncodingThreads.Margin = New System.Windows.Forms.Padding(4) Me._numEncodingThreads.Maximum = New Decimal(New Integer() {16, 0, 0, 0}) Me._numEncodingThreads.Name = "_numEncodingThreads" Me._numEncodingThreads.Size = New System.Drawing.Size(127, 22) Me._numEncodingThreads.TabIndex = 31 Me._numEncodingThreads.Value = New Decimal(New Integer() {3, 0, 0, 0}) ' '_lblBitrate ' Me._lblBitrate.Location = New System.Drawing.Point(348, 147) Me._lblBitrate.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me._lblBitrate.Name = "_lblBitrate" Me._lblBitrate.Size = New System.Drawing.Size(408, 51) Me._lblBitrate.TabIndex = 30 ' 'label5 ' Me.label5.AutoSize = True Me.label5.Location = New System.Drawing.Point(512, 78) Me.label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.label5.Name = "label5" Me.label5.Size = New System.Drawing.Size(52, 17) Me.label5.TabIndex = 29 Me.label5.Text = "Quality" ' '_cmbQuality ' Me._cmbQuality.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me._cmbQuality.FormattingEnabled = True Me._cmbQuality.Location = New System.Drawing.Point(516, 98) Me._cmbQuality.Margin = New System.Windows.Forms.Padding(4) Me._cmbQuality.Name = "_cmbQuality" Me._cmbQuality.Size = New System.Drawing.Size(240, 24) Me._cmbQuality.TabIndex = 28 ' 'label4 ' Me.label4.AutoSize = True Me.label4.Location = New System.Drawing.Point(348, 78) Me.label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.label4.Name = "label4" Me.label4.Size = New System.Drawing.Size(73, 17) Me.label4.TabIndex = 27 Me.label4.Text = "Framerate" ' '_numFramerate ' Me._numFramerate.DecimalPlaces = 2 Me._numFramerate.Increment = New Decimal(New Integer() {2, 0, 0, 0}) Me._numFramerate.Location = New System.Drawing.Point(348, 98) Me._numFramerate.Margin = New System.Windows.Forms.Padding(4) Me._numFramerate.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me._numFramerate.Name = "_numFramerate" Me._numFramerate.Size = New System.Drawing.Size(160, 22) Me._numFramerate.TabIndex = 26 Me._numFramerate.ThousandsSeparator = True Me._numFramerate.Value = New Decimal(New Integer() {20, 0, 0, 0}) ' 'label3 ' Me.label3.AutoSize = True Me.label3.Location = New System.Drawing.Point(180, 78) Me.label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.label3.Name = "label3" Me.label3.Size = New System.Drawing.Size(49, 17) Me.label3.TabIndex = 25 Me.label3.Text = "Height" ' '_numHeight ' Me._numHeight.Increment = New Decimal(New Integer() {2, 0, 0, 0}) Me._numHeight.Location = New System.Drawing.Point(180, 98) Me._numHeight.Margin = New System.Windows.Forms.Padding(4) Me._numHeight.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me._numHeight.Name = "_numHeight" Me._numHeight.Size = New System.Drawing.Size(160, 22) Me._numHeight.TabIndex = 24 Me._numHeight.Value = New Decimal(New Integer() {768, 0, 0, 0}) ' 'label2 ' Me.label2.AutoSize = True Me.label2.Location = New System.Drawing.Point(12, 78) Me.label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.label2.Name = "label2" Me.label2.Size = New System.Drawing.Size(44, 17) Me.label2.TabIndex = 23 Me.label2.Text = "Width" ' '_numWidth ' Me._numWidth.Increment = New Decimal(New Integer() {2, 0, 0, 0}) Me._numWidth.Location = New System.Drawing.Point(12, 98) Me._numWidth.Margin = New System.Windows.Forms.Padding(4) Me._numWidth.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me._numWidth.Name = "_numWidth" Me._numWidth.Size = New System.Drawing.Size(160, 22) Me._numWidth.TabIndex = 22 Me._numWidth.Value = New Decimal(New Integer() {1024, 0, 0, 0}) ' 'label1 ' Me.label1.AutoSize = True Me.label1.Location = New System.Drawing.Point(13, 9) Me.label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.label1.Name = "label1" Me.label1.Size = New System.Drawing.Size(73, 17) Me.label1.TabIndex = 21 Me.label1.Text = "Output file" ' '_txtOutputFile ' Me._txtOutputFile.Location = New System.Drawing.Point(12, 33) Me._txtOutputFile.Margin = New System.Windows.Forms.Padding(4) Me._txtOutputFile.Name = "_txtOutputFile" Me._txtOutputFile.Size = New System.Drawing.Size(300, 22) Me._txtOutputFile.TabIndex = 20 Me._txtOutputFile.Text = "output.wmv" ' 'Form1 ' Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(767, 251) Me.Controls.Add(Me._btnPauseScreenCapture) Me.Controls.Add(Me._btnScreenCapture) Me.Controls.Add(Me.label6) Me.Controls.Add(Me._numEncodingThreads) Me.Controls.Add(Me._lblBitrate) Me.Controls.Add(Me.label5) Me.Controls.Add(Me._cmbQuality) Me.Controls.Add(Me.label4) Me.Controls.Add(Me._numFramerate) Me.Controls.Add(Me.label3) Me.Controls.Add(Me._numHeight) Me.Controls.Add(Me.label2) Me.Controls.Add(Me._numWidth) Me.Controls.Add(Me.label1) Me.Controls.Add(Me._txtOutputFile) Me.Name = "Form1" Me.Text = "Screen Capture Video" CType(Me._numEncodingThreads, System.ComponentModel.ISupportInitialize).EndInit() CType(Me._numFramerate, System.ComponentModel.ISupportInitialize).EndInit() CType(Me._numHeight, System.ComponentModel.ISupportInitialize).EndInit() CType(Me._numWidth, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() End Sub Private WithEvents _btnPauseScreenCapture As Button Private WithEvents _btnScreenCapture As Button Private WithEvents label6 As Label Private WithEvents _numEncodingThreads As NumericUpDown Private WithEvents _lblBitrate As Label Private WithEvents label5 As Label Private WithEvents _cmbQuality As ComboBox Private WithEvents label4 As Label Private WithEvents _numFramerate As NumericUpDown Private WithEvents label3 As Label Private WithEvents _numHeight As NumericUpDown Private WithEvents label2 As Label Private WithEvents _numWidth As NumericUpDown Private WithEvents label1 As Label Private WithEvents _txtOutputFile As TextBox End Class

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Screen Capturing SDK Home Page

Explore ByteScout Screen Capturing SDK Documentation

Explore Samples

Sign Up for ByteScout Screen Capturing SDK Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

Form1.vb
      
Imports BytescoutScreenCapturingLib Public Class Form1 #Region "Fields" Private _capturer As BytescoutScreenCapturingLib.Capturer Private _converting As Boolean = False Private _paused As Boolean = False #End Region ''' <summary> ''' Form load event handler ''' </summary> Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try _cmbQuality.DataSource = [Enum].GetValues(GetType(VideoQualityProfileType)) _cmbQuality.SelectedIndex = 0 _capturer = New BytescoutScreenCapturingLib.Capturer() _capturer.RegistrationName = "demo" _capturer.RegistrationKey = "demo" Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub ''' <summary> ''' Handle screen capture button click ''' </summary> Private Sub _btnScreenCapture_Click(sender As Object, e As EventArgs) Handles _btnScreenCapture.Click Try If _converting Then If _capturer.IsRunning Then _capturer.[Stop]() End If StopCapturer() _btnPauseScreenCapture.Visible = False Else _capturer.OutputWidth = CInt(_numWidth.Value) _capturer.OutputHeight = CInt(_numHeight.Value) _capturer.FPS = CSng(_numFramerate.Value) _capturer.SetVideoQualityProfile(CType(_cmbQuality.SelectedItem, BytescoutScreenCapturingLib.VideoQualityProfileType)) _lblBitrate.Text = String.Format("Bitrate: {0}[kbps], Wmv Quality: {1}, MinQuantizer: {2}, MaxQuantizer: {3}", _capturer.WMVVideoBitrate / 1000, _capturer.WmvVideoQuality, _capturer.WebmMinQuantizer, _capturer.WebmMaxQuantizer) _capturer.AnimateMouseClicks = True _capturer.AnimateMouseButtons = True _capturer.CapturingType = BytescoutScreenCapturingLib.CaptureAreaType.catScreen _capturer.OutputFileName = _txtOutputFile.Text _capturer.EncoderThreadsCount = CInt(_numEncodingThreads.Value) _capturer.AudioEnabled = False _capturer.Run() _converting = True _btnScreenCapture.Text = "Stop screen capture" _btnPauseScreenCapture.Visible = True _paused = False End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub _btnPauseScreenCapture_Click(sender As Object, e As EventArgs) Handles _btnPauseScreenCapture.Click If _paused Then _capturer.Run() _btnPauseScreenCapture.Text = "Pause Screen Capture" _paused = False Else _capturer.Pause() _btnPauseScreenCapture.Text = "Resume Screen Capture" _paused = True End If End Sub Private Sub StopCapturer() _converting = False _btnScreenCapture.Text = "Screen capture video" Process.Start(_txtOutputFile.Text) End Sub End Class

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Screen Capturing SDK Home Page

Explore ByteScout Screen Capturing SDK Documentation

Explore Samples

Sign Up for ByteScout Screen Capturing SDK Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

VIDEO

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Screen Capturing SDK Home Page

Explore ByteScout Screen Capturing SDK Documentation

Explore Samples

Sign Up for ByteScout Screen Capturing SDK Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

Tutorials:

prev
next