2013-04-23 15 views
6

Tôi đang cố gắng phát trực tuyến vòng lặp video tới justin.tv bằng FFmpeg? Tôi đã xoay vòng chuỗi hình ảnh và kết hợp nó với dòng âm thanh: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> 

Có thể thực hiện việc này bằng tệp video không?

Trả lời

2

Sinclair Media đã tìm thấy một giải pháp bằng cách sử dụng các bộ lọc lavfi và phụ :loop=0 với tên file:

Đây là chưa được kiểm tra:

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 

Nhưng nó phải tạo ra một địa phương "index_1500.m3u8" tập tin đó phát video trong "StreamTest.avi".

+0

tôi đã phải sử dụng những lập luận để làm cho nó hoạt động đúng: '-f lavfi -re -fflags + genpts -i "phim = GleamingThatBrownbutterfly.webm: loop = 0, setpts = N/(FRAME_RATE * TB) "'. Không có những thứ đó, nó dừng lại sau vòng đầu tiên và phần còn lại của các khung hình bị bỏ. – jadkik94

3

Chắc chắn có thể. Trong các phiên bản gần đây của ffmpeg, chúng đã thêm cờ -stream_loop cho phép bạn lặp lại đầu vào nhiều lần theo yêu cầu.

Lưu ý là nếu bạn không tạo lại các điểm từ nguồn, ffmpeg sẽ thả khung sau vòng lặp đầu tiên (vì dấu thời gian sẽ đột ngột quay trở lại đúng lúc). Để tránh điều này, bạn cần phải nói với ffmpeg để tạo ra các điểm để bạn có được một dấu thời gian tăng dần giữa các vòng lặp. Điều này được thực hiện với các cuộc gọi + gen (nó phải được trước khi -i arg).

Dưới đây là ví dụ về cuộc gọi ffmpeg (thay thế $ F bằng tệp nhập của bạn). Ví dụ này tạo ra hai luồng đầu ra và đối số -stream_loop -1 báo cho ffmpeg liên tục lặp đầu vào. Đầu ra trong trường hợp này là cho một luồng truyền phát tương tự (MetaCDN), điều chỉnh cho phù hợp với yêu cầu của bạn.

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_"