Воспроизведение локального (m3u8) файла в ijkplayer не может воспроизводить видео быстрее, используя protocol_whitelist с 'tcp, http, https, udp, file, crypto, concat' - PullRequest
0 голосов
/ 01 августа 2020

Я пытался найти решение для воспроизведения файлов m3u8 во флаттере и иметь возможность изменять качество и скорость видео, и я достиг точки, когда я могу делать одно или другое, но не оба. Чтобы изменить потоки m3u8, я разделяю файлы локально и, по сути, создаю разные файлы, каждый из которых имеет только одно качество, что обеспечивает изменение качества, но для воспроизведения локальных файлов я должен использовать параметр формата ffmpeg protocol_whitelist и по какой-то причине он возиться с моей способностью воспроизводить видео быстрее, чем 1.0, теперь проблема не в файлах, которые я пытался подключить к тому же файлу с помощью диска Google, и, поскольку это не локальный файл, мне не нужно устанавливать protocol_whitelist. Я не знаю, проблема ли это с ffmpeg или с плеером ijk, или, возможно, даже с проблемой флаттера с проигрывателем ijk, но если кто-то знает или имеет какие-либо идеи о том, как исправить, дайте мне знать, я также пытался использовать networkdataSource и укажите URL-адрес как 'file://path/filename.m3u8', но не повезло, он также требует protocol_whitelist.

Игрок по умолчанию устанавливает fflags с 'fastseek', и я подозреваю, что настройка protocol_whitelist вызывает некоторые проблемы с этим флагом, а именно что вызывает проблему. (быстрый поиск помогает найти точку перед буфером в m3u8 и не имеет ничего общего со скоростью игрока, которую я узнал)

Так что, в принципе, могу ли я как-то исправить эту проблему? (либо путем изменения качества исходного мастер-файла m3u8 с помощью плеера, а не выполнения всего этого с локальным файлом?)

Или есть способ передать локальный файл игроку, чтобы он думал, что он пришел из http / https, и он воспроизводит его, не вызывая проблем? (Подождите, я ответил здесь на свой вопрос? Создание http-сервера и обслуживание моего файла с моего телефона и его использование должно быть достаточно, но localhost будет таким же, как использование file: /// по существу или нет? Это не так, и он исправляет проблема! XD)

Может быть, кто-то знает какое-то другое решение? Я знаю, что можно добавить функцию в c в ffmpeg для воспроизведения разных потоков из основного m3u8, но тогда мне пришлось бы скомпилировать 4-5 версий этого для разных мобильных процессоров, а затем подключиться к Java с JNI / JNA и цель C, а затем трепетать, что пока что выходит за рамки моих возможностей.

...