我根据this创建了Chrome扩展程序。此扩展程序可以使用 WebRTC ,使用 chrome.desktopCapture (link)和带<audio>
标记的音频和AudioContext录制屏幕。我的设置:
mimeType: 'video/webm;codecs=vp9',
audioBitsPerSecond: 60 * 1000,
videoBitsPerSecond: 512 * 1000
停止后,视频会在新标签页中打开,用户可以使用该标签进行操作。作为来源,我使用 base64 字符串中的 blob 。像这样:
<video preload="auto">
<source src="data:video/webm;codecs=vp9;base64,GkXfo59ChoEBQveBA..." type="video/webm">
</video>
问题 :我不能在3-4分钟内播放视频。它就停止了。此后我也无法前后移动视频。此外,我无法获得视频时长(始终为Infinity
- 只能在完全停止后才能获得)。
我还尝试将blob保存为文件:src="file:///C:/[username]/video_11162016.webm"
。或者在VLC中打开它。同样的问题。无法前进或后退,只能播放和暂停。
但如果我在本地保存视频并将其转换为ffmpeg或任何在线转换器(只需从webm转换为webm) - 视频效果非常好。没有滞后,文物。
来自ffmpeg(ffmpeg.exe -i video.webm
)的信息:
1。)录制的文件:
Input #0, matroska,webm, from 'RecordRTC.webm':
Metadata:
encoder : Chrome
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Stream #0:1(eng): Video: vp9 (Profile 0), yuv420p(tv), 1858x1088, SAR 1:1 DAR 929:544, 15 fps, 15 tbr, 1k tbn, 1k tbc (default)
2。)转换文件:
Input #0, matroska,webm, from 'RecordRTC_converted.webm':
Metadata:
encoder : Lavf57.57.100
Duration: 00:06:12.53, start: 0.000000, bitrate: 1262 kb/s
Stream #0:0(eng): Video: vp8, yuv420p(progressive), 1858x1088, SAR 1:1 DAR 929:544, 15 fps, 15 tbr, 1k tbn, 1k tbc (default)
Stream #0:1(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
我尝试使用ffmpeg.js(link),但我总是遇到“处理输入时发现无效数据”错误。 并尝试将编解码器更改为 vp8 - 无结果。
问题 :如何在不转换的情况下播放录制的视频?或者它必然?
感谢。