How to Download View-Only Teams Meeting Recording Video from SharePoint

Meeting recording auto-expiration feature is no joy.

The Problem

As part of the devolution of the new Stream built on SharePoint, new recordings automatically expire 60 days after they are recorded.

This means that team meeting recordings shared by other people will be deleted in 60 days (they are view-only and cannot be downloaded).

The Solution

Download the file from the service URL.

Open Firefox (or the browser of your choice) and load the SharePoint page with the video that you want to download, then open the page inspector (Ctrl + Shift + C). Click on the Network tab. Type videomanifest where it says “Filter URLs“. Press F5 to refresh the page. When the page reloads, copy the file URL. See below.

[Update 2023]: as per valuable comments provided by readers, you may need to remove the &manifestMetadata= part of the URL, up to just before the next &.

Use ffmpeg to download the video by pasting the URL from above:

$ ffmpeg -i "https://copied_videomanifest_url" -codec copy video.mp4

62 thoughts on “How to Download View-Only Teams Meeting Recording Video from SharePoint

  1. Works, I had to first delete the &manifestMetadata=… part of the URL, up to just before the next ‘&’.

  2. Sorry, can you please elaborate on the ffmpeg part? I got to the URL but not sure what the last step is….
    Thanks,

  3. Hi, first of all thanks for your tutorial, but i have a problem maybe you can help me : I’m using chrome, when i copy the link address, I get a huge URL and when i’m trying to paste the ffmpeg command you wrote i receive -> “parse error near `&”, how can i solve this problem?

  4. I get the error “Invalid data found when processing input” from ffmpeg. There is no “manifestMetadata” query param in my link, there is “altManifestMetadata” – if I omit that, it doesn’t work either.

  5. Worked in Windows 11, opened it up in notepad to sanitize the URL.

    As per Georgie above:

    Deleted where it started with: &altManifestMetadata=
    and right before the following:
    &pretranscode=0

    then copied the URL inside quotes for the following to be used in ffmpeg

    “https://copied_videomanifest_url”

    ffmpeg -i “https://copied_videomanifest_url” -codec copy video.mp4

  6. Thanks so much for this. Was able to save extremely important knowledge transfer videos from someone who left the company.

  7. If anybody cannot get it working, please try ffmpeg version 4.4 or more… below worked for me…

    $ /usr/bin/ffmpeg –version
    ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
    built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)

  8. The procedure is generally correct, but the browser network request does not always contain the string “videomanifest”.

    You may have to look for the first occurrence of a Method: “GET”, Initiator: “Media” request and use that as the URL

    Also, you can alternatively use youtube-dl or yt-dlp with the above fetched URL Using yt-dlp the command would be:
    yt-dlp “fetched_URL_here” -o desired_filename.mp4

    This is method far faster than streaming/piping through ffmpeg

    • I got “This video is DRM protected” using yt-dlp, sadly
      The ffmpeg method worked though.

  9. I am getting the following error:
    “Error opening output: Permission denied”
    Even though i had already logged in the sharepoint with my company login.

    Someone the same?

  10. Connection to tcp://japaneast1-mediap.svc.ms:443 failed: Error number -138 occurred
    [dash @ 0000024839e29440] Failed to open fragment of playlist

    • I had the same issue.
      I resolved it by defining the proxy server before calling ffmpeg:

      set HTTP_PROXY=http://userid:password@proxy_ip:proxy_port
      ffmpeg -i “videomanifest.mpd -codec copy video.mp4

    • Jake, could you please make a demo video on how to set up a proxy server before calling FFmpeg? We really need this, please.

  11. Im in the process of downloading a video, had to install the ffmpeg on windows, declare it as an enviroment variable to be able to use it in power shell. The one thing i’m not sure is, where is the video beign downloaded to?

  12. Hi All,

    Thank you so much for your valuable input and replies… i have downloaded the latest ffmpeg v6 and u jus need to copy the whole url and paste it like here…

    ffmpeg -i “https://southeastasia1-mediap.svc.ms/transform/videomanifest?……. ” -codec copy video.mp4

    Thats it.. make sure your not under any proxy or what, then there is a reply above where u need to put in username and password. Thanks alot guys…

  13. does it still works ? I using Firefox on my mac but, not able to find videomanifest as per mentioned.

  14. I don’t know much about Network. Can someone explain to me :
    1- how to install FFmpeg (I just downloaded it, but don’t know how to install it)
    2 – how to lunch it and paste my URL in it
    thanks

  15. It’s a command-line tool, no need to install, just download it.
    – Create for example a folder called “Video” in C:\ and put ffmpeg.exe in that folder
    – Open Command Prompt (use Windows Search to found it, it is already in your PC)
    – In the Command Prompt window type this command and press Enter:
    CD C:\Video
    – In the Command Prompt window type this command and press Enter:
    ffmpeg -i “https://sharepointURLnormally_super_long” -codec copy video.mp4

  16. looks like “videomanifest” isn’t found anymore during search
    any idea what is the new extension?

  17. I don’t see a videomanifest anymore. But here’s how I did it WITHOUT ffmpeg and also using Chrome browser.

    Do all the steps as previously mentioned until the part where you open the network tab. New steps
    1) just below the network tab, there should be 4 icons, hovering on the icons will say “Stop recording network log”, “Clear network log”, “Filter” and “Search”
    2) Click the icon with the tooltip “Search”
    3) type “.mp4” and press enter.
    4) Click all the entries until you see a format that is something like this:
    “https://.sharepoint.com/sites//Recording.mp4”

    Copy that and just open a new tab and paste it, it should open chrome default video player, click the triple dots and there should be a download

    • Cant work. how? i search .mp4. i checked the entries but can’t seem to access the link, especially when the recording is residing in another person’s sharedrive.

  18. This is my video manifest, could someone please help me with how to download it?

    https://japaneast1-mediap.svc.ms/transform/videomanifest?provider=spo&inputFormat=mp4&cs=fFNQTw&correlationId=c670e9a0-3027-2000-a879-721663c81cb5&docid=https%3A%2F%2Fcyberjutsujsc-my.sharepoint.com%2Fpersonal%2Ftien_cyberjutsu_io%2F_api%2Fv2.0%2Fdrives%2Fb%21TMOELYD9T06nQ-Iwi2Y5dQev5S3qk4lOoXpI2S5XjgsSealxgJnASZ6fy3GyU9lT%2Fitems%2F01OEHWQN62JEHCHOTLMFHIWNUZ6OGL5OZB%3Ftempauth%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAvY3liZXJqdXRzdWpzYy1teS5zaGFyZXBvaW50LmNvbUBlNDI1Y2IyNC1lZDYzLTQ0MTAtYjhjMi1kNmU4NmYzNmVkMDgiLCJpc3MiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAiLCJuYmYiOiIxNjk4NzQxMzI0IiwiZXhwIjoiMTY5ODc2MjkyNCIsImVuZHBvaW50dXJsIjoicy80V2NNMVpYT0wvNElXcnEyNVloaEJ3NXpxcFZPczE4K0VTa3F6d2NWWT0iLCJlbmRwb2ludHVybExlbmd0aCI6IjE5MiIsImlzbG9vcGJhY2siOiJUcnVlIiwiY2lkIjoib09sd3hpY3dBQ0NvZVhJV1k4Z2N0UT09IiwidmVyIjoiaGFzaGVkcHJvb2Z0b2tlbiIsInNpdGVpZCI6Ik1tUTROR016TkdNdFptUTRNQzAwWlRSbUxXRTNORE10WlRJek1EaGlOall6T1RjMSIsIm5hbWVpZCI6IjAjLmZ8bWVtYmVyc2hpcHx1cm4lM2FzcG8lM2Fhbm9uIzc2NDMyMmY4ZTc1ZWMwNjVlYWM2NDc1NGViYmM2MzQxNGU4MGU5ZmQ4MDcwOTU4MTE4M2ZkMzc3ZjYzZDQ4YjUiLCJuaWkiOiJtaWNyb3NvZnQuc2hhcmVwb2ludCIsImlzdXNlciI6InRydWUiLCJjYWNoZWtleSI6IjBoLmZ8bWVtYmVyc2hpcHx1cm4lM2FzcG8lM2Fhbm9uIzc2NDMyMmY4ZTc1ZWMwNjVlYWM2NDc1NGViYmM2MzQxNGU4MGU5ZmQ4MDcwOTU4MTE4M2ZkMzc3ZjYzZDQ4YjUiLCJzaGFyaW5naWQiOiI5QitoNmxkUkowbW44dWhrTmVkL3d3IiwidHQiOiIwIiwiaXBhZGRyIjoiMmEwOTpiYWMxOjdhYTA6NTA6OjI0NTo4ZiJ9.akQT3VWb6dGYv22rYu3LEgQ-cCeosSesatMChkLfGgM%26version%3DPublished&psi=66cc2af2-5539-41d9-b49f-3ca16a537398&enhanceAudio=true&ccat=0&cTag=%7B230E49DA-6BBA-4E61-8B36-99F38CBEBB21%7D%2C3%2C2&action=Access&part=index&format=dash&altManifestMetadata=eyJBdWRpb0NvZGVjSW5mbyI6ImFhYyIsIkF1ZGlvRnJhbWVTaXplIjoxMDI0LCJBdWRpb1NhbXBsaW5nUmF0ZSI6NDgwMDAsIkF1ZGlvU3RhcnRUaW1lSW4xMDBOYW5vIjowLCJBdWRpb1N0cmVhbUR1cmF0aW9uMTAwTmFubyI6ODY3MTE2MjUwLCJCaXRyYXRlIjoyNjI1MjcyLCJDb250YWluZXJTdGFydFRpbWVJbjEwME5hbm8iOjAsIkNvbnRhaW5zQXVkaW8iOnRydWUsIkNvbnRhaW5zVmlkZW8iOnRydWUsIkNvbnRlbnRBd2FyZUJpdHJhdGUiOm51bGwsIkNvbnRlbnRDYXRlZ29yeSI6Im5vbl90ZWFtc19tZWV0aW5nIiwiQ3JlYXRpb25Vbml4VGltZXN0YW1wU2Vjb25kcyI6MTY5ODY4MTgzMiwiQ3J5cHRvZ3JhcGhpY0RhdGFDcmVhdGVkRGF0ZVVuaXgiOjE2OTg2ODE4MzIsIkNyeXB0b2dyYXBoaWNEYXRhSVYiOiIweDA3NTFDMjZEMDYzQjcyRURFQkZCMjdDNUI1RjcyMjREIiwiQ3J5cHRvZ3JhcGhpY0RhdGFLaWQiOiIyOWU2ZmM0ODFmYS44NDM5NzAuMjc4MiIsIkR1cmF0aW9uMTAwTmFubyI6ODY3NDEzMzMwLCJGcmFtZVNpemUiOnsiaGVpZ2h0IjoxMDgwLCJ3aWR0aCI6MTkyMH0sIkdvcFNpemUiOjEyNTEyNTAwLCJIMjY0TGV2ZWwiOjQxLCJIYXNCRnJhbWVzIjpmYWxzZSwiSGVhZGVyT2Zmc2V0SW5CeXRlcyI6MjQsIkhlYWRlclNpemUiOjU4NzY2LCJNZXRhZGF0YVNvdXJjZUluZm9ybWF0aW9uIjp7IkF1ZGlvU3RyZWFtRHVyYXRpb25Tb3VyY2UiOjEsIkF1ZGlvU3RyZWFtUmVhZEJ1ZmZlclNpemVJbkJ5dGVzIjoxNjM4NCwiQ29udGFpbmVyRHVyYXRpb25Tb3VyY2UiOjEsIlZpZGVvQml0cmF0ZVNvdXJjZSI6MSwiVmlkZW9TdHJlYW1EdXJhdGlvblNvdXJjZSI6MSwiVmlkZW9TdHJlYW1SZWFkQnVmZmVyU2l6ZUluQnl0ZXMiOjE2Mzg0fSwiUGFja2VkRnJhbWVSYXRlIjp7IkhpZ2giOjI0MDAwLCJMb3ciOjEwMDF9LCJQcmVtaXVtVmlkZW9QcmV0cmFuc2NvZGVEYXRhIjpudWxsLCJSZWFsQmFzZUZyYW1lUmF0ZSI6eyJIaWdoIjoyNDAwMCwiTG93IjoxMDAxfSwiVXBkYXRlYWJsZUF1ZGlvVHJhY2tzIjpbXSwiVmVyc2lvbiI6eyJfQnVpbGQiOi0xLCJfTWFqb3IiOjYsIl9NaW5vciI6MCwiX1JldmlzaW9uIjotMX0sIlZpZGVvQ29kZWNJbmZvIjoiaDI2NCIsIlZpZGVvUHJldHJhbnNjb2RlRGF0YSI6eyJBdWRpb1F1YWxpdHlJZHMiOiJhdWRtZWQsYXVkaGlnaCIsIlNlZ21lbnRDb3VudCI6MiwiVmlkZW9RdWFsaXR5SWRzIjoidjI0MHAsdjQ4MHAsdjcyMHAsdjEwODBwIn0sIlZpZGVvU3RhcnRUaW1lSW4xMDBOYW5vIjowLCJWaWRlb1N0cmVhbUR1cmF0aW9uMTAwTmFubyI6ODY3MTE2MjUwfQ%3D%3D&altTranscode=1&useScf=true&pretranscode=0&transcodeahead=0&enableCdn=1&hybridPlayback=true

    • Please use the following:

      ffmpeg -codec copy video.mp4 -i "https://japaneast1-mediap.svc.ms/transform/videomanifest?provider=spo&inputFormat=mp4&cs=fFNQTw&correlationId=c670e9a0-3027-2000-a879-721663c81cb5&docid=https%3A%2F%2Fcyberjutsujsc-my.sharepoint.com%2Fpersonal%2Ftien_cyberjutsu_io%2F_api%2Fv2.0%2Fdrives%2Fb%21TMOELYD9T06nQ-Iwi2Y5dQev5S3qk4lOoXpI2S5XjgsSealxgJnASZ6fy3GyU9lT%2Fitems%2F01OEHWQN62JEHCHOTLMFHIWNUZ6OGL5OZB%3Ftempauth%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAvY3liZXJqdXRzdWpzYy1teS5zaGFyZXBvaW50LmNvbUBlNDI1Y2IyNC1lZDYzLTQ0MTAtYjhjMi1kNmU4NmYzNmVkMDgiLCJpc3MiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAiLCJuYmYiOiIxNjk4NzQxMzI0IiwiZXhwIjoiMTY5ODc2MjkyNCIsImVuZHBvaW50dXJsIjoicy80V2NNMVpYT0wvNElXcnEyNVloaEJ3NXpxcFZPczE4K0VTa3F6d2NWWT0iLCJlbmRwb2ludHVybExlbmd0aCI6IjE5MiIsImlzbG9vcGJhY2siOiJUcnVlIiwiY2lkIjoib09sd3hpY3dBQ0NvZVhJV1k4Z2N0UT09IiwidmVyIjoiaGFzaGVkcHJvb2Z0b2tlbiIsInNpdGVpZCI6Ik1tUTROR016TkdNdFptUTRNQzAwWlRSbUxXRTNORE10WlRJek1EaGlOall6T1RjMSIsIm5hbWVpZCI6IjAjLmZ8bWVtYmVyc2hpcHx1cm4lM2FzcG8lM2Fhbm9uIzc2NDMyMmY4ZTc1ZWMwNjVlYWM2NDc1NGViYmM2MzQxNGU4MGU5ZmQ4MDcwOTU4MTE4M2ZkMzc3ZjYzZDQ4YjUiLCJuaWkiOiJtaWNyb3NvZnQuc2hhcmVwb2ludCIsImlzdXNlciI6InRydWUiLCJjYWNoZWtleSI6IjBoLmZ8bWVtYmVyc2hpcHx1cm4lM2FzcG8lM2Fhbm9uIzc2NDMyMmY4ZTc1ZWMwNjVlYWM2NDc1NGViYmM2MzQxNGU4MGU5ZmQ4MDcwOTU4MTE4M2ZkMzc3ZjYzZDQ4YjUiLCJzaGFyaW5naWQiOiI5QitoNmxkUkowbW44dWhrTmVkL3d3IiwidHQiOiIwIiwiaXBhZGRyIjoiMmEwOTpiYWMxOjdhYTA6NTA6OjI0NTo4ZiJ9.akQT3VWb6dGYv22rYu3LEgQ-cCeosSesatMChkLfGgM%26version%3DPublished&psi=66cc2af2-5539-41d9-b49f-3ca16a537398&enhanceAudio=true&ccat=0&cTag=%7B230E49DA-6BBA-4E61-8B36-99F38CBEBB21%7D%2C3%2C2&action=Access&part=index&format=dash&altTranscode=1&useScf=true&pretranscode=0&transcodeahead=0&enableCdn=1&hybridPlayback=true"
      
  19. I’m using macOS Sonoma 14 and
    ffmpeg version N-111626-g0ba719f726-tessus Copyright (c) 2000-2023 the FFmpeg developers
    built with Apple clang version 11.0.0 (clang-1100.0.33.17)
    I have used ffmpeg previously so I believe it is installed correctly. When following the steps I receive an error

    zsh: parse error near `&’

    this is both on the preflight and fetch URL. I then tried something unusual and cut the docid pseudo URL out and replaced the encoding back to URL format and was able to get a response from the server

    {“@odata.context”:”https://x-my.sharepoint.com/personal/ …

    which makes me think that I’m not encountering any proxy problems (especially because I’m not using a proxy on the machine and the Chrome browser does work. Any thoughts on this parse error? Just go use linux?

  20. Someone on Reddit found a faster way it seems, with the current method the speed shown by ffmpeg hovers around 4x for me, but this new solution speed doubles that (around 8x)
    I’m using Chrome:
    – Instead of copying the URL from the network call, copy the response. Just right click > Copy > Copy response
    – Paste the response to a blank .txt file and save it, for example let’s do “sample.txt”
    – Use the following ffmpeg command:
    “`
    ffmpeg -i “sample.txt” -codec copy result.mp4
    “`

    • replying to Guinevere,
      your mentioned steps did work, but I did not find any difference in the download speeds.

    • This is the only way i got it working at all. Had to list the files first and make the text file show up first with the command dir. Also download of about 4x for me.

    • PERFECT! This was the only way I could find to get this working. Could you share what thread on Reddit you saw this? Just curious to read. Thanks!!

  21. I just used Chocolatey and the file is downloaded fine but i cant find the file directory of the file name

    • ffmpeg -i “https://centralindia1-mediap.svc.ms/transform/videomanifest?provider=spo&inputFormat=mp4&cs=fFNQTw&correlationId=cd0bf8a0-80c3-2000-c8f2-b55e166a9db1&docid=https%3A%2F%2Fasapcpitraining-my.sharepoint.com%2Fpersonal%2Fasapcpitraining_com_asapcpitraining_onmicrosoft_com%2F_api%2Fv2.0%2Fdrives%2Fb%218y2_70mCX0u4S0-dz25qAdgPk-COBDtOvJxvxGNRLOXby1nMPcQrT5zkSruoKoPA%2Fitems%2F013WVY24G36SOVW6W5KZA26GOXPS7Y3GAZ%3Ftempauth%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAvYXNhcGNwaXRyYWluaW5nLW15LnNoYXJlcG9pbnQuY29tQDQ5MjJhZGZmLWE3NGItNGM1MC05MzJkLTIwMDQ2ZTg5ZTVkYiIsImlzcyI6IjAwMDAwMDAzLTAwMDAtMGZmMS1jZTAwLTAwMDAwMDAwMDAwMCIsIm5iZiI6IjE3MDI2NjE5ODEiLCJleHAiOiIxNzAyNjgzNTgxIiwiZW5kcG9pbnR1cmwiOiJFZ2RIYWRvQlVTUTcwYjNhQmU3d1pSR3lwazdBdjk0WUFxNlZXWjF3UzlNPSIsImVuZHBvaW50dXJsTGVuZ3RoIjoiMjI3IiwiaXNsb29wYmFjayI6IlRydWUiLCJjaWQiOiJvUGdMemNPQUFDREk4clZlRm1xZHNRPT0iLCJ2ZXIiOiJoYXNoZWRwcm9vZnRva2VuIiwic2l0ZWlkIjoiWldaaVpqSmtaak10T0RJME9TMDBZalZtTFdJNE5HSXROR1k1WkdObU5tVTJZVEF4IiwibmFtZWlkIjoiMCMuZnxtZW1iZXJzaGlwfHVybiUzYXNwbyUzYWFub24jOGI1MDgxYmQyYjExNzM0ZDNiMTg4NjI0OTViMmViNDRhNjJjYWRhNjk1NjZkZGM2YzE0MzAzZDM2MDVkM2VjNSIsIm5paSI6Im1pY3Jvc29mdC5zaGFyZXBvaW50IiwiaXN1c2VyIjoidHJ1ZSIsImNhY2hla2V5IjoiMGguZnxtZW1iZXJzaGlwfHVybiUzYXNwbyUzYWFub24jOGI1MDgxYmQyYjExNzM0ZDNiMTg4NjI0OTViMmViNDRhNjJjYWRhNjk1NjZkZGM2YzE0MzAzZDM2MDVkM2VjNSIsInNoYXJpbmdpZCI6IlZUZk5uV0hJQUUyeW8vK29zMTVlc3ciLCJ0dCI6IjAiLCJpcGFkZHIiOiIxODYuMTUxLjIzNy4xNTQifQ.c9aWX45bI1FTbkl6d4KNxBLbuIQi5bBFYpD2lO04LOg%26version%3DPublished&psi=35ecde3b-78c1-4b19-8677-74ca9b6a00c2&enhanceAudio=true&ccat=1&cTag=%7B5B9DF4DB-DD7A-4156-AF19-D77CBF8D9819%7D%2C14%2C2&action=Access&part=index&format=dash&pretranscode=0&transcodeahead=0&enableCdn=1&hybridPlayback=true” -codec copy video.mp4

  22. The file I’m trying to download is protected by a passcode, hence when I try to download it I receive a message that the access is denied or it has been deleted. Any way to circumvent this?

    Error opening output video.mp4: Permission denied
    Error opening output file video.mp4.
    Error opening output files: Permission denied

  23. Using ffmpeg worked for me, but I was having issues with the audio being far worse than the source video on SharePoint. I was able to fix it by changing &enhanceAudio=true to &enhanceAudio=false from the videomanifest link.

  24. @Lisenet , Seems like something has changed again in 2024… now something else is going on w/ certain sharepoint sites. Namely:

    – &altManifestMetadata=XXXXXX still needs to be deleted upto the next &, but this is no longer enough… and ffmpeg still chokes. However, if I delete EVERYTHING past this point (e.g. from &altManifestMetadata to end of URL) it works ! This leads to questioning what precisely is breaking things. What remains is >>> &altTranscode=1&useScf=true&pretranscode=0&transcodeahead=0&hybridPlayback=false

    It turns out leaving “&enableCdn=1” in the string breaks it. In fact, I can leave everything intact from the original request and JUST remove this “&enableCdn=1” part, and everything works (even with &altManifestMetadata=XXXXXX in there !)

    – further investigation shows that leaving in

    • It’s Microsoft, they change things every Monday, therefore I’m not surprised it stopped working. Thanks very much for your comment, appreciated.

  25. removing &enableCdn=1 also worked for me for Sharepoint based Stream
    But for stream classic I dont see any “videomanifest” etc

  26. got the link to the videomanifest from safari, multiple videomanifest files appeared. I tried all of them, removing the &altManifestMetadata parts but the result from ffmpeg is always the same: “Output file is empty, nothing was encoded”, I checked and it produces an empty mp4 file that i can’t convert to any other format. any ideas how to fix? i really need to download some lectures for future reference before they expire. thanks :)

Leave a Reply

Your email address will not be published. Required fields are marked *