Skip to content

Instantly share code, notes, and snippets.

@itcmarcinrabieko
Created September 13, 2023 09:03
Show Gist options
  • Save itcmarcinrabieko/1e36f9ba3e379d854bd339e9e3ca37ea to your computer and use it in GitHub Desktop.
Save itcmarcinrabieko/1e36f9ba3e379d854bd339e9e3ca37ea to your computer and use it in GitHub Desktop.
//
// ViewController.swift
// WaveformTest
//
// Created by Marcin Rabieko on 13/09/2023.
//
import UIKit
import DSWaveformImage
import MediaPlayer
class ViewController: UIViewController {
let base64 = "UklGRu4rAABXQVZFZm10IBQAAAARAAEAQB8AANcPAAAAAQQAAgD5AWZhY3QEAAAAQVYAAGRhdGG6KwAA+P8AAKcEPIu1Awg9C8SzAzyLtQOIPUvAA4A9i7UDCD1LuMNIOwyztFg7i7WzWDuLAMUwOwzDAz07i7XDMEs70AOAPYu1swM9S7jDAz2LtMMwS4u1s1g7O9CzQDwLwwMIPUvAAwg9C8SzMDyLtcMwS4u1s1g7i7UDPEu4w7NYOwyzBDxLi8OzQEuLtAM9S4vDs0BLwLMDPUuLw7NAS4u0wzA8i7XDMEuLtbNYO4u1swM9C8SzMDyLtcMwS4u1s1g7i7UDPEuLw7NAS4u0Az1Li8MDgD0LtLRIOwzDAwg9i7XDMEuLtQMIPQDYs1g7i7WzWDuA0LNAPAvDs1g7gNizQPj/CAC0ODwA2LMEPEu4w0g70LMDPTsMs7RYO4u1AzxLi8OzQEuLtAOAPgvEszA8i7UDiD3As7RIOwzDAwg9gNCzBDyLtbNYO4DQs0A8C8MDPTuLtcMwS4u1swM9wLOEgDxLwLOEO4y0wwOADbMEPDsMCLRYOwyzBDxLi8OzQEuLtMMwPIu1wzBLi7UDCD3As7RIOwyztAM9i7WzWDuLtbNYOzvQs0A8O8ADCD2LtcMwS4u1s1g7i7WzAz0LxAM8O8CztEg7DMOzWDsMs7RYO4u1s1g7i7WzWDuLtbNYO4u1s1g7i7WzWDuA0AOAPTvQs0A8O8CzBDyLtbNYOzvQs0D4/wkAs0CLgLbDA0uA0LNYO4u1s1g7i7WzAz1LuMNIOwyztAM9C8QDCD2LtMMwS4u1AzxLCMizWDsMs7QDPQDYAwg9C8SzMDzQs7NYOwyzBAg9wLOEOzwLtLRIOwDoAzxLi7TDMEs70AMIPQvEs4BAS4CAgIA/0IAwPMCztEg7DMOzWDuA2AOAPQu0tEg7AOizQDwLw7NYOwyzBAg9ANizWDuLtQM8S4vDs0BLi7TDMDxLwLNYO4u1Awg9S7jDSDsMs7RYO4u1s1g7i7WzWDvAs7Q4PAu0BDw7DMOzWDs8sLQDPYu1s1g7i7UDCD0LxLMwPIu1A4g9wLO0SDs8wLNY+P8KALNYOzvQs0A8C8OzWDuA2LNAS4u0A4A+wLO0SDvIs7RYO8CztDg8C7S0SDsMw7NYOwyztFg7gNCzhDvQs8MwPEvAs1g7i7WzWDvAs4Q7PNCzs1g7DLO0WDuA0AOAPYDQs4Q7jLTDMEs70LNAPAvDs1g70LPDMEuLtbNYO4u1s1g7i7UDCD3As7RIOwyztEg7PMCzBDyLtbNYO4u1swM9C8QDCD2LtMMwS4u1s1g7i7WzWDvAs4SAPNCzs1g7DLO0WDuLtbNYO4DQs0A8C8OzWDs8sAQIPYu1s1g7i7WzAz0LxLMwPEvAAwg9C8SzMDzQs7MEPIu1s1gLCMSzMPj/BwC0WDuA0AOAPYAMCAhoO9ADCD1LuMMDPTvQAwgNOEvAAzwLtAhYgDyAgICA8Am1CEiA0AMICAj4CYWLULjDgIC1AwgICAkAAPAJgICAFwgICAgAAADwWbiAgICABwgNAwgICAjwCYWADAgIaIDQAwiAgIDwCYCAgKe0AwgICAkAAJ+1s1gLCIiAcDuACAgILzzQs0g7gNgDjICAtgOIgIDwCVg7jLTDMEs70LOEO9CzAz0LiLXDSAgIgIA/iwCF0DA7jISAAOgDgA0DiD0A2ICAgICQcIGAgIAALwwICAh4OwAICD+A2IBAS4CAgIA/i7UIiFBLwAMIPQDYswP4/wYAtUg7DLO0Az2LAMUwOwDoA4A9O9CzQDwLwwMIPYDQswQ8i7WzWDs70AOAPYDQAzwLCAgIeEqLtAOAPgANwwM8gNCzSDsMgLQDPUsICAg+gNCAQIuABQgIPsCAhIA8C7S0Az2LtQMIPcCztEg7PMADgD0LxLMwgOCAhIA8gNADCD2LgLYDPYu0gwA9i4XAMEuLtMMwPIDQs1g7DLO0Az1LuMNIO9CzwwNLO9CzWDvAs4SAPIu1wzBLwLO0gzwLtLQIWIu0wwM8S8CzWDuLtbNYO4u1s1g7i7WzWDuLtbNYO4u1s1g7gNCzhDuMtMMwS4u1s1g7gNCzhDvQs8Mw+P8HALRYO4u1swM9C8SzMDyLtcMDS4u0wzA8i7XDA0s70LMDPQvEszA8i7XDMEuA0AOAPYsAxTA7AOgDgD3AgLRIOzzAA4CAgIDwwjCMtMMDi4C2A4iAPgDYA4A9wLMEDAiIgLYIBAgID0gIPMADPIuEwDCAgPCAhIAMMIy0CEiAgIDwSAgICOiAgAUMCIgFCNgDjECAjLQIhICA8IAwAOiAgFAICOiAgLUDiA1IOzzAAwgICPgJUAgICD87gNBIi0AICAgPCAiFgAzDAwiNQMCzA4A+ANgDPEu4AwgOCIgFCAgOwwOADUi4WDuLhYCAgA4DCOiAQMADCD0LiLVIi/j/BwBAgIAOs1gICNAICGi4wwOMhIAA6DCA0LMICIaA0EgIDAPYgECAgOAwDIAECIAOCAQIDQhIgICADwOIgA4IBAgIDwgDgIA/i7UDCA0IWAgI0AgECAjogECAgA4IWAjIgIAFCAgOCISAgA4IBAgIDghIgNAICGgIyICABQgIDghIgIAOCAQI2ICAUECL0IBACAiNgFAICOiAhIAAjYBQCAiNgFAICOiAgFAI2ICEgADogECAgOCAQAgI6IBAgIDggEAICOiAgFAIDQgIhYDQgICFgACNgFAICI2AUAgI6IC0A4jggEAICI2AUAgI6IBAgIDggIBYgNCAhICA4ID4/wgAhICA4ICABAjogECAgOCAtIM8AAgICAmfAAh4wLMIBAgI6ICAgAYI2AOAgPAICIBguAQ8gAAIDwhYCAgIjYCFiwAICAcICA4DiIA+C7RYuMOABAiA8ICAUAgIDUgICIAOCFgICA0IWAgIDQhYCAjQSDuACA4IhICADggIhYANCFgICA0ICIWLgIBwgIDgMAwDgOCAgAQI6ICAhYDQgICFgNCAgIWA0IBAgIDggIBYgNCAQAgI6ICAUAgIPdADCNiAgFiAgOCzA4DwgIAAhYCAgIAAnwAIeICACAgICQCfAAjGA7gECAgIj4BQCAjQCAQICA4IiLUDDcMDgIDw+P8LAIAwjIBQuAQICOiAgIC2SDsACAj4CYWAAAj4MDywCAh4O4CAgIAAnwAICHiB0AMICAiPgAhogICAgJAAnwBoi4SA0DCACD7AgICFgACNtEg7DAgIhYCAgIDwCYCAcMAw0IPAgEDAgLSDAAgICJ8ACAgIABcICAgInwBouAPQswgIhtADDEgIyANLwDAMA4CA8EgICIgNCAgIh4AACAgIAADwWQsIiAUMAz24WAsDPYuEgICA8AgIgGAMA8gDgA0DCAiPMAAICI+ACGiLgAUICAgICS8ACPiAQAyAhICAPQDYMNADDAMI6APQgICAUICAgA8ISNAwgICAgD/QMPj/CQCAQNADCIiADgi0WIu0iIWA0AMIiD0ACAgI+QINCAhoCAgNswgIeMCAMAAICAgA8MKAgIAGyAgEPIAACPgwgNiAgAUICOgwPNADyLNAgIA9AAjogICABsgDDQMIDUi4CAgFCAgIP9CDgNCAQMAwgAjoA9CzCIWADAMNAz0ICA0ItAgIaICAgICQAACfAAgICKcEDMMDgICAgAAAAJ+FCwgICIfAAwyAgIBwCAiAgIDwCYCAtwMNAwgIDgiIgAYICAgICfAJUAwwgNgw0DDQgIAEDAMI6IBAgIyAhcADgNiABAgNSAgIPcAACAQIjYSADAgECAgI+AmAYAgNSAgIAAkAwAPIgECA0AMICAgIAJ8AxQAIiAUICAj4AwiNQICA4DCA2IC0A4A+wAOAgA4IWAgIgIDwAw0ISMAwgIA+ANgDCICA8AOIgA4ICAiHwDDQAwiI4DCA2DCMtEiLA4CAgC/Qs0A8wAO4CIWA0AMI6IBAwIBAuAjFMDsACAgI8FkLwzAACAj4SLjDA4yEgNADPAA9i4SLUIuEgDyA0AMICA8DCA0IiLUIBD2LtEg7yIC0WAi4BAgICPgICGi4CFAICAg/wAM8wAMMAwjYA4xAwIC0iFAICA2zCAiG0AMIiD0LWIsECICAgJ+1s1gLCEjQAzyAgNgDPIA9wAOADUiLCAAIANCAMIyAUAgICPizWLiAgIC2AwgICAkAAJ+1gITAgIAIBQjoA4AIPsCAgIBgCAgICPjCMIyEOwAICAgvDAgICAgXiICAP4CA8DDAgEAMgISAgIDwAwgI6DA8gNBIi4SAgOADDEiLtDjQMEvAMIAICPgDDQgItUgICAgI+Eg7gA0IiFCAgICALwCNgFAMs8MwgICAkACfAAgICKcIhYCAgICfhYCADQgIxQAISNADCIiAgJAvPMADDQjDs4BQgD3AA4CAPgtIi4CGOwAICPgCgD7As7RIiwiAYDyAgICADwiIBchIO4DYMIy0Aw2Di4WAAAgICJ+1gIAIaIDQAwgACACACAiPgAAICHiBgPAwgDyAgPADCA0ISIuFC8NIuFi4gEDQAwjYAwxIi7Q40AM8AAjoMIuAtghIi4WA0DCAgPADPItAi0CLtQOIgD4ACA7DA9Awi4CAgHDRgzsACA8DCAgOwzALBA0DPMCzQAg9gIANwzAAPYAMCAi1BAgICPizWIuACAiHOwA9gIAOCFi4WLgw0DCACOgDjIBQuLRIgAA90DCLQIuFO9ADDAOMhIsAhYuFiwCFS4CA4APIAzyLULhYi0AIPYDQs0i4SDsAjYBQDLNYuAOA4AMMCAjFMIAMCLQIxQO4BAgIDgOIDQMNCEiA0APYMICAgIAAAJ/4/wcAgICAcIE9wAOACD7AA9AwDLNYCAjYA4ANSLgICAUNswPYMIDggISA0AMI0EiLtIi1MIAIPoA8wEi4wwOMtEgIyAgEDAM9CDwAiA3DSLgIUAjYs4Q70AMIDQhYi4BYwICEgIA9wEgICNBIuMMw0ICABD2AgNgDjLRIuEg70ICEwIC0SIsDDQMNAzyLtQMIgA6zCIWA0EiLhItAgA1IuMMDjLQIhIDQAwjoMNAwgIyEwDCAgIAPAz24WLgw0AMMs1i4WLgDjIQ7AD2LhYsAxTCAAAg/wAPIA4uAgIAXDQMI2DCAPQAIDsMwAA3DA9AwiwTIs0DQMDvQMNCzA4g9CAAIAAwDPIuFO9CAtAMNOADYAzzQswgEDEgIyAMICA8DCA1ICAzDA4u1A4jgMDywWAgMA9izhDvQswiAtkgICAjoA4ANSIuFgIA9wADDCAQIPYAMw7NYi4Q7gOAwgNiAgFDQs0gICICAgJ+FO8ADDQPISIu0OAwDCA4DiA3DSAjIgIC1AwgIP8ADDEiLgAi1WAgIgPAwwIC0iFA7gNizQIuAgHCLBAyzBAjYswQIgIA/gAAICD+APTsACAg/gNiABAyzWLgDDQgIaItACAgICI+ABAiNgIWLUAgIPcAwS8AD0IOAPAAICAgJAJ9Qi4TAgEAMAwwDDbNIwICEgAAI+AgACgCA0ICAgFDQAwiIgICQ8AKA8AMMAwgIPoAAjYCAhoA8wAi0Aw0DDQgICAh4gAA90APIMADYMNAw0IOAAD2AgICAAAAv0ICAhTsMAwjoA4CADsMICIWLgIAHCIiA8AMICAg/gNCAhIuAgIBwW4CA0AMMSIu0ONADPAtYi4SLBAiAPgvEAAhIi1AMMAwDgD0A2AOAgICQAAAAAAAALwA9gIDwAwiIDUjAMIuFOwAI+DCACA7DAAhYwAMMAw0ICLVIi1gLSAjICFi4CICABzyAgAgI+AMICAgIAPDCgEDQMICMgIC2CIgFyAM9wLMDPYCA2AOAgPBICAwIWLgDPIAIAAYAgICAAAAAAJ9QOwyABDzAAEjAgISLAAgICAAAAACnCAgItwM9gAAICAifhYCLhYAACAgIAAAALwxIwAOACAj4AwjoMIuAYDzAMIsACMYACEiAgA4ItMMDCAj4gIAECAgICAAAnwAICHjRA8gASIAMSIAACD+LgIBgCAg9gICAPzsACAgIAAAA8ALQAwjoA4AIPoDQA4AICPgIWDuACAj4CAgICHiBgIAPAw0ICAi1WIuACAgIF4iAgJAAAC8Mw0gIDEgIPAvEszCAgICQAAAvAAgICADwwgOMtAM9uMOAgIAGCAgICPlZuAM8S8ADCNAICGiLhMADDAi0CAgFCAAHAICA8AgIgLZIuAM9wAMMMNAw0IADjICAhoA8wAMICAg/0LMDPQgIgICAAADwAg0IWLjDA9CAQAyzAz0LhIDQswiFi7UISIuAYLi0Awg+wIBAi4AFPMAD0DAIDbNIO9ADPAAIjYBQCAgICAgAL9ADgAg+gAwItAQICAj4SAjIs4AFPIAMA9izQEvAAwgNs1gIDAMICD+ADICAgICQpwiFS4uAUICAgA/DMAANSDvIs0DQMMCAQAgIPYCAgPDDs0DAMNAwCAgIP4DQg4uFwAMMAzwADQgICAgIedGAMAAICAgA8MKAgAUIPcADPLC0CLQECA3Ds0CAjLQIhEvAMAgACACAPYtQCMgDgIAOSDsACAj4woBAgICAgAAA8AmFgAAICAgA8AmAgAcIiICAj4CAgIBwgYAOCFi4wwOAgA4ICAh4gDwACAiPgLUwPAAICAiPgAgItwOIgD4ADUgICNgw0DDQgIC0A4CAgPAJgICAcIGAgICfAAjGAEgICAgI+AgICAh4gYCAgAAvAAgICJ8ACAgIFwgICAgA8AmAgIAAAAAXCAgICPAJhTsAPUuLtAMNswiFgD3AA4A9wABIgAAICPhZC8MACAQICAgInwBoCAiA8ICAhcAwgNCAhIDQA9AwCAiNhIAACAj4CYCAgABwgYCAgAAAnwAIxjDAgID4/wYAhYAACAgIAADwCYCAgHCKULgECAjoA4A9AAgIj4C1MIDYA4CAgJAALzwLCAh4wIC0SDsIgICA8FkLCIiAgHCBPYAMAwgIj4BQi0AMgEAICAgICADwAoCADwiIUIuFwIC0A4iA8Ei4CFg70DAIPYCACAgICS8MCLQIaAgIgIAPSDsI0EiLhIsEDAM9i4SAAAgICAAA8AINAw0DyAhYO4ANAw0ICAgICBfYAzwAiICAj4TAgIBQDDCADQOIgD4A2DCA4ICAWIu0Az3AA4CAgIAA8AINCAgICHiBDUgICICAgJ+1gIAICHiAPADYA4ANCAgICHmBPQCIgPADCD2ACAAHADyLtcMASIAACPgDCICA8AOIDcOzCAgIeIHQSAgIgIDwA4gNAw0IhEvAAzwAiA0ICGiLgFCADQMICAgI8AmFwAM8sAgIeMADDAhYCAgICAgILwwICAUIPUuAgIDwAwwIxAAD2DDQMAgICPiAgFiAgA0DCAgICQCfAAgIeIqFgAAICI+ACAh4gAAICAjwwjDQswiAYLgECAgICAnwCbUIiICAkAAXCAgICAAALwwIWIsEPMCzQICAgIDwCQQIPYDQAw0DyAgIaLgDgICAAACfAAgIBzzAgEDAAwjQAwg9gD0LhItQuLRIwICEgAA9S4CA4ICACAUICAgIAAAAnwgABwCMgIWA0AM8CwTICAhoCAgNCAiFgICADwiEgIA+AIiAgD+LgICAAKcECAgICJ+AgIAHPACIgD5LgNAwgICAgADwCYBgDAMIgICAAACftYCEi7QIhYAACA8IWAsIiAUICAgICZ8ACIaLgIAHCIjggIAIBQjoAwwD0AMIgPCAtAgD0EgIyIAECA0DPcAwgIDggIAIBQgIDwMICAj4CAgIxgMICOgwgICAP8CAhMAD0DAMMNCzCIgFCAgI+LMEPIsAhYCAgPAIhICAgIDwCYCABwiIPQAI6DDQgIC0CIXQMIDQs1gLA9gDCIDwA8gDgICA8AiIUIuFgAAI+IC0iIUIAAoAgIAICI+AAAiGgIAOswgIeICA2AOADQgECI2EOzwLBNgwgICAgPACgD4ADYPQMMADPAuEgICAgJ8AhdCAgIWA0AMI2ICEgICADgPYMIANwwgECA3DA9ADyADDSAgMswiFi4WAAAgICPDCgIC1SMCzQDwLAwgICAnwAoCAD0iLCIWLUIuEgDzQAwiIgA4D2AOADUg7AAgI+AmAYAjYs0AIPYCA2LOAgAYICAgIn4AFCAgICAkvPAsE2LOACGiAgICA8MIDCAj4gLSIUDuA2LMEPMAAAw0DPbjDMIDgAwwDPYDQgAOMhIAACA+zSMAwgNADCD2ADQM9gNAwDAMMCAAJAICMgIWLUAgIgIAPCISAgA5IuFi4MNADCICAgJ+FgNAwwDCADQjEMIAA6LOACLUIhYCAgIAAn1CLhIsEDAMICAgInwCFS4CAPQAIDki4SIDQA4DYMIy0SAgICD7As4AEDUgIyLOEO9CAhIDQAwwwgICAkPBZCAgIjUDAgEAICI1Ai4AFCNizQNAwgICA8AgDgIAPA4gNAwgOA4g9AAgI+EgICA0IWIuEgNCzCICAgKdYCMgD0AM8ANizCFAICOizhICAgIDwScCAgICGgAAIDwhYCDyAgNAIWIuACGiAjITAMNADCIjgswMNCAiFi1AICAgPCAiAhoAACA8DyPj/CQAwgICAj0CAgA0D2IAEDAMI6DCLhcADgAgIj4AAxQMICAj4MAyAgFCAgPADCIiAgD/QAzyADAOMgICABwiIgA4DCOgwgIAOAwjogLRYCLgECAgOA9izA4DwgDA8CwgF2DCAgIDwA4gNCAQICPiAQLgECAgICJ+AgIBwCwXIA4A9AIiAgJAv0ICEgDzAswQIPYAACA8ICICGgAAI+ICACAUICPgwgAjoMNADPAuIUItQCA0IWAgICAj4gIBYiwQIgICAnwAICAgAABcICAgIAAAv0IBAO4CA8AhYCAwDCNAICIXQMICA4DCACAgICZ8AhYCAgICfAAgIBwgICPj4/wkAgLQIhcCAgIWA0DBLwAMIgIA/wAOACAgICfAJgLYIiFDQswMI6ICAtQOIgICQnwAICAcICD7AgIBQuAiFgIAOswhoCAiAgA8DiICAkJ8ACAgIFwgICI+0iIWAgICAP8CAgICAcICAgICQAJ9QOwyABAgNAw0DPIAA6AM8AA0IA9AIBAgNSAgMA4gNCAi1WDuACAgICQAvAD2LhYsACIZLgICAgJAAAAAv0ICAUAjYgISLAGg7gAgICAmfAIWAgA4ItAMICAgJAPACDUi4WLiABAxICAiAgA8IiLUDPYAAjYSA0ICEgNAwgD3AA4CADgMICD+AgAgOCIiAgAcICAAGANBIuAhQCAgI+ICEgNADyIC0WAgICAgI+AmFgDzASLgIhYAACAgIAJ8ACHiLgICAgAAXCAgICJ8ACHjAAwiIgIDwCQhogNADDLNYi4C0BAgICAj5CVAMgLTDMICADghYuFgICAgIDwjDMIyAUAgI6ICEOwAICD+ACOizQIuFgAAI+AM8wADDCAhoCAjQswiFgICA8AiIgHAICD0AiOADCA0ICIVLgDzQswhYO4AICPgItEiA0ICAhYtQCMgwgICA8EmA0IBAOzyLhYDQAzywCIWAPcADgA0IWAgIgIDwAw0ISIsAhYCAgIDwwgOAgIA/i4CAtwgEPMADPAANAwgACAA8sAQI2DDQgIC0WAgIPQCI4AMI0EgIPAuIBQwDDYNLgIDggIAIaICAgPBIi4CFwAO4WAgI0AgECA3DMMADPYCAPYA8wEg7gA3DMMCzCMUDuATIAwgICPhZC8MwwAgIxTCAPMCzWAg8wAOAgIAPwwAIWICAgICQAAAAAPBZuDDQswhQCNgDPAAIjYCAhjsACAgIn7WzCICABwiIgPADPDsAjUCAjIBQuFg7gAgIP8ADCA0DCAg/gAyzBAyzBAwDiIAOw0gIyAOAgIA/0AMMAwgICD+LBAgNAw1ICAgNCEiA0APQgAOMhIu1MNCDgAAIDwgIgIaAPAA9gAxIgND4/woAgEC4BMhICAiAgIDwWbiAQICA8LNICDwA2AMI0AMNAzyAAOizgFjAgIAIBQgICAifAAgICBcICAgIAPAJgICAAABwgYCAgAAv0ICAgGA8gICAgIAAAJ8ACAgIFwgICAjwAg0IBMhIuAPQAwg90APIAAgICHiAAAgICADwCYCAgABwgYCAgAAA8AmAgIAAFz2AgAgICJ+AgICQcIGAgIAAAPAJgICAABcICAgIAACfAAgICABwgYCAgAAAnwAICAgAFwgICPhZCAgNCAiAYAgICAgIL9ADDICAgAYIPYAACAiPgAgICAkAFwgICAgAAC8MCAgIh4AACAgIAACf+P8HAICAgHCBCAgICS/QAwyAgICAcIEICAj5AoA+C4iAcDuACAgI+QmAgLezWAgIgICA8AINCAgIeItAgICAPgAICPhIi4BYO9CzA4AOs1iLtIhQuAOAgA8DiIAOCAgIt0g7CICAgC8MAwgOCIi1AwgI+AMNSLgDDQgIgIaAAAj4gLSIAAh4wLNICAiAgA8DDcOzgEDQAwiIgICQAAAAnwAICAcICAiPhIDQgDCAgA4IWICADQMNCMSzgIAFCNgwgOADPMCzgIBgPIDQMICMtAhIgIAOCFgICIDwgISAPLAIhYCA8IAw0LO0iFAIDLNYCAyzBAjYA4DgMAyAQNADCAgABwCAPUvAgICAgHA7gICA8Ek7AOiAgFC4BAgICPgICAgIeIqFgAAIP8Czs1i4CICAcICAgIDwwkg70ICAgLVIgAAIDwgDgIAPCEiAPQANg0uAgIDwAwwISEvAAwjQSDvQs0iLCICGgAAIDwhYO8ADDDA8gD3AAAMICI+AAGi4WDuAAI2AUDyA0ICEgIAIDkgIDMMDi4CGgNCAQICAgD4ADcOzgIWLtQM8S4sDgIDwSDvIA4CAgPBJwAMMgIAFCNgw0AMIDUgICNAIWLjDgIBQgIA+ANizCIWLAIWLULgIaLgD0AhYuFgICD2AgAjogIBQi4XAA9CDOwAICAifAMX4/wsAgLOAUICAgA/Ds0CA0AMIPQDYgIBYgIyAhTsACPgDPMAwAAjogIC1AwjoAzyA0AgIxQMMgISAjEDAAwgNCFg7gNgD0AMIDQMIjYCAYAgNAzyAAI1AgIyAUAyAgAQIPdADCNiAQAwDDAMI6AOADUiLw4BAgNBICAiA8IAwAOiAQICAgPAIA4CA8MMwS8ADPLAEPIsAxQMIPYuEgNADDIBAgIDws0g7gNizgFBLiwQIgIDwCIhQgICAgJ+FwDCLAIXQs0g7gAgOCISA0AgIxTA7DAMIPsADPAsIaItACAgICAgvDMMICIWA0AM9wAMIiOAwDICAtUg70LNACNgw+P8IAITAgIBYgICA8EgIyLOAgIaLULgDPQDYAzwA2IC0gzwADUiLAw0DCI1Ai7QIUAwDCNBICAgNCAgIeMADPIDQgzsA6IC0CEiAgICAn1AIyDCMQMADDAMNAwgI6AOMgIC2CISAgIAPA4gNCAhogICA8AM8gNCAgICAtwMICAgILwwICGjAgIBYgICAgPBJi4XAAAOIDQPYAzyLgICAp1gICNADCI2EiwBoi4TAAwyzBDzAAwyzBAg9wAAICLUECNiAQNADDAgDPQCIDQPYs0BLiwQMCFgICICADwiIUIDQCAgIxjDAA4AI6AOMgFAMgIAECAgIPwyzgFCLhTsACAgAAwCAkPAJtQiIBQwDPQgIgICAnwAIhouAYDyAgIDwMIDQgISLtFg7gAwDPYu1A8gw0AMMA9gDDICAtQhYgNAwgAgICPlZO8CAgIWA0DCLUAgICAgI8AmAhsCAgFAI2IBAO4CA8AgDgIAPCEjQgIBQi4SAgICAkAAAn7WAgAgICAlwgYCAgPAJhYAA6ICAtcMACFiA0ICABAjoQzuLAMWwDJcIioN4iaI4DrEo0qUCe28u9iixfKARqBEIqAuImSATQoUIu6mqIUNBAQGZ+YyICQEBUgKbgBAlmI6zjzKLlZlikIqJmBCShQ4oyBERkXGAiLnom0igECWRE42Aq6NY/xkAQzMaivszAIqaDwSRCTrwiQqDYIBg2wGYomEQoAukiY0AEZEiKpeZniChUYGADONLmAKKoVSBI64BqojRCzIhF70TvCgJRoESuyD7mAAYAQilSIm7iaRwghi4CqomkBHPBAAQDAjYIaiqMXSRkYm6SLgj+Tiokzkspym4IRqzJQjzGboouWgCIx2kD7EgKQCluig5KjwjLKGDMP+QKJM8DIIBAwOPgICA0jupcpAQsSrPKBEzgtKAgLouqoUQwCiAjUKC+iGBGcBB0ZErKiqzcJgKgrBIw4qLjLQIdwmBCQiMgAoygITArgICCEiD0DCAgL0IDYeggIBDuICA+P8FAIA+BI8SOggIDAiIBUiA0MAAyDBLMABoi4ANwzDAAw0IAw0DDQMMAw04C7QECNgDjICAYAi0CFjLAwwICIWLgICAFz3AMICAtQgICI+AAAgIeIGAgA8IiAU8gADoAzwAvUOAO4CAgI+AgIAHSAgMCNiAgAgIeIAACA8IA4CAgACfAAiGi4XAA4AICI+AUIu0OADogICAtgOIPQANAw2D0IAw0AOA2AOMhIAACA8ICIBgCAjoA4ANCMQwgACNgIC2Aw0ISMADgD2A0ICAUAgICA8Iw4CABQwDDQgIBAgICD+ACAj4SLhYCwiIgHAICICADwiIgAYIWIuMgFC4WAgACgCADICAgHAICNAIWAgIgA5IuAiAgHCAgA1IwDCAgIAPAw2DgIDwswgICHjAgIAACAgHCAgOCIgFDAOI4ICABNiAhIsAaDsMA4CA8AhYCAg9gIAIDgiItUiA0ICAhcCAgIWLhYCADQMI6ICEgNCAgICAcIDQswhQCAgIDwgIhYAAjbQIhItQPICA0AhYCMgDjICAhjsACPgwgAg+wAPQMAjYs4AICAgXDQhIwDCAgIDwA4jggITAMIAI6IAEyICAgIBwCwUIiICA8AIICPgIWAgMSAgI0AgEDEgICNiAgAUICAgICS8ACA+zSIAACAj4CVAICAgPCAOAgIAAAJ8IAAcAjLTDAAhYwLNYuAM8gIAOAw0DCAgI+LMIhYCADgPYs4AECI2AhTvQgISA0DCAgPAwO4yAgIaAAAgIPwyAQICAgIDwWTuADAMICAgJAPBZuICABQg9wICAgIAHCIiAgPAJWDuAgA4ICGiAgICAkPAJhYA8ANgDjISA0AMMA4CAgJAA8ALQSDvQgIAECICAgPBZCAgICAiPtIgAaAgIgIAPCIiABggICAgJAACfAAgIeIENSIuAtFi4WAgICAj4AzwA2DCACOiAQIuFgNCAhIAMwwgIaAgI0AgEyEg7PADYA4DYgECAgICAAAAAn7WAgAQICD/AAzyAgAgI+AgICAAFAOAwPAAIPYCAPku4SIAMCAQICA8IwwOAgICQ8AmAYAgICAgILwzDSIuEgDyADQMICAgInwDFAAhI0AMIiICAkADwCYCAcIA80AMIDQgDCA4IhICAPgDYgEAICI1Ai4C1SIAACD+LgICABwwDCAgI+AgICAgHCAgICPnCA4ANCAgIeIDQA4AICAj5AtAICIWAgPAwgDzQgICFgICAgPBIOwgNAwiNQIu0Az3AMEuAAD1Li4AFCNiAQIDQCFg7gAgICJ9Ai4CABwiIgA5IwDCAgIDwAw0ICFiAjLRICAgICAgvgOCAgFiA0DCACAgICQAA8AmAgIAXCOiAhDsACPj/AwBwi4TAAwiAgPAIxLMwjIBQuAQICD6AAOgDDAOADQgIBQ2zSDs8wAMICAgI8AI9C4TQMMAw0ICAQIDQSAgMAz07gICAgADwCVAMAwwIBAgI6APQgIAIBdgDgD2AAOiAgIWAPADYgAQIDUgICNAIWAgIgD4AiOCAgAhogICAgJDwCYBgCAiNQICAgA4IWICA4APIswQMSAgIgIAPCIiAgAcIgICAAPAJhYsAaLgDPQDYA8gDPNAwiwQIgD4A2ICAtAgIeDuAPQCI4AMI0AhYCAiAgA8IiICAkBcICA8IWAi4BAgICAifgAUMwwBIgADogICAYAgICAgInwAIhosIAAYAgD4AiOCzCFA8wAO4WAgMAw0IA4CAgACfAAgIeIGAgIAA8FkIuAQICA7DAAMIDgiEi4U70AMMA4yEi7UDCIDwMItAgICAgPDCMIDgMAwwjICFgNADgA0IiLVIgAAICAgAAJ9QCMiAgAXISIuAWICAgICQAC8ACD+AgAgIj7QDDAMNg9ADPMAwi4BQgD0AiOCAQDyAgICAgACfAGi4A4CAgACfhcAACEiAgIAPw7O0SAgIDUi4SMADgNiABAwICGgICICAgAAA8FkLCIiAgAfIMDyAgICA8AmAgHCAgIA+C7QEDAM9CAjQAwgID0iLgIWAgA0DCAgPAzyAAAj4+P8KAICEi4BQgIAOCAgICHiBgPCzAwgICAgAAPACgPCAgIWAgIAOCLQIBD2AgAgI+AhYuAhQuAiFS8CAhIsECICAgPAJgLYIhIA9AIgNA9iABAjQCAQIDQiIgAYMAz2LgAQICAj4AoDwgISAgD2LAIVLgIDggEA8gICAgIAAAACfUIuACGiAgIAOA9gDPICA8AMIiA0ICAh4gAAICAgA8FkICD3AA8gDi1AIDbNIi4WAgIDwMIsECIDwAwwICIXAMIDQswQMwzAADQPYAwjQCFi4CFAIDQPICAQICAj4Awg9gNBIi4AIBdgDPAANAwgNA4gNSIAACAiPgFjAAwiAPggACQCAjIBQuFg70LPDA9ADCA04wEgICNAIBMgDCAj4MAyzQIANCLRIOwAIP4u0CEjQswMIPdAwwDCADUgIyEgIyIAEDLMECAgIP4u0CFAIPYCA2LMEPEs7yAOAPUvAgICFOwwDCA5IuEg70APQMAgNSIuAhTtLgAAI+ICEiwQIPQANg4tQCNgwi7VIiwPQAwjoAzywtAM9O9ADgA0DDTgACD6LtQM8wLNAi4AFCD3AAwyABAiAgIAAnw=="
var itemAssignedObserver: NSKeyValueObservation?
var audioPlayer: AVQueuePlayer?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if let audioData = Data(base64Encoded: base64, options: .ignoreUnknownCharacters) {
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("voicemail.mp3")
do {
try audioData.write(to: url, options: [.atomic])
let asset = AVAsset(url: url)
let playerItem = AVPlayerItem(asset: asset)
print("Player item:\(playerItem)")
observeItem(playerItem, url: url)
audioPlayer = AVQueuePlayer(items: [playerItem])
} catch {
print(error)
}
}
}
func observeItem(_ playerItem: AVPlayerItem, url: URL) {
itemAssignedObserver = playerItem.observe(\.status, options: [.new, .old], changeHandler: { playerItem, value in
if playerItem.status == .readyToPlay {
print("Ready to play")
let stripeConfig = Waveform.Style.StripeConfig(color: .green,
width: 3.2,
spacing: 1.8,
lineCap: .round)
let config = Waveform.Configuration(size: CGSize(width: 200, height: 50),
backgroundColor: .clear,
style: .striped(stripeConfig),
verticalScalingFactor: 0.8,
shouldAntialias: true)
WaveformImageDrawer().waveformImage(fromAudioAt: url,
with: config) { image in
print("Image:\(String(describing: image))")
}
} else {
print(playerItem.status.rawValue)
}
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment