Recherche avancée

Médias (0)

Mot : - Tags -/xml-rpc

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (96)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (11805)

  • Picture in picture problem on output stream in FFMPEG

    7 mai 2020, par mat thew

    I have a problem with ffmpeg output video.

    



    I am using Raspberry Pi to connect video (stream with IP camera) and audio. Its work fine.
I would like to add to my output video another video with second camera (in left-top side).

    



    Graphics it is looks like :

    



    _________________
| |_2_|         |
|               |
|        1      |
|_______________|


    



    1 is head video, 2 is video to add

    



    that is my code to situation with top :

    



    /home/pi/FFmpeg/ffmpeg -y -thread_queue_size 512K \
-re -vsync 1 -rtsp_transport tcp -itsoffset 0 -use_wallclock_as_timestamps 1 \
-i "rtsp://admin:admin@172.16.7.7:554/cam/realmonitor?channel=1&subtype=0" \
-thread_queue_size 512K -i "rtsp://video:video@172.16.7.8:554/cam/realmonitor?channel=1&subtype=0" \
-filter_complex "[1]scale=iw/3:ih/3 [pip]; [0][pip] overlay=3:3" \
-ar 44100 -itsoffset 1.5 -ac 2 -f alsa -ac 2 -thread_queue_size 512K -i default -f h264 \
-c:a aac -ab 128k -g 50 -strict -2 -f flv rtmp://127.0.0.1/sesja/transmisja


    



    Stream is running, however number of fps is 4-5, speed is 0.3 what makes it output stream does not work properly.

    



    I am asking from help in configuration, maybe Raspberry does not support this solution in hardware.

    



    FULL LOG :

    



    ffmpeg version N-92540-g28c96c2ce2 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.3.0 (Raspbian 6.3.0-18+rpi1+deb9u1) 20170516
  configuration: --arch=armel --target-os=linux --enable-gpl --enable-omx --enable-omx-rpi --enable-nonfree --enable-indev=alsa --enable-outdev=alsa
  libavutil      56. 24.101 / 56. 24.101
  libavcodec     58. 40.100 / 58. 40.100
  libavformat    58. 23.100 / 58. 23.100
  libavdevice    58.  6.100 / 58.  6.100
  libavfilter     7. 46.100 /  7. 46.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Input #0, rtsp, from 'rtsp://admin:admin@172.16.7.7:554/cam/realmonitor?channel=1&subtype=0':
  Metadata:
    title           : RTSP Session/2.0
  Duration: N/A, start: 1588833830.370000, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 20 fps, 20 tbr, 90k tbn, 40 tbc
[rtsp @ 0x31cc480] max delay reached. need to consume packet
[rtsp @ 0x31cc480] RTP: missed 35 packets
[rtsp @ 0x31cc480] max delay reached. need to consume packet
[rtsp @ 0x31cc480] RTP: missed 7 packets
[h264 @ 0x31e4180] concealing 3081 DC, 3081 AC, 3081 MV errors in I frame
[rtsp @ 0x31cc480] max delay reached. need to consume packet
[rtsp @ 0x31cc480] RTP: missed 34 packets
[h264 @ 0x31e4180] error while decoding MB 30 1, bytestream -11
[h264 @ 0x31e4180] concealing 3539 DC, 3539 AC, 3539 MV errors in P frame
[rtsp @ 0x31cc480] max delay reached. need to consume packet
[rtsp @ 0x31cc480] RTP: missed 13 packets
Input #1, rtsp, from 'rtsp://video:video@172.16.7.8:554/cam/realmonitor?channel=1&subtype=0':
  Metadata:
    title           : RTSP Session/2.0
  Duration: N/A, start: 0.430000, bitrate: N/A
    Stream #1:0: Video: h264 (High), yuvj420p(pc, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 20 fps, 100 tbr, 90k tbn, 40 tbc
