MPEG-TS セグメントをインターリーブしようとしていますが、失敗します。セグメントの 1 つのセットは、ラップトップの内蔵カメラを使用して実際にキャプチャされ、次のコマンドで FFMPEG を使用してエンコードされました。
ffmpeg -er 4 -y -f video4linux2 -s 640x480 -r 30 -i %s -isync -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 640x480 -vcodec libx264 -fflags +genpts -b 386k -coder 0 -me_range 16 -keyint_min 25 -i_qfactor 0.71 -bt 386k -maxrate 386k -bufsize 386k -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -aspect 640:480
もう 1 つは、次のコマンドを使用してエンコードされた avi ファイルです。
fmpeg -er 4 -y -f avi -s 640x480 -r 30 -i ./DSCF2021.AVI -vbsf dump_extra -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 640x480 -vcodec libx264 -fflags +genpts -b 386k -coder 0 -me_range 16 -keyint_min 25 -i_qfactor 0.71 -bt 386k -maxrate 386k -bufsize 386k -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -aspect 640:480
次に、オープン ソースのセグメンターを使用して、出力が ts セグメントに分割されます。
両方が同じソース (両方ともカメラ) から来ている場合、正常に動作します。ただし、この場合、セグメントの 2 番目のセットがフリーズします。時間が経っても映像が動かない..なのでエンコードの問題だと思います。だから私の質問は、これが機能するようにffmpegコマンドをどのように変更すればよいですか?
インターリーブとは、セグメントの最初のセットを含むプレイリストと、セグメントの他のセットを含む別のプレイリストを持ち、クライアントが一方を呼び出してから他方を呼び出すことを意味します (HTTP ライブ ストリーミング)
セグメントの最初のセットの 1 つの ffprobe 出力:
Input #0, mpegts, from 'live1.ts':
Duration: 00:00:09.76, start: 1.400000, bitrate: 281 kb/s
Program 1 Service01
Metadata:
name : Service01
provider_name : FFmpeg
Stream #0.0[0x100]: Video: h264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 29.92 fps, 29.92 tbr, 90k tbn, 59.83 tbc
Stream #0.1[0x101]: Audio: aac, 48000 Hz, stereo, s16, 111 kb/s
セグメントの 2 番目のセットの 1 つの ffprobe 出力:
Input #0, mpegts, from 'ad1.ts':
Duration: 00:00:09.64, start: 1.400000, bitrate: 578 kb/s
Program 1 Service01
Metadata:
name : Service01
provider_name : FFmpeg
Stream #0.0[0x100]: Video: h264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x101]: Audio: aac, 48000 Hz, stereo, s16, 22 kb/s
ありがとうございました、