Прекодирайте/remux FLV и стриймвайте в движение

Опитвам се да се науча малко за стрийминг на видео и транскодиране, с малко развитие на приложението Roku отстрани. Имам редица видео файлове (предимно във формат FLV (H.264/AAC)), които бих искал да изпратя поточно към клиент, който в този случай е кутия Roku (която приема MP4 (H.264/AAC) и HTTP поточно предаване на живо (HLS)). Чудя се дали е възможно да се прекодират/ремуксират FLV файловете и да се предават поточно към клиента в движение, може би през HLS?

Опитах се да използвам ffmpeg за повторна обработка на файловете и да ги сервирам незабавно по време на процеса на прекодиране, но те не могат да се възпроизведат, докато процесът на запис не завърши. Мога да накарам Roku да възпроизвежда добре завършените ми MP4 файлове чрез Apache/Rails.

Но се чудя... възможно ли е да се настрои сървър за прекодиране/ремулиране на файл и незабавно изходният файл (от ffmpeg/който и да е инструмент, който използвам) да се предава поточно към клиента? Ако е така, какви инструменти са необходими, за да се постигне това? Възможно ли е да се използва инструмент за сегментиране на медийни файлове за нарязване на файл, докато се прекодира или повторно муксира?

Наясно съм, че процесът на транскодиране е интензивен за процесора, но не съм толкова притеснен относно практичността на транскодирането и стрийминг в движение, тъй като това е просто личен образователен проект (и имам неактивна система, която е в състояние, ако справяне с това).

Извинете, ако съм далеч от базата тук, просто се опитвам да си пробия път през това.

Благодаря!


person Threeve    schedule 31.07.2012    source източник
comment
Ако още не сте го гледали, FFmpeg документите за поточно предаване на MOV/MP4 са добро четиво за малко предистория на този вид проблем.   -  person blahdiblah    schedule 31.07.2012


Отговори (1)


Номерът за незабавно обслужване на HLS след завършване на TS сегмент е да накарате плейлиста да се актуализира динамично, когато данните пристигнат на диска.

Това, което се опитвате да направите, е по същество да предавате поточно събитие на живо през HLS, което е абсолютно възможно, просто е необходима координация между инструментите.

Сегментаторът с отворен код може да направи това, номерът е да накарате ffmpeg да изпише единичен MPEG-TS поток (несегментиран) и да го запише в наименуван канал (или еквивалентен за вашата операционна система), след което да накарате сегментатора да прочете от този наименуван канал и запишете файловете в директория във вашето споделено уеб пространство.

Сегментаторът многократно актуализира файла M3U8 на диска, докато обработва, така че да може да се използва като поток „на живо“, докато задачата приключи.

Когато ffmpeg затвори своя изход, сегментаторът поставя крайния етикет в M3U8 и файлът става "VOD".

Сегментаторът може да бъде изтеглен тук

person Haqa    schedule 28.10.2012