/*
dummy_cam_0.2.c
■環境設定を行います。
sudo apt-get update
sudo apt-get install libgstrtspserver-1.0-dev
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
"192.168.1.11.mp4"というmp4ファイルを用意しておいて下さい。
■プログラムをコンパイルして実行するには、以下のコマンドを使用します:
gcc -o dummy_cam_0.2 dummy_cam_0.2.c `pkg-config --cflags --libs gstreamer-1.0 gstreamer-rtsp-server-1.0`
./dummy_cam_0.2 -r rtsp://127.0.0.1:8554/test -f 192.168.1.11.mp4
■また、ヘルプメッセージを表示するには、以下のコマンドを使用します:
./dummy_cam_0.2 -h
■稼動確認環境
(車上) 192.168.101.30
cam@cam-desktop:~/cpp/src$ ./dummy_cam_0.2
cam@cam-desktop:~/cpp/src$ ./abc_vtp_0.1 -i 192.168.101.10 -p 38089 -r rtsp://127.0.0.1:8554/test
(地上) 192.168.101.10
pt@pt-desktop:~/go/src$ more srt_rtsp_server_38089.sh
#!/bin/bash
gst-launch-1.0 srtsrc uri=srt://:38089 keep-listening=true ! decodebin ! autovid
eosink
*/
#include <gst/gst.h>
#include <gst/rtsp-server/rtsp-server.h>
#include <stdio.h>
#include <string.h>
void print_usage(const char *prog_name) {
g_print("Usage: %s -r [RTSP_URL] -f [MP4_FILE]\n", prog_name);
g_print("Default RTSP_URL: rtsp://127.0.0.1:8554/test\n");
g_print("Default MP4_FILE: 192.168.1.11.mp4\n");
g_print("Example: %s -r rtsp://127.0.0.1:8554/test -f 192.168.1.11.mp4\n", prog_name);
}
int main(int argc, char *argv[]) {
GMainLoop *loop;
GstRTSPServer *server;
GstRTSPMountPoints *mounts;
GstRTSPMediaFactory *factory;
const char *default_url = "rtsp://127.0.0.1:8554/test";
const char *default_mp4 = "192.168.1.11.mp4";
const char *rtsp_url = default_url;
const char *mp4_file = default_mp4;
char path[256] = "/test";
char service[6] = "8554"; // ポート番号のデフォルト値
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-h") == 0) {
print_usage(argv[0]);
return 0;
} else if (strcmp(argv[i], "-r") == 0 && i + 1 < argc) {
rtsp_url = argv[++i];
// RTSP URLのポート番号とパス部分を抽出
const char *url_port = strchr(rtsp_url + strlen("rtsp://"), ':');
if (url_port != NULL) {
url_port++;
const char *url_path = strchr(url_port, '/');
if (url_path != NULL) {
strncpy(path, url_path, sizeof(path) - 1);
path[sizeof(path) - 1] = '\0'; // Null terminatorを追加
int port_length = url_path - url_port;
if (port_length < sizeof(service)) {
strncpy(service, url_port, port_length);
service[port_length] = '\0'; // Null terminatorを追加
}
}
}
} else if (strcmp(argv[i], "-f") == 0 && i + 1 < argc) {
mp4_file = argv[++i];
}
}
gst_init(&argc, &argv);
loop = g_main_loop_new(NULL, FALSE);
server = gst_rtsp_server_new();
gst_rtsp_server_set_service(server, service);
mounts = gst_rtsp_server_get_mount_points(server);
factory = gst_rtsp_media_factory_new();
char launch_string[512];
snprintf(launch_string, sizeof(launch_string),
"( filesrc location=%s ! qtdemux name=d d.video_0 ! queue ! rtph264pay pt=96 name=pay0 )",
mp4_file);
gst_rtsp_media_factory_set_launch(factory, launch_string);
// ループ設定を追加
//g_object_set(factory, "loop", TRUE, NULL);
gst_rtsp_mount_points_add_factory(mounts, path, factory);
g_object_unref(mounts);
gst_rtsp_server_attach(server, NULL);
g_print("Stream ready at %s with file %s\n", rtsp_url, mp4_file);
g_main_loop_run(loop);
return 0;
}
仮想RTSPカメラの作り方
kobore.netからGmailへのメールで送信エラーが発生
読者さんからのメールに返信しようとしたのですが、エラーリターンが連発しました。エラーメールの文面を解析したら、どうやら、これが原因だったようです。
そりゃ、まあ、kobore.netなんぞという弱小ドメインを、Googleが怪しいと思うのは当然かもしれませんが(と、ちょっと拗ねてみる)
-----
kobore.netのドメインでのメールアドレスは、普段使いしておらず、また、別メールに転送されており、運が悪いとそこでフィルタリングがかけられて、見落としすることが多々あります。(定期的にフォルダのチェックはしておりますが)。
江端からの返信がない場合、しばらくお待ち下さい。思い出したころに、返信を差し上げることがあります(もし、見逃してしまったら、大変申し訳ありません)。
gst_videotestsrc_autovideosink.c
/*
gcc -o gst_videotestsrc_autovideosink gst_videotestsrc_autovideosink.c `pkg-config --cflags --libs gstreamer-1.0`
*/
#include <gst/gst.h>
int main(int argc, char *argv[]) {
GstElement *pipeline, *source, *sink;
GstBus *bus;
GstMessage *msg;
GError *error = NULL;
/* Initialize GStreamer */
gst_init(&argc, &argv);
/* Create the elements */
source = gst_element_factory_make("videotestsrc", "source");
sink = gst_element_factory_make("autovideosink", "sink");
/* Create the empty pipeline */
pipeline = gst_pipeline_new("test-pipeline");
if (!pipeline || !source || !sink) {
g_printerr("Not all elements could be created.\n");
return -1;
}
/* Build the pipeline */
gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL);
if (gst_element_link(source, sink) != TRUE) {
g_printerr("Elements could not be linked.\n");
gst_object_unref(pipeline);
return -1;
}
/* Start playing */
gst_element_set_state(pipeline, GST_STATE_PLAYING);
/* Wait until error or EOS */
bus = gst_element_get_bus(pipeline);
msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));
/* Parse message */
if (msg != NULL) {
GError *err;
gchar *debug_info;
switch (GST_MESSAGE_TYPE(msg)) {
case GST_MESSAGE_ERROR:
gst_message_parse_error(msg, &err, &debug_info);
g_printerr("Error received from element %s: %s\n", GST_OBJECT_NAME(msg->src), err->message);
g_printerr("Debugging information: %s\n", debug_info ? debug_info : "none");
g_clear_error(&err);
g_free(debug_info);
break;
case GST_MESSAGE_EOS:
g_print("End-Of-Stream reached.\n");
break;
default:
/* We should not reach here because we only asked for ERRORs and EOS */
g_printerr("Unexpected message received.\n");
break;
}
gst_message_unref(msg);
}
/* Free resources */
gst_object_unref(bus);
gst_element_set_state(pipeline, GST_STATE_NULL);
gst_object_unref(pipeline);
return 0;
}
愚痴 : 最近、ラズパイに添付されるSDカードのサイズが大きい
クローン作るのに、10時間弱ですよ・・・(昔はよかった・・・(遠い目))
パワーポイントが落ちて、ファイルが紛失した時、C:\Users\tomoi\AppData\Roaming\Microsoft\PowerPoint\ の中のtmpファイルでなんとかした件
ここの最新のtmpはダメだったけど、その1つまえのtmpファイルを、どっかのディレクトリにもっていって、拡張子を、pptxにしたら復活した。
よかったー
が、このままではいかんので、ちゃんと設定することにした。(が、すでに設定されているみたいなんだよなー)
ジャーナル(IJSKM)に掲載されました Social Impact Simulation Including Social Capital, Based on Current Status of Multi-Agent Simulation
Social Impact Simulation Including Social Capital, Based on Current Status of Multi-Agent Simulation
https://www.iaiai.org/journals/index.php/IJSKM/article/view/834
施設の滞在時間
■コンビニ 5〜10分 (Lenovo Support) ?
■イオンモール 3〜4時間 (TripAdvisor)。tripadvisor.com.au/Attraction_Review-g298316-d11444576-Reviews-AEON_Mall_Shah_Alam-Shah_Alam_Petaling_District_Selangor.html
午前10時から午後2時の間
■デパート 2〜3時間(デパート滞在時間に関する調査) 出展調査中
午前10時から午後2時の間
■理髪店 30分から1時間程度 自宅から歩いていける理髪店までの距離は、1〜2キロメートル程度が一般的です。これは、徒歩で約10〜20分程度の距離です
午前9時から午後2時の間が多い
■スーパーマーケット 20〜30分程度 郊外や田舎では、スーパーマーケットがより遠くにある場合があり、2〜3キロメートル程度の距離になることもあります。これは徒歩で約20〜30分程度の距離です
午前10時から12時: 午後12時から2時: 夕方(午後4時以降):
■フィットネスクラブの一般的な滞在時間は、約1〜2時間
早朝(午前5時〜7時): 午前中(午前9時〜11時): 夕方から夜(午後5時〜8時):
■郵便局の滞在時間は、一般的に10〜20分程度です
午前10時〜12時: 午後2時〜4時: 夕方(午後4時〜5時半):
■役所での滞在時間は、手続きの内容や混雑状況によって異なりますが、一般的には30分から2時間程度です。
午前9時〜11時: 午後1時〜3時: 夕方(午後3時〜4時半):
■イトーヨーカドーの滞在時間は、買い物の内容や目的によって異なりますが、一般的には約1〜2時間程度です。
午前10時〜12時: 午後2時〜4時: 夕方(午後4時〜6時):
■小学校、中学校、高校、大学の滞在時間を推定してください
小学校
- 滞在時間: 約6〜7時間
- 説明: 授業時間は通常8:30から15:30まで、途中に休憩時間と昼休みを含む。
午前7時〜8時
中学校
- 滞在時間: 約7〜8時間
- 説明: 授業時間は通常8:30から16:30まで、クラブ活動や補習授業がある場合も。
午前7時〜8時
高校
- 滞在時間: 約8〜9時間
- 説明: 授業時間は通常8:30から17:00まで、放課後にクラブ活動や補習授業があることが多い。
午前6時30分〜7時30分
大学
- 滞在時間: 約3〜8時間
- 説明: 授業の時間割によるが、通常は講義やゼミ、実験などで1日あたり3〜8時間程度滞在することが一般的。
午前7時〜9時: 昼過ぎ(午前11時〜午後1時):
■病院 一般診察: 約1〜2時間
午前8時〜10時: 午前10時〜正午: 午後1時〜3時:
■医院 一般診察: 約30分〜1時間
午前8時〜10時: 午前10時〜正午: 午後1時〜3時:
病院情報
椿ヶ丘医院 35.374179444213844, 139.62548285644363
たかさき内科 35.368125481967624, 139.62874442258143
宮内医院 35.36700562415518, 139.62230712122627
石丸医院 35.36552266335579, 139.6190240971432
Keihin Clinic 35.36916221130502, 139.61679249934002
松瀬医院 35.36335285477337, 139.61546212372662
上岡医院 35.36226792861258, 139.62035447275656
Shiraishi Clinic35.36223293075176, 139.6202686420718
Tomioka Pharmacy 35.36812955597617, 139.62940680073422
Himawari Pharmacy 35.366397569689774, 139.62283421404163
アイリス薬局本店 35.36198794531882, 139.62060261622233
京急ストア 35.36728848674138, 139.6299896697414
幼稚園、保育園が、この近くにはない
横浜市立小田小学校 35.37353207684269, 139.62044298491338
横浜市立富岡小学校 35.36786301665309, 139.62430536572649
横浜市立小田中学校 35.37268874529976, 139.61975632796307
高校はない
図書館もない
一般的な自転車の平均速度を通勤・通学用自転車の12-20 km/hとした場合、人の歩行速度(通常約5 km/h)と比較すると以下のようになります。