2013-04-23 2 views
6

Я пытаюсь передать видео-цикл на justin.tv с помощью FFmpeg? Мне удалось петлить последовательность изображений и объединить ее с линией в аудио:FFmpeg Live Stream - Loop Video?

 
ffmpeg -loop 1 -i imageSequence%04d.jpg -f alsa -ac 2 -ar 22050 -ab 64k \ 
    -i pulse -acodec adpcm_swf -r 10 -vcodec flv \ 
    -f flv rtmp://live.justin.tv/app/<yourStreamKeyHere> 

Возможно ли это сделать с видеофайлом?

ответ

2

Sinclair Media нашел решение с помощью lavfi фильтра и добавления :loop=0 к имени файла:

Это непроверенное:

ffmpeg -f lavfi -re -i movie=StreamTest.avi:loop=0 \ 
-acodec libfaac -b:a 64k -pix_fmt yuv420p -vcodec libx264 \ 
-x264opts level=41 -r 25 -profile:v baseline -b:v 1500k \ 
-maxrate 2000k -force_key_frames 50 -s 640×360 -map 0 -flags \ 
-global_header -f segment -segment_list index_1500.m3u8 \ 
-segment_time 10 -segment_format mpeg_ts \ 
-segment_list_type m3u8 segmented.ts 

Но он должен создать локальный файл «index_1500.m3u8», который транслирует видео в «StreamTest.avi».

+0

я должен был использовать эти аргументы, чтобы заставить его работать правильно: '-f lavfi -re -fflags + genpts -i«фильм = GleamingThatBrownbutterfly.webm: петля = 0, setpts = N/(frame_rate * TB) «'. Без них он останавливался после первого цикла, а остальные кадры были сброшены. – jadkik94

3

Определенно возможно. В последних версиях ffmpeg они добавили флаг -stream_loop, который позволяет вам циклически вводить ввод столько раз, сколько требуется.

Получено, что если вы не регенерируете pts из источника, ffmpeg будет отбрасывать кадры после первого цикла (так как временная метка будет внезапно возвращаться во времени). Чтобы этого избежать, вам нужно сообщить ffmpeg о генерации очков, чтобы вы увеличивали метку времени между циклами. Это делается с помощью вызова + genpts (он должен быть до -i arg).

Вот пример вызова ffmpeg (замените $ F на ваш входной файл). В этом примере генерируются два выходных потока, а аргумент -stream_loop -1 сообщает ffmpeg о непрерывном цикле ввода. Вывод в этом случае предназначен для аналогичного потокового вещания (MetaCDN), в соответствии с вашими требованиями.

ffmpeg -threads 2 -re -fflags +genpts -stream_loop -1 -i $F \ 
-s 640x360 -ac 2 -f flv -vcodec libx264 -profile:v baseline -b:v 600k -maxrate 600k -bufsize 600k -r 24 -ar 44100 -g 48 -c:a libfdk_aac -b:a 64k "rtmp://publish.live.metacdn.com/2050C7/dfsdfsd/lowquality_664?hello&adbe-live-event=lowquality_" \ 
-s 1920x1080 -ac 2 -f flv -vcodec libx264 -profile:v baseline -b:v 2000k -maxrate 2000k -bufsize 2000k -r 24 -ar 44100 -g 48 -c:a libfdk_aac -b:a 64k "rtmp://publish.live.metacdn.com/2050C7/dfsdfsd/highquality_2064?mate&adbe-live-event=highquality_"