101

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Zacząłem próbować tego, zanim zobaczyłem Twój post:
https://forum.openwrt.org/t/how-to-buil … ort/116554
Co o tym sądzisz?

Aaaa, przełączyłem się na gałąź v21.02.3 - to chyba ostatnia oficjalnie wydana

102

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Proszę:

(cd /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-arm_cortex-a7_neon-vfpv4/libffmpeg-custom/CONTROL; ( echo "$CONTROL"; printf "Description: "; echo "$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; ) > control; chmod 644 control; ( echo "#!/bin/sh"; echo "[ \"\${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo "default_postinst \$0 \$@"; ) > postinst; ( echo "#!/bin/sh"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo "default_prerm \$0 \$@"; ) > prerm; chmod 0755 postinst prerm;  )
install -d -m0755 /root/OpenWRT/openwrt/bin/packages/arm_cortex-a7_neon-vfpv4/packages
/root/OpenWRT/openwrt/staging_dir/host/bin/fakeroot /root/OpenWRT/openwrt/scripts/ipkg-build -m "" /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-arm_cortex-a7_neon-vfpv4/libffmpeg-custom /root/OpenWRT/openwrt/bin/packages/arm_cortex-a7_neon-vfpv4/packages
Packaged contents of /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-arm_cortex-a7_neon-vfpv4/libffmpeg-custom into /root/OpenWRT/openwrt/bin/packages/arm_cortex-a7_neon-vfpv4/packages/libffmpeg-custom_4.3.3-1_arm_cortex-a7_neon-vfpv4.ipk
mkdir -p /root/OpenWRT/openwrt/bin/targets/sunxi/cortexa7/packages /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-arm_cortex-a7_neon-vfpv4/ffmpeg-custom/CONTROL /root/OpenWRT/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo
install -d -m0755 /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-arm_cortex-a7_neon-vfpv4/ffmpeg-custom/usr/bin
cp -fpR /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-install/usr/bin/ffmpeg /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-arm_cortex-a7_neon-vfpv4/ffmpeg-custom/usr/bin/
cp: cannot stat '/root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-install/usr/bin/ffmpeg': No such file or directory
make[3]: *** [Makefile:751: /root/OpenWRT/openwrt/bin/packages/arm_cortex-a7_neon-vfpv4/packages/ffmpeg-custom_4.3.3-1_arm_cortex-a7_neon-vfpv4.ipk] Error 1
make[3]: Leaving directory '/root/OpenWRT/openwrt/feeds/packages/multimedia/ffmpeg'
time: package/feeds/packages/ffmpeg/custom/compile#411.10#50.20#440.13
    ERROR: package/feeds/packages/ffmpeg failed to build (build variant: custom).
make[2]: *** [package/Makefile:116: package/feeds/packages/ffmpeg/compile] Error 1
make[2]: Leaving directory '/root/OpenWRT/openwrt'
make[1]: *** [package/Makefile:110: /root/OpenWRT/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/root/OpenWRT/openwrt'
make: *** [/root/OpenWRT/openwrt/include/toplevel.mk:230: world] Błąd 2

103

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Usunąłem .config i zacząłem od nowa:

1. Global build settings -> Compile with support for patented functionality -> zaznaczone [*]
2. Libraries -> libffmpeg-custom -> zaznaczone <*> (i dodatkowo kilka kodeków)
3. Multimedia -> ffmpeg-custom -> zaznaczone <*>

I błąd:

cp: cannot stat '/root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ffmpeg-custom/ffmpeg-4.3.3/ipkg-install/usr/bin/ffmpeg': No such file or directory
make[3]: *** [Makefile:751: /root/OpenWRT/openwrt/bin/packages/arm_cortex-a7_neon-vfpv4/packages/ffmpeg-custom_4.3.3-1_arm_cortex-a7_neon-vfpv4.ipk] Error 1
make[3]: Leaving directory '/root/OpenWRT/openwrt/feeds/packages/multimedia/ffmpeg'
time: package/feeds/packages/ffmpeg/custom/compile#409.00#47.71#437.74
    ERROR: package/feeds/packages/ffmpeg failed to build (build variant: custom).
make[2]: *** [package/Makefile:116: package/feeds/packages/ffmpeg/compile] Error 1
make[2]: Leaving directory '/root/OpenWRT/openwrt'
make[1]: *** [package/Makefile:110: /root/OpenWRT/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/root/OpenWRT/openwrt'
make: *** [/root/OpenWRT/openwrt/include/toplevel.mk:230: world] Błąd 2

Jeśli zaznaczyłbym w Multimedia "ffmpeg" to od razu włączy się zależność "libffmpeg-full" w Libraries i wyrzuci wtedy błąd:

Collected errors:
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavcodec.so.58
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavcodec.so.58.91.100
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavdevice.so.58
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavdevice.so.58.10.100
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavformat.so.58
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavformat.so.58.45.100
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavutil.so.56
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavutil.so.56.51.100
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libpostproc.so.55
        But that file is already provided by package  * libffmpeg-full
 * check_data_file_clashes: Package libffmpeg-custom wants to install file /root/OpenWRT/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libpostproc.so.55.7.100
        But that file is already provided by package  * libffmpeg-full
 * opkg_install_cmd: Cannot install package libffmpeg-custom.
make[2]: *** [package/Makefile:70: package/install] Error 255
make[2]: Leaving directory '/root/OpenWRT/openwrt'
make[1]: *** [package/Makefile:111: /root/OpenWRT/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.package_install] Error 2
make[1]: Leaving directory '/root/OpenWRT/openwrt'
make: *** [/root/OpenWRT/openwrt/include/toplevel.mk:230: world] Błąd 2

104

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Tak, co robię nie tak?
Naniosłem poniższe zmiany w menuconfig:

1. Global build settings -> Compile with support for patented functionality -> zaznaczone [*]
2. Multimedia -> ffmpeg -> zaznaczone <*>
3. Libraries -> libffmpeg-custom -> odzaznaczone < >
4. Libraries -> libffmpeg-full -> zaznaczone -*-
5. Libraries -> libffmpeg-mini -> odzaznaczone < >
6. Libraries -> libx264 -> zaznaczone <*>

Zapisałem i make V=s -j1 i tyle. Obrazu na pewno nie pomyliłem...

105

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Tego logu z mojego postu wyżej:

# ffmpeg -y -rtsp_transport tcp -i "rtsp://-1:-1@192.168.203.21/stream1" -vframes 1 output.jpg
ffmpeg version 4.3.3 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 8.4.0 (OpenWrt GCC 8.4.0 r16554-1d4dea6d4f)
  configuration: --enable-cross-compile --cross-prefix=arm-openwrt-linux-muslgnueabi- --arch=arm --cpu=cortex-a7 --target-os=linux --prefix=/usr --pkg-config=pkg-config --enable-shared --enable-static --enable-pthreads --enable-zlib --disable-doc --disable-debug --disable-lzma --disable-vaapi --disable-vdpau --disable-outdevs --disable-runtime-cpudetect --enable-lto --enable-vfp --enable-neon --enable-vfp --disable-x86asm --enable-gnutls --disable-decoder=atrac3 --disable-decoder=h264 --disable-decoder=hevc --disable-decoder=vc1 --disable-muxer=h264 --disable-muxer=hevc --disable-muxer=vc1 --disable-demuxer=h264 --disable-demuxer=hevc --disable-demuxer=vc1 --disable-parser=h264 --disable-parser=hevc --disable-parser=vc1 --enable-small --enable-libmp3lame --enable-libfdk-aac
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100

106

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Cezary napisał/a:

i później w multimedia ffmpeg-custom

Czegoś takiego nie ma. W multimedia jest tylko "ffmpeg".

To zrobiłem:

1. Global build settings -> Compile with support for patented functionality -> zaznaczone [*]
2. Multimedia -> ffmpeg -> zaznaczone <*>
3. Libraries -> libffmpeg-custom -> odzaznaczone < >
4. Libraries -> libffmpeg-full -> zaznaczone -*-
5. Libraries -> libffmpeg-mini -> odzaznaczone < >
6. Libraries -> libx264 -> zaznaczone <*>

i niestety dalej to samo:

[h264_v4l2m2m @ 0x1a411a0] Could not find a valid device
[h264_v4l2m2m @ 0x1a411a0] can't configure decoder
[rtsp @ 0x1a3e4e0] Failed to open codec in avformat_find_stream_info
[h264_v4l2m2m @ 0x1a411a0] Could not find a valid device
[h264_v4l2m2m @ 0x1a411a0] can't configure decoder
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://-1:-1@192.168.203.21/stream1':
  Metadata:
    title           : stream server
    comment         : stream1
  Duration: N/A, start: 0.113875, bitrate: N/A
    Stream #0:0: Video: h264, none, 1920x1080, 90k tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
[h264_v4l2m2m @ 0x1b48b00] Could not find a valid device
[h264_v4l2m2m @ 0x1b48b00] can't configure decoder
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_v4l2m2m) -> mjpeg (native))
Error while opening decoder for input stream #0:0 : Invalid argument

107

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Cezary napisał/a:

...a ty masz h264 wyłączone podczas kompilacji:

--disable-decoder=h264
--disable-muxer=h264
--disable-parser=h264

Kompiluje cały system + dodałem do paczki ffmpeg.
Teraz chce dokonać tych zmian, o których wspomniałeś...
Czy to powinno znajdować się w pliku package/feeds/packages/ffmpeg/Makefile ?
Z tych trzech rzeczy znalazłem tam jedynie wpis: --disable-decoder=pcm_bluray,pcm_dvd

108

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Ok, przesiadłem się na 21.02.3, aby to sprawdzić i faktycznie nie ma już tutaj tej zależności z pakietem mini, instaluje się tylko full.
Reboot i...

ffmpeg -y -rtsp_transport tcp -i "rtsp://-1:-1@192.168.203.21/stream1" -vframes 1 output.jpg
ffmpeg version 4.3.4 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 8.4.0 (OpenWrt GCC 8.4.0 r16594-ce92de8c8c)
  configuration: --enable-cross-compile --cross-prefix=arm-openwrt-linux-muslgnueabi- --arch=arm --cpu=cortex-a7 --target-os=linux --prefix=/usr --pkg-config=pkg-config --enable-shared --enable-static --enable-pthreads --enable-zlib --disable-doc --disable-debug --disable-lzma --disable-vaapi --disable-vdpau --disable-outdevs --disable-runtime-cpudetect --enable-lto --enable-vfp --enable-neon --enable-vfp --disable-x86asm --enable-gnutls --disable-decoder=atrac3 --disable-decoder=h264 --disable-decoder=hevc --disable-decoder=vc1 --disable-muxer=h264 --disable-muxer=hevc --disable-muxer=vc1 --disable-demuxer=h264 --disable-demuxer=hevc --disable-demuxer=vc1 --disable-parser=h264 --disable-parser=hevc --disable-parser=vc1 --enable-libopus --enable-small --enable-libmp3lame --enable-libfdk-aac
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
[h264_v4l2m2m @ 0x1b184d0] Could not find a valid device
[h264_v4l2m2m @ 0x1b184d0] can't configure decoder
[rtsp @ 0x1b15710] Failed to open codec in avformat_find_stream_info
[h264_v4l2m2m @ 0x1b184d0] Could not find a valid device
[h264_v4l2m2m @ 0x1b184d0] can't configure decoder
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://-1:-1@192.168.203.21/stream1':
  Metadata:
    title           : stream server
    comment         : stream1
  Duration: N/A, start: 0.077500, bitrate: N/A
    Stream #0:0: Video: h264, none, 1920x1080, 90k tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
[h264_v4l2m2m @ 0x1b19e50] Could not find a valid device
[h264_v4l2m2m @ 0x1b19e50] can't configure decoder
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_v4l2m2m) -> mjpeg (native))
Error while opening decoder for input stream #0:0 : Invalid argument

