Как сделать псевдопотоковую передачу Flash?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

7
задан Sietse 15 September 2008 в 10:31
поделиться

3 ответа

Flash player может только начать играть видео H.264, после того как это загрузило атом MOOV. Существующие поставщики псевдопотоковой передачи просто дают Вам заголовок FLV - или первые 13 байтов файла или hardcoded один - и затем служат файлу от данного смещения. Если Вы захотите сделать псевдостример H.264, то у Вас должен будет быть он, произвел заголовок FLV, то атом MOOV, и затем служат остальной части файла от данного смещения. Если Вы не будете использовать контейнер FLV, то Вам не будет нужен заголовок FLV, но Вам все еще будет нужен атом MOOV.

Unfortunatley, я не думаю, что Вы сможете использовать атом MOOV из файла на диске; информация, которую это содержит, не будет правильной для фрагмента файла, что Вы служите. Таким образом, необходимо было бы проанализировать существующий атом и генерировать одно собственное, которое соответствовало подаваемой части файла.

Если существуют сложные структуры в файле H.264, это могло бы быть еще более сложно к псевдопотоку. Если парсинг файла не выполним, я боюсь, что Вы не можете псевдопередавать свои медиа потоком.

2
ответ дан 7 December 2019 в 12:27
поделиться

@yoavf - Я думаю, что OP интересуется аспектами серверной стороны потоковой передачи h.264 по запросу в файлах FLV. Повторное использование существующих плееров было бы хорошо для него, я думаю. Или возможно который является моим собственным выходом потребностей? <:S

Из второй ссылки yoavf существует другая ссылка на Tinic Uro, Что просто произошло с видео в сети?. Соответствующая кавычка:

Будет возможно поместить потоки H.264 в традиционную файловую структуру FLV? Это будет, но мы сильно поощряем всех охватывать новый стандартный формат файла. Существуют функциональные ограничения со структурой FLV при потоковой передаче H.264, который мы не могли преодолеть без модернизации формата файла. Это - одна причина, которую мы отодвигаем от традиционной файловой структуры FLV. Конкретно контакт с заголовками последовательности и входит, хитро с потоками FLV.

Так, кажется, что можно или переделать ffmpeg, кодирующий (если, именно так Вы получаете свой FLVs, как, я), или можно войти в новый формат. Hmmmm....

3
ответ дан 7 December 2019 в 12:27
поделиться

две вещи можно сделать:

1) используйте lighttpd, и это - плагин потоковой передачи mp4, это генерирует необходимый контейнер потоковой передачи на лету

2) создайте keyframed FLV и используйте сценарий psuedo-потоковой-передачи (как XMOOV) для потоковой передачи файла.

при необходимости в mp4/aac, можно просто поместить их в контейнере FLV, очень к огорчению Adobe, но это работает.

0
ответ дан 7 December 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: