質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1691閲覧

MJPG-STREAMERの画面サイズを変更できません

Uka

総合スコア28

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/08/14 03:59

編集2021/08/15 06:08

前提・実現したいこと

ラズパイに接続したパイカメラで撮影している映像を、MJPG-STREAMERを使ってローカルPCのブラウザ画面からストリーミングできるようなプログラムを組んでいます。サイズを320x240にした場合、映像は問題なく表示できるのですが、ブラウザ画面にしめる画角サイズが小さいため、たとえば倍の640x480にサイズを変更してみるとONボタンをクリックしても映像が表示されません。サイズに関係する箇所だけ修正しているのですが、サイズを修正することにより、ほかのプログラムに干渉している可能性などあるでしょうか?考えられる原因などアドバイスいただけましたらありがたいです。よろしくお願いいたします。

(8/15追記)シェルスクリプトから直接コマンド入力して動作確認しました。試したことの欄に追記しました。

発生している問題・エラーメッセージ

ブラウザのコンソール画面にはエラーはとくに表示されません。
(8/15追記)シェルスクリプトから直接コマンド入力した際に
”Unable to start capture: Operation not permitte”というようなメッセージが表示されました。

pi@raspberrypi:~/mjpg-streamer-experimental $ mjpg_streamer -i "/usr/local/lib/mjpg-streamer/input_uvc.so -d /dev/video0 -y -r 640x480 -f 15" -o "/usr/local/lib/mjpg-streamer/output_http.so -p 8000 -w ./www" MJPG Streamer Version.: 2.0 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480 i: Frames Per Second.: 15 i: Format............: YUYV i: JPEG Quality......: 80 i: TV-Norm...........: DEFAULT UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25) o: www-folder-path......: ./www/ o: HTTP TCP port........: 8000 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled Unable to start capture: Operation not permitted i: Can't enable video in first time i: cleaning up resources allocated by input thread

該当のソースコード

sh

1#!/bin/sh 2cd /home/pi/mjpg-streamer-experimental 3mjpg_streamer -i "/usr/local/lib/mjpg-streamer/input_uvc.so -yuv -d /dev/video0 -y -r 320x240 -f 10" -o "/usr/local/lib/mjpg-streamer/output_http.so -p 8080 -w ./www" -b 4

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>(sample) MJPG-streamer -> CANVAS Tag</title> 6</head> 7<body> 8 <form action="/" method="POST"> 9 <input type="submit" name="camera_action" value="ON"> 10 <input type="submit" name="camera_action" value="OFF"> 11 </form> 12 13 14<canvas id="canvas" width="320" height="240"></canvas> 15<script> 16const canvas = document.getElementById('canvas'); 17const context = canvas.getContext('2d'); 18 19function render() { 20 const image = new Image(); 21 image.onload = function(){ 22 canvas.getContext("2d").drawImage(image, 0, 0, 320, 240); 23 // 線を描画 24 25 } 26 // ↓ MJPG-streamerの静止画像をロード 27 image.src = "http://192.168.2.1:8080/?action=snapshot"; 28 requestAnimationFrame(render); 29} 30render(); 31</script> 32</body> 33</html>

Python

1# -*- coding: utf-8 -*- 2from flask import Flask, render_template, request 3import subprocess 4import os 5 6script_path = os.path.dirname(os.path.abspath(__file__)) 7 8app = Flask(__name__) 9 10@app.route('/', methods=['GET']) 11def get(): 12 return render_template('index.html') 13 14 15@app.route('/', methods=['POST']) 16def index(): 17 camera_action = request.form.get('camera_action') 18 if camera_action == 'ON': 19 subprocess.call(['/home/pi/mjpeg_streamer_python/mjpgstreamer.sh']) 20 else: 21 subprocess.call(['/home/pi/mjpeg_streamer_python/camera_stop.sh']) 22 return render_template('index.html') 23 24if __name__ == '__main__': 25 app.run("0.0.0.0")

試したこと

シェルから直接コマンド入力して確認してみたところ、やはり640x480に変更したときはストリーミングされませんでした。その際、シェルスクリプトに320x480のときにはでていなかったメッセージが表示されていたので、上記のエラーコードに追記します。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問