Dre*_*Eye 6 streaming ffmpeg justin.tv
我正在尝试使用FFmpeg将视频循环流式传输到justin.tv?我设法循环一个图像序列并将其与音频中的线组合:
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>
是否可以使用视频文件执行此操作?
绝对有可能.在最新版本的ffmpeg中,他们添加了一个-stream_loop标志,允许您根据需要循环输入多次.
问题是,如果你没有从源重新生成pts,ffmpeg将在第一个循环后丢弃帧(因为时间戳会突然回到时间).要避免这种情况,您需要告诉ffmpeg生成pts,以便在循环之间获得增加的时间戳.这是通过+ 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_"
Run Code Online (Sandbox Code Playgroud)
Sinclair Media通过使用 lavfi 过滤器并附加到:loop=0文件名找到了解决方案:
这是未经测试的:
\n\nffmpeg -f lavfi -re -i movie=StreamTest.avi:loop=0 \\\n-acodec libfaac -b:a 64k -pix_fmt yuv420p -vcodec libx264 \\ \n-x264opts level=41 -r 25 -profile:v baseline -b:v 1500k \\ \n-maxrate 2000k -force_key_frames 50 -s 640\xc3\x97360 -map 0 -flags \\ \n-global_header -f segment -segment_list index_1500.m3u8 \\ \n-segment_time 10 -segment_format mpeg_ts \\\n-segment_list_type m3u8 segmented.ts\nRun Code Online (Sandbox Code Playgroud)\n\n但它应该创建一个本地“index_1500.m3u8”文件,用于流式传输“StreamTest.avi”中的视频。
\n