Я пытаюсь найти простое домашнее решение для потоковой передачи / перекодирования видео на машину низкого уровня, которая не может правильно воспроизводить файл.
Я пытаюсь сделать это с помощью ffmpeg
(поскольку ffserver
будет прекращено). Я обнаружил, что ffmpeg имеет встроенный http-сервер, который можно использовать для этого.
Приложение, которое я тестирую с (для seekbar
), это vlc
Я, вероятно, здесь что-то делаю не так (или пытаюсь сделать что-то, что другие делают с другими приложениями)
Мой код ffmpeg, который я использую:
d: \ ffmpeg \ bin \ ffmpeg.exe -r 24 -i "D: \ test.mkv" -threads 2 -vf scale = 1280: 720 -c: v libx264 -preset medium -crf 20 -maxrate 1000k -bufsize 2000k -c: a ac3 -seekable 1 -movflags faststart -listen 1 -f mpegts http://127.0.0.1:8080/test.mpegts
Этот код также дает мне возможность начать смотреть его, когда я хочу (в отличие от использования rtmp через udp, который запускал бы видео, как только он его перекодировал)
Я читал о перемещении atoom
объекта при загрузке файла, который должен обрабатываться movflags faststart
Я также безуспешно проверил опцию -re
, -r 25
просто чтобы подавить Past duration 0.xx too large
предупреждение, которое я прочитал, - это нормальное явление. тестовый файл - это один из многих файлов с разными настройками кодировщика и т. д.
Приведенный выше параметр дает мне seekbar
, но он не работает, и нет общей продолжительности (и нет индикатора выполнения), когда я переключаюсь с mpegts на matroska / mkv, я вижу продолжительность видео (и прогресс), но нет панели поиска.
Если это возможно с помощью только ffmpeg, я бы предпочел использовать его как отдельное решение без дополнительных серверов rtmp / others.