あかはば

ドローンやMacなどなど

動画配信

【解決】h264_omxがNginxから実行できない

投稿日:

h264_omxがnginx-rtmpから利用できない問題。一応の解決策が見つかりました。方法は、『nginx.confで設定するuserをデフォルトのwww-dataではなく、piなどシェルスクリプト、コマンドを実行できるユーザーにする』でした。nginxはデフォルトではユーザーwww-dataのもとで動くことになっています。このユーザーとユーザーpiを比べてみると、

www-dataはログインできないユーザーに設定されています。これはセキュリティの観点からいうとごく普通の対応ですが、今回はrtmpモジュールの中でexecコマンドでffmpegを実行したいので、シェルコマンドが実行できないユーザーでは困ります。ですので、このwww-dataをpiに変更してみました。

nginx.conf 1行目

変更前: user www-data;

変更後: user pi;

これで、execによってffmpegコマンドを実行できるようになりました。しかし一つ疑問があります。ログインできない(シェルコマンドを実行できない)ユーザーww-dataでnginxを利用していた時も、ffmpegを利用してlibx264ではエンコードできました。h264_omxが利用できなかっただけです・・・・。

ログインできてシェルコマンドを実行できるユーザーじゃないとGPUを利用したハードエンコードは利用できないということなのかも知れませんね。

ネットを探していたら、ffmpegコマンドをff.shなどシェルスクリプトに記述して、ff.shに実行権限を与えて、

exec\_push /etc/nginx/ff.sh;

とrtmp.confに記述すると紹介されていましたが、userにpiを設定して

exec\_push /usr/bin/ffmpeg -i rtmp://localhost:1935/multi/test -c:v h264_omx -vb 6000k -vf scale=-1:720 -acodec copy -f flv rtmp://localhost:1935/live/test;

としても動かすことができました。

-動画配信
-,

Copyright© あかはば , 2020 All Rights Reserved Powered by STINGER.