muaz-khan / RecordRTC

RecordRTC is WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows.
https://www.webrtc-experiment.com/RecordRTC/
MIT License
6.58k stars 1.76k forks source link

Recorded Video doesn't play in Safari on macOS and iOS #371

Open prologictechnologies-zz opened 6 years ago

prologictechnologies-zz commented 6 years ago

Hi Muaz, How are you?

The video recording works on Mac and windows but when the recorded video is played back in HTML5 video player, it doesn't play is some cases. Here is the status chart of the recorded video when played back in HTML5 video player on following browsers and OS.

Browser Windows iOS macOS

Chrome Working Not Working Working

Firefox Working Not Working Working

Safari 11 Not Working Not Working Not Working

Please help.

regards, Rajiv.

derek-adair commented 5 years ago

In the future you will need to provide the exact user agent strings for this to be of any meaning.

http://www.useragentstring.com/

kriefsacha commented 4 years ago

@prologictechnologies found solution ?

samuelweckstrom commented 4 years ago

Had the same problem and solved with setting mimeType: "video/mp4" in recorder options.

mreall commented 4 years ago

When I record with mimeType: "video/webm;codec=vp8" (which is the only format the instructions show as compatible with Chrome, FF, and Safari, I can view the video fine on Windows and Android, but not iOS. The file is saved as a .webm file, which Safari says it can't read (Safari version 12.1.2 on iOS 12.4.6). If I set the mimeType to "video/mp4" it doesn't record on Win10/Chrome.

Is there a setting that will record in a format viewable by Chrome, FF, and Safari on Win, Mac, Android, and iOS?

reynoldspaul commented 4 years ago

How do I ensure webm playback on Safari?

I'm recording screen + Audio in chrome with mime_type: video/webm, and saving on PHP server to webm. These files playback in chrome and FF, but are not playing in Mac OS Safari 12.1.12

Do I need to record the screen + audio in mp4? Or do i need to convert the webm to mp4 on the server?

codehunter1992 commented 2 years ago

Playback on safari is working (on Chrome no). Video mimeType is "video/mp4" in my case. After uploading video to server, it is not being played on html5 video element. Any same issue or solution?

Chingachcook commented 2 years ago

Same issue as @babytiger0929. Is there any solution to a problem with IOS and Mac OS?

farazshuja commented 1 year ago

Here is how I solved the issue 1-- create the video using mimeType: 'video/mp4' This generates the mkv container.

2-- Convert the video container to mp4 using ffpmeg on server or ffmpeg.wasm in browser. In my case I was uploading to firebase storage so used cloud function to auto convert it.

import ffmpegPath = require('@ffmpeg-installer/ffmpeg');
import ffmpeg = require('fluent-ffmpeg');

ffmpeg.setFfmpegPath(ffmpegPath.path);
ffmpeg(tempFilePath)
        .outputOptions(['-c', 'copy'])
        .output(outputFilePath)
        .on('end', resolve)
        .on('error', reject)
        .run();

3-- Now its playable in safari

<video controls muted>
  <source :src="videoSrc" type="video/mp4" />
</video>        
nadjibwebdev commented 1 year ago

Here is how I solved the issue 1-- create the video using mimeType: 'video/mp4' This generates the mkv container.

2-- Convert the video container to mp4 using ffpmeg on server or ffmpeg.wasm in browser. In my case I was uploading to firebase storage so used cloud function to auto convert it.

import ffmpegPath = require('@ffmpeg-installer/ffmpeg');
import ffmpeg = require('fluent-ffmpeg');

ffmpeg.setFfmpegPath(ffmpegPath.path);
ffmpeg(tempFilePath)
        .outputOptions(['-c', 'copy'])
        .output(outputFilePath)
        .on('end', resolve)
        .on('error', reject)
        .run();

3-- Now its playable in safari

<video controls muted>
  <source :src="videoSrc" type="video/mp4" />
</video>      

Hi, can you show in details the source code in Javascript and HTML please? I have the same issue: https://github.com/muaz-khan/RecordRTC/issues/840#issue-1748782269

cloudapper-ai commented 6 months ago

Does anyone else have a solution that works for all platforms? I am looking for a solution that does not require using the backend to transcode.

In my Mac Chrome browser, it's producing "video/x-matroska", even if I set mime-type as "video/webm" or "video/mp4". In the Safari browser, recorded video plays as expected, but in the Chrome browser, it does not.