Gdzie w imagebuilderze znajdę źródła do tej paczki i co muszę zmienic?

109

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Dopisałem "ffmpeg" do mojego imagebuildera, oto efekt:

Collected errors:
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavcodec.so.58
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavcodec.so.58.91.100
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavformat.so.58
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavformat.so.58.45.100
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavutil.so.56
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavutil.so.56.51.100
        But that file is already provided by package  * libffmpeg-mini
 * opkg_install_cmd: Cannot install package ffmpeg.
make[2]: *** [Makefile:167: package_install] Error 255
make[1]: *** [Makefile:122: _call_image] Error 2
make: *** [Makefile:240: image] Błąd 2

Dopisałem tylko "libffmpeg-full", efekt niżej:

Collected errors:
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavcodec.so.58
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavcodec.so.58.91.100
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavformat.so.58
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavformat.so.58.45.100
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavutil.so.56
        But that file is already provided by package  * libffmpeg-mini
 * check_data_file_clashes: Package libffmpeg-full wants to install file /root/OpenWRT/nanopineo1.4_v21.02.0-rc4_imagebuilder/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-sunxi/usr/lib/libavutil.so.56.51.100
        But that file is already provided by package  * libffmpeg-mini
 * opkg_install_cmd: Cannot install package libffmpeg-full.
