2017-07-20 28 views
8

Tôi đã sau đây quy định việc triển khai MediaRecorder tôi:ghi cross-platform video sử dụng WebRTC của MediaRecorder

const getMediaRecorderOptions = function() { 
    var options = { mimeType: "video/webm;codecs=vp8" }; // 9 was lagggy, cpu-intensive 

    if (!MediaRecorder.isTypeSupported(options.mimeType)) { 
     logger.recorderLog(options.mimeType + " is not Supported"); 
     options = { mimeType: "video/webm;codecs=vp8" }; 

     if (!MediaRecorder.isTypeSupported(options.mimeType)) { 
      logger.recorderLog(options.mimeType + " is not Supported"); 
      options = { mimeType: "video/webm" }; 

      if (!MediaRecorder.isTypeSupported(options.mimeType)) { 
       logger.recorderLog(options.mimeType + " is not Supported"); 
       options = { mimeType: "" }; 
      } 
     } 
    } 
    return options; 
} 

Rõ ràng, đây là chỉ dành riêng cho webm mà không được hỗ trợ trên iOS Safari hoặc MacOS. Tôi đang cố gắng tránh tăng gấp đôi dung lượng lưu trữ và giới thiệu độ phức tạp của mã hóa. Có cách nào MediaRecorder trên Chrome có thể ghi trực tiếp sang định dạng vùng chứa đa nền tảng, từ bất kỳ nền tảng nào không?

Trả lời

3

Bạn sẽ có thể để ghi lại để webm/h.264

var options = {mimeType: 'video/webm;codecs=h264'}; 

media_recorder = new MediaRecorder(stream, options); 

Vì vậy, bạn có cây thập tự định dạng nền tảng video ngay (H.264) chứa trong thùng WebM.

Bây giờ bạn có thể thử ffmpeg.js và chỉ thay đổi vùng chứa từ WebM sang mp4 - đối chiếu luồng H.264 - không chuyển mã (bản sao -vcodec).

Tôi đã ghi vào webm/h.264 trong Chrome nhưng tôi không thử đóng gói lại bằng ffmpeg.js.

+0

Gọn gàng - Tôi có thể phát những nội dung đó trên iOS/macOS không? Tôi đã có ấn tượng rằng không có thùng chứa webM nào sẽ phát trong Safari/Chrome iOS. – SB2055

+0

Tôi nghi ngờ WebM/H.264 phát trong Safari nhưng về mặt lý thuyết - vì tôi chưa thử - bạn có thể thử thay đổi vùng chứa từ WebM/H.264 sang MP4/H.264 bằng cách sử dụng ffmpeg.js ngay bên trong trình duyệt ghi như một phần của quá trình ghi âm. Vì bạn không chuyển mã - video vẫn là H.264 - nên nó hoạt động tương đối nhẹ. –

Các vấn đề liên quan