Guessed Channel Layout for Input Stream #2.0 : stereo
Input #2, alsa, from 'default':
  Duration: N/A, start: 1588833833.133715, bitrate: 1411 kb/s
    Stream #2:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
  Stream #0:0 (h264) -> overlay:main (graph 0)
  Stream #1:0 (h264) -> scale (graph 0)
  overlay (graph 0) -> Stream #0:0 (flv)
  Stream #2:0 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[h264 @ 0x3389140] concealing 3081 DC, 3081 AC, 3081 MV errors in I frame
[rtsp @ 0x31cc480] max delay reached. need to consume packet
[rtsp @ 0x31cc480] RTP: missed 51 packets
[swscaler @ 0x3b3b6f0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x3b56cf0] deprecated pixel format used, make sure you did set range correctly
Output #0, flv, to 'rtmp://127.0.0.1/sesja/transmisja':
  Metadata:
    title           : RTSP Session/2.0
    encoder         : Lavf58.23.100
    Stream #0:0: Video: flv1 (flv) ([2][0][0][0] / 0x0002), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 20 fps, 1k tbn, 20 tbc (default)
    Metadata:
      encoder         : Lavc58.40.100 flv
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc58.40.100 aac
frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   [h264 @ 0x3831c40] error while decoding MB 30 1, bytestream -11
[h264 @ 0x3831c40] concealing 3539 DC, 3539 AC, 3539 MV errors in P frame
frame=    2 fps=1.5 q=2.0 size=       0kB time=00:00:00.05 bitrate=  57.9kbits/s[h264 @ 0x384a1a0] error while decoding MB 64 6, bytestream -13
[h264 @ 0x384a1a0] concealing 3105 DC, 3105 AC, 3105 MV errors in P frame
frame=    6 fps=2.8 q=7.0 size=     265kB time=00:00:01.50 bitrate=1447.5kbits/sframe=    9 fps=3.3 q=15.5 size=     270kB time=00:00:01.50 bitrate=1472.7kbits/frame=   13 fps=3.7 q=26.4 size=     274kB time=00:00:01.50 bitrate=1496.4kbits/frame=   15 fps=3.6 q=30.2 size=     276kB time=00:00:01.50 bitrate=1507.6kbits/frame=   17 fps=3.6 q=31.0 size=     278kB time=00:00:01.50 bitrate=1518.9kbits/frame=   20 fps=3.6 q=31.0 size=     284kB time=00:00:01.50 bitrate=1551.1kbits/[h264 @ 0x3389140] error while decoding MB 42 4, bytestream -5
[h264 @ 0x3389140] concealing 3287 DC, 3287 AC, 3287 MV errors in P frame
frame=   23 fps=3.7 q=31.0 size=     287kB time=00:00:01.50 bitrate=1568.5kbits/frame=   24 fps=3.6 q=31.0 size=     288kB time=00:00:01.50 bitrate=1574.1kbits/frame=   60 fps=5.7 q=31.0 size=     295kB time=00:00:02.95 bitrate= 817.9kbits/frame=   62 fps=5.5 q=31.0 size=     418kB time=00:00:03.05 bitrate=1121.3kbits/frame=   62 fps=5.2 q=31.0 size=     419kB time=00:00:03.07 bitrate=1114.9kbits/frame=   62 fps=5.0 q=31.0 size=     419kB time=00:00:03.07 bitrate=1114.9kbits/frame=   62 fps=4.8 q=31.0 size=     419kB time=00:00:03.07 bitrate=1114.9kbits/frame=   62 fps=4.6 q=31.0 size=     419kB time=00:00:03.07 bitrate=1114.9kbits/frame=   62 fps=4.4 q=31.0 size=     419kB time=00:00:03.07 bitrate=1114.9kbits/frame=   62 fps=4.2 q=31.0 size=     419kB time=00:00:03.07 bitrate=1114.9kbits/frame=   63 fps=4.1 q=31.0 size=     419kB time=00:00:03.10 bitrate=1108.0kbits/frame=   65 fps=4.0 q=31.0 size=     424kB time=00:00:03.20 bitrate=1084.3kbits/frame=   68 fps=4.0 q=31.0 size=     429kB time=00:00:03.35 bitrate=1049.4kbits/frame=   71 fps=4.0 q=31.0 size=     435kB time=00:00:03.50 bitrate=1017.3kbits/frame=   74 fps=4.1 q=31.0 size=     441kB time=00:00:03.65 bitrate= 988.5kbits/frame=   77 fps=4.1 q=31.0 size=     446kB time=00:00:03.80 bitrate= 961.0kbits/frame=   80 fps=4.1 q=31.0 size=     452kB time=00:00:03.95 bitrate= 936.5kbits/frame=   83 fps=4.1 q=31.0 size=     457kB time=00:00:04.10 bitrate= 913.1kbits/frame=   85 fps=4.1 q=31.0 size=     461kB time=00:00:04.21 bitrate= 896.4kbits/frame=   88 fps=4.1 q=31.0 size=     467kB time=00:00:04.35 bitrate= 878.6kbits/frame=   91 fps=4.1 q=31.0 size=     473kB time=00:00:04.50 bitrate= 860.1kbits/[flv @ 0x37246b0] Failed to update header with correct duration.
[flv @ 0x37246b0] Failed to update header with correct filesize.
frame=   93 fps=4.0 q=31.0 Lsize=     478kB time=00:00:04.63 bitrate= 844.7kbits/s dup=38 drop=36 speed=0.202x    
video:425kB audio:49kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.859331%
[aac @ 0x3268610] Qavg: 185.380
Exiting normally, received signal 2.


    



    Thanks

    


  • FFMPEG Concat DNxHD-Files : wrong duration of output-file

    4 mai 2020, par Thomas

    I have AVID-DNxHD-files created by Ikegami EditCamHD and FFMPEG-coded DNxHD-Files.

    



    Ikegami-Files are 1080/25psF at 185MBit/sec (10Bit). FFMPEG-Files are crated with this command :

    



    ffmpeg -loop 1 -i c:\pics\VideoNichtVorhanden.jpg -s 1920x1080 -r 25 -t 92.8 -c:v dnxhd -b:v 185M -pix_fmt yuv422p10le d:\MissingFiles\missing_0001.mov


    



    ffprobe from Ikegami-file :

    



    {
  "streams": [
    {
      "index": 0,
      "codec_name": "dnxhd",
      "codec_long_name": "VC3\/DNxHD",
      "profile": "DNXHD",
      "codec_type": "video",
      "codec_time_base": "1\/25",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "width": 1920,
      "height": 1080,
      "coded_width": 1920,
      "coded_height": 1088,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "16:9",
      "pix_fmt": "yuv422p10le",
      "level": -99,
      "color_space": "bt709",
      "field_order": "tt",
      "refs": 1,
      "r_frame_rate": "25\/1",
      "avg_frame_rate": "25\/1",
      "time_base": "1\/25",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 827,
      "duration": "33.080000",
      "bits_per_raw_sample": "10",
      "disposition": {
        "default": 0,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      },
      "tags": {
        "file_package_umid": "0x060A2B340101010101010F0013000000D6F21F070302074C060E2B347F7F2A80",
        "file_package_name": "File Package",
        "track_name": "V1"
      }
    },
    {
      "index": 1,
      "codec_type": "data",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "r_frame_rate": "0\/0",
      "avg_frame_rate": "0\/0",
      "time_base": "1\/90000",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 2977200,
      "duration": "33.080000",
      "disposition": {
        "default": 0,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      },
      "tags": {
        "file_package_umid": "0x060A2B34010101010101080013000000D6F21F070276074C060E2B347F7F2A80",
        "track_name": "A1",
        "data_type": "audio"
      }
    },
    {
      "index": 2,
      "codec_type": "data",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "r_frame_rate": "0\/0",
      "avg_frame_rate": "0\/0",
      "time_base": "1\/90000",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 2977200,
      "duration": "33.080000",
      "disposition": {
        "default": 0,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      },
      "tags": {
        "file_package_umid": "0x060A2B34010101010101080013000000D6F21F07028A074C060E2B347F7F2A80",
        "track_name": "A2",
        "data_type": "audio"
      }
    }
  ],
  "format": {
    "filename": "G:\\MXF-sortiert\\Ikegami\\2018-04-10\\V\\MULTI_NN17GN0V\\NN17GN0V.0001.MXF",
    "nb_streams": 3,
    "nb_programs": 0,
    "format_name": "mxf",
    "format_long_name": "MXF (Material eXchange Format)",
    "start_time": "0.000000",
    "duration": "33.080000",
    "size": "761004264",
    "bit_rate": "184039725",
    "probe_score": 100,
    "tags": {
      "operational_pattern_ul": "060e2b34.04010102.0d010201.10030000",
      "uid": "caf0bf8e-ff07-b34d-9616-bc3e7bd32d54",
      "generation_uid": "fb90769f-a46d-d546-983d-dda63339a8fd",
      "company_name": "Ikegami",
      "product_name": "HDN-X10",
      "product_version": "1.30d",
      "product_uid": "3e2189d7-294b-4612-8243-1b1990e14055",
      "modification_date": "2018-04-10T05:57:59.788000Z",
      "material_package_umid": "0x060A2B340101010101010F0013000000D6F21F070262074C060E2B347F7F2A80",
      "material_package_name": "01047",
      "timecode": "01:23:17:03"
    }
  }
}


    



    ffprobe from ffmpeg-coded-file :

    



    {
  "streams": [
    {
      "index": 0,
      "codec_name": "dnxhd",
      "codec_long_name": "VC3\/DNxHD",
      "profile": "DNXHD",
      "codec_type": "video",
      "codec_time_base": "1\/25",
      "codec_tag_string": "AVdn",
      "codec_tag": "0x6e645641",
      "width": 1920,
      "height": 1080,
      "coded_width": 1920,
      "coded_height": 1088,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "16:9",
      "pix_fmt": "yuv422p10le",
      "level": -99,
      "color_range": "tv",
      "color_space": "bt709",
      "refs": 1,
      "r_frame_rate": "25\/1",
      "avg_frame_rate": "25\/1",
      "time_base": "1\/12800",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 1187840,
      "duration": "92.800000",
      "bit_rate": "183500800",
      "bits_per_raw_sample": "10",
      "nb_frames": "2320",
      "disposition": {
        "default": 1,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      },
      "tags": {
        "handler_name": "VideoHandler",
        "encoder": "Lavc58.54.100 dnxhd"
      }
    }
  ],
  "format": {
    "filename": "G:\\MXF-sortiert\\Ikegami\\2018-04-10\\V\\MULTI_NN1EUS0V\\MXF\\NN1EUS0V.0001.mov",
    "nb_streams": 1,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime \/ MOV",
    "start_time": "0.000000",
    "duration": "92.800000",
    "size": "2128619444",
    "bit_rate": "183501676",
    "probe_score": 100,
    "tags": {
      "major_brand": "qt  ",
      "minor_version": "512",
      "compatible_brands": "qt  ",
      "encoder": "Lavf58.29.100"
    }
  }
}


    



    When I concat for example one .mxf with one .mov and another .mxf at the end, the duration is frong (about 26 Miuntes when it should be some 4 Minutes or so) and VLC-Player gives a Framerate of a very slow framerate and the video does not play the ffmpeg coded part.

    



    ffprobe from concat-output :

    



    {
  "streams": [
    {
      "index": 0,
      "codec_name": "dnxhd",
      "codec_long_name": "VC3\/DNxHD",
      "profile": "DNXHD",
      "codec_type": "video",
      "codec_time_base": "20268137\/1351040",
      "codec_tag_string": "AVdn",
      "codec_tag": "0x6e645641",
      "width": 1920,
      "height": 1080,
      "coded_width": 1920,
      "coded_height": 1088,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "16:9",
      "pix_fmt": "yuv422p10le",
      "level": -99,
      "color_range": "tv",
      "color_space": "bt709",
      "refs": 1,
      "r_frame_rate": "25\/1",
      "avg_frame_rate": "1351040\/20268137",
      "time_base": "1\/12800",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 1216088220,
      "duration": "95006.892188",
      "bit_rate": "489252",
      "bits_per_raw_sample": "10",
      "nb_frames": "6333",
      "disposition": {
        "default": 1,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      },
      "tags": {
        "handler_name": "VideoHandler"
      }
    }
  ],
  "format": {
    "filename": "G:\\MXF-sortiert\\Ikegami\\2018-04-10\\V\\NN1EUS0V_MIES.mov",
    "nb_streams": 1,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime \/ MOV",
    "start_time": "0.000000",
    "duration": "95006.893000",
    "size": "5810367616",
    "bit_rate": "489258",
    "probe_score": 100,
    "tags": {
      "major_brand": "qt  ",
      "minor_version": "512",
      "compatible_brands": "qt  ",
      "encoder": "Lavf58.29.100"
    }
  }
}


    



    The Ikegami and ffmpeg-coded files for themselves are playing great and do show the correct fps in VLC.

    



    I can see in the probe-logs the

    



      "codec_time_base": "20268137\/1351040"


    



    and

    



      "avg_frame_rate": "1351040\/20268137"


    



    What is going wrong here ? How can I improve the coding-part and / or the concat to get a good result ? Is it only possible with re-encode instead of c:v copy ?

    



    Any help welcome, thanks in advance,

    



    tom

    


  • Find a great Google Tag Manager alternative in Matomo Tag Manager

    29 avril 2020, par Joselyn Khor — Analytics Tips, Development, Marketing, Plugins

    If you’re looking for a tag management system that rivals Google’s, then Matomo Tag Manager is a great Google Tag Manager alternative that takes your tracking to the next level.

    What’s a tag manager ?

    If you’re not familiar with Google Tag Manager or Matomo Tag Manager – they’re both free tag management systems that let you manage all your website code snippets (tags) in one place. 

    Tags are typically JavaScript code or HTML that lets you integrate various features into your site in just a few clicks. For example : analytics codes, conversion tracking codes, exit popups and surveys, remarketing codes, social widgets, affiliates, and ads. With a tag manager, you get to easily look into and manage these different tracking codes.

    Why use a tag manager ?

    Tag management systems are game changers because they let you track important data more effectively by easily adding code snippets (tags) to your website. 

    By not needing to hard code each individual code you also save time. Rather than waiting for someone to make tag changes and to deploy your website, you can make the changes yourself without needing the technical expertise of a developer.

    Why is Matomo Tag Manager a great Google Tag Manager alternative ?

     Matomo Tag Manager is a great Google Tag Manager alternative. Not only does it let you manage all your tracking and marketing tags in one place, it also offers less complexity and more flexibility. 

    By tagging your website and using Matomo Tag Manager alongside Matomo Analytics, you can collect much more data than you’d be able to otherwise. 

    A bonus to using Matomo is the privacy and data ownership aspect. With Matomo you also get the added peace of mind that comes with 100% data ownership and privacy protection. You will never be left wondering what’s happening to your data. Rest assured knowing you’re doing the best to protect user privacy, while getting useful insights to improve your website. 

    And since Matomo Tag Manager is the one of the best alternatives to Google Tag Manager, you’ll gain more than you lose by having full confidence that your data is yours to own.

    Three key benefits of using Matomo Tag Manager :

    • Empowers you to deploy and manage your own tags
      This takes the hassle out of needing a web developer to hard code and edit every tag on your website. Now you can deploy tracking code on chosen pages and track various data yourself. 
    • Open up endless possibilities on data tracking
      Dig a lot deeper to track analytics, conversions, and more. Now you can implement advanced tracking solutions without needing to pay an external source. 
    • Save time and create your own impact
      With limited resources you certainly don’t want to be wasting any time having to go back and forth with an external party over what tags to add or take away. An over-dependence on web developers or agencies carrying out tag management for you, stalls growth and experimentation opportunities. With a tag management system you have the convenience of inserting your own tags and getting to a desired outcome faster. You won’t have to forgo tracking opportunities because now it’s in your hands.