✌️

jetson nanoでgstreamerとffmpegの合わせ技でwebcamの映像をH.265でSRTで送信する

2022/05/25に公開

以前の記事では、dockerを使ってgstreamerで新しいlibsrtを使おうとしましたが、コマ落ちが起きていました。
https://zenn.dev/tetsu_koba/articles/26b4fc43387322

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をビルドしました、
https://zenn.dev/tetsu_koba/articles/129ac2c6415515

関連

https://zenn.dev/tetsu_koba/articles/8c22466ce57498

Discussion