8

FFmpeg を使用してビデオ ループを justin.tv にストリーミングしようとしていますか? 画像シーケンスをループして、オーディオのラインと組み合わせることができました。

ffmpeg -ループ 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>

ビデオファイルでこれを行うことは可能ですか?

4

3 に答える 3

13

間違いなく可能です。ffmpeg の最近のバージョンでは、必要な回数だけ入力をループできる -stream_loop フラグが追加されました。

問題は、ソースからポイントを再生成しない場合、最初のループの後に ffmpeg がフレームをドロップすることです (タイムスタンプが突然時間内に戻るため)。これを回避するには、ffmpeg にポイントを生成するように指示して、ループ間でタイムスタンプが増加するようにする必要があります。これは +genpts 呼び出しで行われます (-i arg の前にある必要があります)。

ffmpeg 呼び出しの例を次に示します ( $F を入力ファイルに置き換えます)。この例では、2 つの出力ストリームが生成され、-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_"
于 2015-12-15T03:34:02.537 に答える
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

ただし、「StreamTest.avi」でビデオをストリーミングするローカルの「index_1500.m3u8」ファイルを作成する必要があります。

于 2014-04-01T21:59:33.750 に答える
-1

ライブ ストリーミングにファイルを提供するために、いくつかの変更を加えて Rob の回答を再利用するだけです。

ffmpeg -threads 2 -re -fflags +genpts -stream_loop -1 -i gvf.mp4 -c copy -f mpegts -mpegts_service_id 102 -metadata service_name=My_channel -metadata service_provider=My_Self -max_interleave_delta 0 -use_wallclock_as_timestamps 1 -flush_packets 1 "udp://233.0.0.1:1001?localaddr=10.60.4.237&pkt_size=188"
于 2019-09-27T21:43:27.583 に答える