✌️
jetson nanoでgstreamerとffmpegの合わせ技でwebcamの映像をH.265でSRTで送信する
以前の記事では、dockerを使ってgstreamerで新しいlibsrtを使おうとしましたが、コマ落ちが起きていました。
SRTで送信する部分を前回の記事でビルドしたffmpegを使うようにしてみました。
#!/bin/sh -xue
HOST=xx.yy.zz.ww
PORT=7001
FIFO=$PWD/.fifo
rm -f $FIFO
mkfifo $FIFO
#gst-launch-1.0 -eq filesrc location=$FIFO ! \
# h265parse ! mpegtsmux alignment=7 ! \
# srtclientsink uri="srt://$HOST:$PORT" &
ffmpeg -probesize 1024 -f hevc -r 30 -i $FIFO -c copy \
-f mpegts srt://$HOST:$PORT &
gst-launch-1.0 -eq v4l2src device="/dev/video0" ! \
'image/jpeg, width=1280, height=720, framerate=30/1' ! \
nvv4l2decoder mjpeg=1 ! 'video/x-raw(memory:NVMM)' ! \
nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! \
nvv4l2h265enc insert-sps-pps=1 iframeinterval=300 bitrate=1000000 ! \
queue leaky=2 ! filesink location=$FIFO
今度はいい感じです!
コマ落ちはなく、ffmpegの表示では安定して30fps出ています。
余談
映像のソースはwebcamのライブ映像を使っているのだけど、昨日の夜中にやったときは滑らかになったけど20fpsしか出ないな〜と思っていたけど、今朝やったらばっちり30fpsでた。暗いからシャッター速度が遅くなってカメラのフレームレートが落ちていただけだった。
ffmpegのスリム化
今回必要な機能だけに絞ったffmpegをビルドしました、
関連
Discussion