make[2]: *** [Makefile:167: package_install] Error 255
make[1]: *** [Makefile:122: _call_image] Error 2
make: *** [Makefile:240: image] Błąd 2

110

(58 odpowiedzi, napisanych Oprogramowanie / Software)

ffmpeg był akurat doinstalowany potem. Czemu zainstalował się mini podczas instalowania full, nie mam pojęcia.

Cezary napisał/a:

...ty masz h264 wyłączone podczas kompilacji:

--disable-decoder=h264
--disable-muxer=h264
--disable-parser=h264

To w którym miejscu mam to włączyć?

111

(58 odpowiedzi, napisanych Oprogramowanie / Software)

To jest system składany przez imagebuildera. Czy muszę kompilować jądro od nowa?

112

(58 odpowiedzi, napisanych Oprogramowanie / Software)

Cześć,

Potrzebuje wykonać screenshot z kamery dostępnej w sieci lokalnej przy użyciu OpenWRT.
Urządzenie to FriendlyARM NanoPi NEO v1.4, system w wersji 21.02.0-rc4.

Zainstalowałem ffmpeg:

# opkg list-installed | grep ffmpeg

ffmpeg - 4.3.4-1
libffmpeg-full - 4.3.4-1
libffmpeg-mini - 4.3.4-1

