2017-01-12 6 views
2

Я создал приложение для управления загрузкой рекламных объявлений, команда по маркетингу выбирает, хотят ли они изображение или видеообъявление и заполняют форму с заголовком, временем начала и т. Д. Эти данные затем хранится в моем db.Проверка, является ли MP4 H264 зашифрованным до загрузки

Однако, с видеороликами есть дополнительный шаг, они загружаются в AWS, и способ, которым он настроен, будет работать только с видео в формате H264.

Я хотел бы добавить некоторые клиентские проверки на стороне видео, я обнаружил, связанный с этим вопрос, который проверяет, поддерживает ли браузер H264:

How to detect supported video formats for the HTML5 video tag?

Этот код ответа используется для проверки поддержки:

var testEl = document.createElement("video"), 
    mpeg4, h264; 

if (testEl.canPlayType) { 
    // Check for h264 support 
    h264 = "" !== (testEl.canPlayType('video/mp4; codecs="avc1.42E01E"') 
     || testEl.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"')); 
    ); 

Я проверил видео в консоли, сравнив одно с кодировкой H264 с одним, и я не могу найти что-либо в своих атрибутах, относящихся к H264. Списки ГКЗ MP4, но ничего:

src: data:video/mp4;base648766554654 etc. 

ответ

2

Вам нужен MP4 парсер JavaScript, например mp4box.js.

В случае MP4Box вы можете добавлять буферы до тех пор, пока не будет проанализировано поле moov, которое может произойти в конце файла в худшем случае.

Пример из документации:

var MP4Box = require('mp4box').MP4Box; 
var mp4box = new MP4Box(); 
mp4box.onError = function(e) {}; 
mp4box.onReady = function(info) {}; 
mp4box.appendBuffer(data); 
mp4box.appendBuffer(data); 
mp4box.appendBuffer(data); 
... 
mp4box.flush(); 

onReady() возвращается информация о файле:

mp4box.onReady = function (info) { 
    console.log("Received File Information"); 
} 

В нем вы должны tracks с соответствующим codec для каждого.

Подробнее о формате codecs см. RFC 6381.