Po uruchomieniu następujące błędy:

# ffmpeg -y -rtsp_transport tcp -i "rtsp://-1:-1@192.168.203.21/stream1" -vframes 1 output.jpg

ffmpeg version 4.3.4 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 8.4.0 (OpenWrt GCC 8.4.0 r16594-ce92de8c8c)
  configuration: --enable-cross-compile --cross-prefix=arm-openwrt-linux-muslgnueabi- --arch=arm --cpu=cortex-a7 --target-os=linux --prefix=/usr --pkg-config=pkg-config --enable-shared --enable-static --enable-pthreads --enable-zlib --disable-doc --disable-debug --disable-lzma --disable-vaapi --disable-vdpau --disable-outdevs --disable-runtime-cpudetect --enable-lto --enable-vfp --enable-neon --enable-vfp --disable-x86asm --enable-gnutls --disable-decoder=atrac3 --disable-decoder=h264 --disable-decoder=hevc --disable-decoder=vc1 --disable-muxer=h264 --disable-muxer=hevc --disable-muxer=vc1 --disable-demuxer=h264 --disable-demuxer=hevc --disable-demuxer=vc1 --disable-parser=h264 --disable-parser=hevc --disable-parser=vc1 --enable-libopus --enable-small --enable-libmp3lame --enable-libfdk-aac
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
[h264_v4l2m2m @ 0x14374d0] Could not find a valid device
[h264_v4l2m2m @ 0x14374d0] can't configure decoder
[rtsp @ 0x1434710] Failed to open codec in avformat_find_stream_info
[h264_v4l2m2m @ 0x14374d0] Could not find a valid device
[h264_v4l2m2m @ 0x14374d0] can't configure decoder
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://-1:-1@192.168.203.21/stream1':
  Metadata:
    title           : stream server
    comment         : stream1
  Duration: N/A, start: 0.227500, bitrate: N/A
    Stream #0:0: Video: h264, none, 1920x1080, 90k tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
[h264_v4l2m2m @ 0x1438e50] Could not find a valid device
[h264_v4l2m2m @ 0x1438e50] can't configure decoder
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_v4l2m2m) -> mjpeg (native))
Error while opening decoder for input stream #0:0 : Invalid argument

Testowałem to spod Debiana, nie mam tego problemu.
Proszę o pomoc przy OpenWRT.

113

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Napisałem swojego rodzaju watchdoga w Bashu i w ten sposób to jakoś działa do tej pory, robie cały czas testy i sprawdzam, czy się to nie wysypie. Dziękuję Ci za dotychczasową pomoc.

Mam jeszcze jeden modem, który ma dość dziwne objawy w RAS:

00:01 daemon.notice netifd: Interface 'modem' is setting up now
00:02 daemon.notice pppd[16473]: pppd 2.4.7 started by root, uid 0
00:03 local2.info chat[16484]: abort on (BUSY)
00:03 local2.info chat[16484]: abort on (NO CARRIER)
00:03 local2.info chat[16484]: abort on (ERROR)
00:03 local2.info chat[16484]: report (CONNECT)
00:03 local2.info chat[16484]: timeout set to 10 seconds
00:03 local2.info chat[16484]: send (AT&F^M)
00:04 local2.info chat[16484]: expect (OK)
00:04 local2.info chat[16484]: AT^M
00:04 local2.info chat[16484]: *EMRDY: 1^M
00:04 local2.info chat[16484]: &F^M^M
00:04 local2.info chat[16484]: OK
00:04 local2.info chat[16484]:  -- got it
00:04 local2.info chat[16484]: send (ATE1^M)
00:04 local2.info chat[16484]: expect (OK)
00:04 local2.info chat[16484]: ^M
00:04 local2.info chat[16484]: ATE1^M^M
00:04 local2.info chat[16484]: OK
00:04 local2.info chat[16484]:  -- got it
00:04 local2.info chat[16484]: send (AT+CGDCONT=1,"IP","darmowy"^M)
00:04 local2.info chat[16484]: timeout set to 30 seconds
00:04 local2.info chat[16484]: expect (OK)
00:04 local2.info chat[16484]: ^M
00:04 local2.info chat[16484]: AT+CGDCONT=1,"IP","darmowy"^M^M
00:04 local2.info chat[16484]: OK
00:04 local2.info chat[16484]:  -- got it
00:04 local2.info chat[16484]: send (ATD*99***1#^M)
00:04 local2.info chat[16484]: expect (CONNECT)
00:04 local2.info chat[16484]: ^M
00:05 local2.info chat[16484]: ATD*99***1#^M^M
00:05 local2.info chat[16484]: CONNECT
00:05 local2.info chat[16484]:  -- got it
00:05 local2.info chat[16484]: send ( ^M)
00:05 daemon.info pppd[16473]: Serial connection established.
00:05 kern.info kernel: [ 1078.490367] 3g-modem: renamed from ppp0
00:05 daemon.info pppd[16473]: Renamed interface ppp0 to 3g-modem
00:05 daemon.info pppd[16473]: Using interface 3g-modem
00:05 daemon.notice pppd[16473]: Connect: 3g-modem <--> /dev/ttyACM0
00:06 daemon.info pppd[16473]: CHAP authentication succeeded: Congratulations!
00:06 daemon.notice pppd[16473]: CHAP authentication succeeded
00:06 daemon.info pppd[16473]: LCP terminated by peer
00:06 daemon.notice pppd[16473]: Modem hangup
00:06 daemon.notice pppd[16473]: Connection terminated.
00:07 daemon.info pppd[16473]: Exit.
00:07 daemon.notice netifd: Interface 'modem' is now down

Nawiązuję połączenie i po niecałej sekundzie rozłącza się, nie rozumiem tej sytuacji


Próbując połączyć się w NCM odkryłem chyba buga:

/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:2.1/tty/ttyACM0
/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:2.3/tty/ttyACM1
/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:2.5/usbmisc/cdc-wdm0
/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:2.8/usbmisc/cdc-wdm1
/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:2.6/net/wwan0


00:13 daemon.notice netifd: Interface 'modem' is setting up now
00:13 daemon.notice netifd: modem (13019): ls: /sys/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:2.8/net: No such file or directory
00:13 daemon.notice netifd: modem (13019): The interface could not be found.
00:13 daemon.notice netifd: modem (13050): Stopping network modem
00:13 kern.err kernel: [ 8946.016308] cdc_wdm 3-1:2.8: wdm_int_callback - 0 bytes
00:13 daemon.notice netifd: modem (13050): sending ->
00:18 daemon.notice netifd: Interface 'modem' is now down

Chyba netifd szuka nie na tym endpoicie, na którym powinien... interfejs sieciowy oraz cdc-wdm mają zawsze inny path

114

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Cezary, gdyby byłoby to tak proste, to nie pisałbym o tym smile

# echo "AT*E2GPSNPD\r\n" > /dev/ttyACM2
# cat /dev/ttyACM2

*EMRDY: 1
^C


# echo "AT"*"E2GPSNPD\r\n" > /dev/ttyACM2
# cat /dev/ttyACM2

*EMRDY: 1
^C

# echo "AT\*E2GPSNPD\r\n" > /dev/ttyACM2
# cat /dev/ttyACM2

*EMRDY: 1
^C

Tak jak pisałem na początku, mam problem z tą jedną jedyną komendą i działa ona tylko wtedy, gdy ręcznie wpiszę ją w picocom. Udało się Nam ogarnąć to w CHAT, ale nie wiadomo czemu proces CHAT musi wisieć w tle, aby potem strumień działał.

To mnie jeszcze zaciekawiło:

# printf 'AT*E2GPSNPD' | picocom /dev/ttyACM2
picocom v3.1

port is        : /dev/ttyACM2
flowcontrol    : none
baudrate is    : 9600
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        :
omap is        :
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

!! STDIN is not a TTY !! Continue anyway...
Type [C-a] [C-h] to see available commands
Terminal ready

** read zero bytes from stdin **

Terminating...
Thanks for using picocom

Moje pytanie powinno więc chyba brzmieć:
co tak niezwykłego robię ręcznie w picocom, czego nie potrafi zrobić skrypt z użyciem CHAT...

115

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Tak, rozumiem. Jeśli w PICOCOM wycisnę CTRL + A oraz CTRL + Q i wyjdę to mam dostęp potem do strumienia. Jak więc zrobić to skryptem? Zauważyłem, że jeśli w CHAT podam ABC i wyłączę timeout to działa to wtedy, ale proces musi wtedy wisieć w tle

116

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Te AAA i BBB to przykład smile

Już myślałem, że działa, ale...

Skrypt:

# chat -t 5 -V -s '' 'AT*E2GPSNPD' 'abc' '' > /dev/ttyACM2 < /dev/ttyACM2

*EMRDY: 1
AT*E2GPSNPD
OK
$GPGSV,1,1,03,02,,,30,06,,,41,17,,,,,,,*7E
$GPGLL,,,,,153232.553,V,N*7D
$GPGGA,,,,,,0,0,,,M,,,,*1B
[...]
Failed




# cat /dev/ttyACM2

*EMRDY: 1
^C

Teraz ręcznie w picocom:

(...)
Type [C-a] [C-h] to see available commands
Terminal ready

*EMRDY: 1
AT*E2GPSNPD
OK
$GPGSV,3,1,11,..............

Terminating...
Skipping tty reset...
Thanks for using picocom


# cat /dev/ttyACM2
$GPGSV,3,1,11,12..........

O co tutaj chodzi?

117

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Genialnie!

chat -t 3 -V -s 'AAA' 'AT*E2GPSNPD' '$GPGSV' 'BBB' > /dev/ttyACM2 < /dev/ttyACM2

Czym jest AAA oraz BBB?
Sory za tak trywialne pytania, ale help z Openwrt dla chata jest słaby

118

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Odpuszczam ten modem, jest mocno zbrandowany. Mam jeszcze ciekawszy z innym problemem. Potrzebuje skryptem wykonać dosyć nietypową komendę: AT*E2GPSNPD, normalnie w picocom działa to tak:

AT*E2GPSNPD
OK
(tutaj jest chwile pauzy, i zaczyna się stream)
$GPGSV,3,1,11,24..................

Kiedy próbuję wykonać tą komendę za pomocą różnych technik skryptu zauważyłem, że...

AT*E2GPSNPD
OK

i koniec komendy... Tak jakby brakuje, aby przytrzymać 2-3 sekundy tą komendę, aby stream się uruchomił.
Coś poradzisz? Próbowałem już echo, printf, chat, picocom i nic.
Nie spotkałem się z czymś takim, że po wysłaniu komendy skryptem ona nie jest wykonywana

119

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Mam picocom, próbuję włączyć GPS. Odpowiada właśnie na ttyUSB1

120

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Na jedynym, na którym mogę gadać to ttyUSB1, i wtedy wygląda to tak:

daemon.notice netifd: Interface 'modem' is setting up now
daemon.notice netifd: modem (5504):
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: modem (5504): .
daemon.notice netifd: Interface 'modem' is now down

121

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Dzięki! Dostęp do konsoli jest, czeka mnie przestudiowanie dokumentacji.

daemon.notice netifd: Interface 'modem' is setting up now
daemon.notice pppd[15754]: pppd 2.4.7 started by root, uid 0
local2.info chat[15794]: abort on (BUSY)
local2.info chat[15794]: abort on (NO CARRIER)
local2.info chat[15794]: abort on (ERROR)
local2.info chat[15794]: report (CONNECT)
local2.info chat[15794]: timeout set to 10 seconds
local2.info chat[15794]: send (AT&F^M)
local2.info chat[15794]: expect (OK)
local2.info chat[15794]: alarm
local2.info chat[15794]: Failed
daemon.err pppd[15754]: Connect script failed
daemon.info pppd[15754]: Exit.
daemon.notice netifd: Interface 'modem' is now down

Na razie próbuje połączyć się w RAS. Co tutaj jest nie tak?

Manufacturer: Sierra Wireless, Incorporated
Model: MC8805

122

(74 odpowiedzi, napisanych Oprogramowanie / Software)

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 53 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  2
P:  Vendor=413c ProdID=81a3 Rev= 0.06
S:  Manufacturer=Sierra Wireless, Incorporated
S:  Product=Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E:  Ad=82(I) Atr=03(Int.) MxPS=  12 Ivl=32ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E:  Ad=84(I) Atr=03(Int.) MxPS=  12 Ivl=32ms
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
C:* #Ifs= 2 Cfg#= 2 Atr=e0 MxPwr=500mA
A:  FirstIf#=12 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
I:* If#=12 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
I:  If#=13 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:* If#=13 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

123

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Jak mam to zrobić? Domyślnie włącza się w MBIM i wystawia tylko cdc-wdm0

124

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Jeden modem zgłasza mi się jako 413c:818e. Dosyć podobny modem jako 413c:81a3, który nie wystawia mi konsoli. Próbuję go przełączyć

125

(74 odpowiedzi, napisanych Oprogramowanie / Software)

Nie, po prostu mam inne urządzenie, które chce przełączyć i nie udaje mi się