Personal opkg Package Repo + youtube-dl + ffmpeg
-
It is really simple!
First things first.
Omega2 Build SystemAfter compile process packages will be create in the source folder.
- Full path -> source/bin/packages/mipsel_24kc
Just copy that folder to public domain and edit the /etc/opkg/distfeeds.conf
file proper way.- I build for myself it includes youtube-dl, ffmpeg, some video tools etc.
wget -qO- https://yasinkarabulak.com/omega2/packages/distfeeds.conf >> /etc/opkg/distfeeds.conf OR nano /etc/opkg/distfeeds.conf # below lines goes in to /etc/opkg/distfeeds.conf # ------------------------------------------------ src/gz ysnO2_base https://yasinkarabulak.com/omega2/packages/base src/gz ysnO2_luci https://yasinkarabulak.com/omega2/packages/luci src/gz ysnO2_onion https://yasinkarabulak.com/omega2/packages/onion src/gz ysnO2_packages https://yasinkarabulak.com/omega2/packages/packages src/gz ysnO2_routing https://yasinkarabulak.com/omega2/packages/routing src/gz ysnO2_telephony https://yasinkarabulak.com/omega2/packages/telephony src/gz ysnO2_main https://yasinkarabulak.com/omega2/packages/main ctrl + o; ctrl + x opkg update
OR
- you can copy the files in to flashdisk and define the addresses in to distfeed.conf
src/gz local_base file:///tmp/mounts/USB-A1/packages/mipsel_24kc/base src/gz local_luci file:///tmp/mounts/USB-A1/packages/mipsel_24kc/luci src/gz local_onion file:///tmp/mounts/USB-A1/packages/mipsel_24kc/onion src/gz local_packages file:///tmp/mounts/USB-A1/packages/mipsel_24kc/packages src/gz local_routing file:///tmp/mounts/USB-A1/packages/mipsel_24kc/routing src/gz local_telephony file:///tmp/mounts/USB-A1/packages/mipsel_24kc/telephony src/gz local_main file:///tmp/mounts/USB-A1/packages/mipsel_24kc/main
youtube-dl
install the youtube-dl
opkg install youtube-dl
download some youtube video info
youtube-dl -F https://www.youtube.com/watch?v=gGdhzmfIYtI
download the neccecary file in to omega2
youtube-dl -f140 https://www.youtube.com/watch?v=gGdhzmfIYtI
root@Omega-C617:~# youtube-dl -f140 https://www.youtube.com/watch?v=gGdhzmfIYtI [youtube] gGdhzmfIYtI: Downloading webpage [youtube] gGdhzmfIYtI: Downloading video info webpage [youtube] gGdhzmfIYtI: Extracting video information WARNING: unable to extract uploader nickname [download] Destination: Onion Omega2 Kickstarter Video-gGdhzmfIYtI.m4a [download] 100% of 2.46MiB in 00:41 WARNING: gGdhzmfIYtI: writing DASH m4a. Only some players support this container. Install ffmpeg or avconv to fix this automatically. root@Omega-C617:~# ls Onion* Onion Omega2 Kickstarter Video-gGdhzmfIYtI.m4a
It's really slow but fun thing to do have a nice day
before the installation
ffmpeg
root@Omega-C617:~# opkg install ffmpeg Installing ffmpeg (3.2.2-1) to root... Downloading https://yasinkarabulak.com/omega2/packages/packages/ffmpeg_3.2.2-1_mipsel_24kc.ipk Installing libopus (1.1.4-1) to root... Downloading https://yasinkarabulak.com/omega2/packages/packages/libopus_1.1.4-1_mipsel_24kc.ipk Installing libffmpeg-full (3.2.2-1) to root... Downloading https://yasinkarabulak.com/omega2/packages/packages/libffmpeg-full_3.2.2-1_mipsel_24kc.ipk Configuring libopus. Configuring libffmpeg-full. Configuring ffmpeg. root@Omega-C617:~#
after the installation
Let's convert the downloaded m4a to mp3 file
root@Omega-C617:~# ffmpeg -i Onion\ Omega2\ Kickstarter\ Video-gGdhzmfIYtI.m4a Onion\ Omega2\ Kickstarter\ Video-gGdhzmfIYtI.mp3
in the ext4 file system Omega2p has about 7kB second convert rate
root@Omega-C617:~# ffmpeg -i Onion\ Omega2\ Kickstarter\ Video-gGdhzmfIYtI.m4a Onion\ Omega2\ Kickstarter\ Video-gGdhzmfIYtI.mp3 ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.0 (LEDE GCC 5.4.0 r3503-d62d8430d1) configuration: --enable-cross-compile --cross-prefix=mipsel-openwrt-linux-musl- --arch=mipsel --target-os=linux --prefix=/usr --pkg-config=pkg-config --enable-shared --enable-static --enable-small --enable-pthreads --enable-zlib --disable-doc --disable-debug --enable-gpl --enable-version3 --disable-dxva2 --disable-lzma --disable-vaapi --disable-vda --disable-vdpau --disable-outdevs --disable-altivec --disable-vsx --disable-power8 --disable-amd3dnow --disable-amd3dnowext --disable-mmx --disable-mmxext --disable-sse --disable-sse2 --disable-sse3 --disable-ssse3 --disable-sse4 --disable-sse42 --disable-avx --disable-xop --disable-fma3 --disable-fma4 --disable-avx2 --disable-aesni --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-inline-asm --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-msa --disable-mmi --disable-fast-unaligned --disable-runtime-cpudetect --disable-yasm --enable-libopus --enable-decoder=libopus --enable-libmp3lame libavutil 55. 34.100 / 55. 34.100 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.100 / 57. 56.100 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Onion Omega2 Kickstarter Video-gGdhzmfIYtI.m4a': Metadata: major_brand : dash minor_version : 0 compatible_brands: iso6mp41 creation_time : 2016-09-23T14:06:28.000000Z Duration: 00:02:42.28, start: 0.000000, bitrate: 127 kb/s Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 7 kb/s (default) Metadata: creation_time : 2016-09-23T14:06:28.000000Z handler_name : SoundHandler Output #0, mp3, to 'Onion Omega2 Kickstarter Video-gGdhzmfIYtI.mp3': Metadata: major_brand : dash minor_version : 0 compatible_brands: iso6mp41 TSSE : Lavf57.56.100 Stream #0:0(und): Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default) Metadata: creation_time : 2016-09-23T14:06:28.000000Z handler_name : SoundHandler encoder : Lavc57.64.101 libmp3lame Stream mapping: Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame)) Press [q] to stop, [?] for help size= 2537kB time=00:02:42.29 bitrate= 128.0kbits/s speed=0.157x video:0kB audio:2536kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.013322%
in the fat file system Omega2p seems %10 faster for audio encoding
... Stream mapping: Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame)) Press [q] to stop, [?] for help size= 691kB time=00:00:44.14 bitrate= 128.1kbits/s speed=0.169x
FFMPEG video to bmp sequence on omega2
- In your 'ffmpeg installed computer' convert some video to your display size. (If you try this part in the omega it will possibly kill you, "time issue - life time" )
ffmpeg -i some-video-file.mp4 -vf scale=320:240 scaled.avi
- copy scaled.avi file to ffmpeg installed omega2 using flashdisk, scp etc.
- then we are ready!
connect the console of omega2 and type the command (edit the directory for your side)
ffmpeg -i scaled.avi -pix_fmt rgb565 -r 1/1 seqtest/file%001d.bmp
in this code 1/1 means 1 frame per second, 25/1 25 frame per second, and so on. Omega2p can handle 12fpsroot@Omega-C617:/tmp/run/mountd/sda1# ffmpeg -i scaled.avi -pix_fmt rgb565 -r 1/1 seqtest/file%1d.bmp ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.0 (LEDE GCC 5.4.0 r3503-d62d8430d1) configuration: --enable-cross-compile --cross-prefix=mipsel-openwrt-linux-musl- --arch=mipsel --target-os=linux --prefix=/usr --pkg-config=pkg-config --enable-shared --enable-static --enable-small --enable-pthreads --enable-zlib --disable-doc --disable-debug --enable-gpl --enable-version3 --disable-dxva2 --disable-lzma --disable-vaapi --disable-vda --disable-vdpau --disable-outdevs --disable-altivec --disable-vsx --disable-power8 --disable-amd3dnow --disable-amd3dnowext --disable-mmx --disable-mmxext --disable-sse --disable-sse2 --disable-sse3 --disable-ssse3 --disable-sse4 --disable-sse42 --disable-avx --disable-xop --disable-fma3 --disable-fma4 --disable-avx2 --disable-aesni --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-inline-asm --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-msa --disable-mmi --disable-fast-unaligned --disable-runtime-cpudetect --disable-yasm --enable-libopus --enable-decoder=libopus --enable-libmp3lame libavutil 55. 34.100 / 55. 34.100 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.100 / 57. 56.100 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Input #0, avi, from 'scaled.avi': Metadata: encoder : Lavf57.56.101 Duration: 00:04:14.67, start: 0.000000, bitrate: 345 kb/s Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 204 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 30k tbc Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, s16p, 128 kb/s [swscaler @ 0x7de250] No accelerated colorspace conversion found from yuv420p to rgb565le. Output #0, image2, to 'seqtest/file%1d.bmp': Metadata: encoder : Lavf57.56.100 Stream #0:0: Video: bmp, rgb565le, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1 fps, 1 tbn, 1 tbc Metadata: encoder : Lavc57.64.101 bmp Stream mapping: Stream #0:0 -> #0:0 (mpeg4 (native) -> bmp (native)) Press [q] to stop, [?] for help frame= 5 fps=2.5 q=-0.0 size=N/A time=00:00:05.00 bitrate=N/A dup=0 drop=106 speed=2.47x frame= 6 fps=2.4 q=-0.0 size=N/A time=00:00:06.00 bitrate=N/A dup=0 drop=135 speed=2.37x frame= 7 fps=2.3 q=-0.0 size=N/A time=00:00:07.00 bitrate=N/A dup=0 drop=163 speed= 2.3x frame= 8 fps=2.3 q=-0.0 size=N/A time=00:00:08.00 bitrate=N/A dup=0 drop=191 speed=2.26x ... frame= 252 fps=1.9 q=-0.0 size=N/A time=00:04:12.00 bitrate=N/A dup=0 drop=7264 speed=1.87x frame= 253 fps=1.9 q=-0.0 size=N/A time=00:04:13.00 bitrate=N/A dup=0 drop=7292 speed=1.87x frame= 254 fps=1.9 q=-0.0 size=N/A time=00:04:14.00 bitrate=N/A dup=0 drop=7321 speed=1.87x frame= 255 fps=1.9 q=-0.0 size=N/A time=00:04:15.00 bitrate=N/A dup=0 drop=7349 speed=1.87x frame= 256 fps=1.9 q=-0.0 Lsize=N/A time=00:04:16.00 bitrate=N/A dup=0 drop=7371 speed=1.87x video:38416kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
If you have a frame buffer device, something like SPI TFTLCD display, this script might be helpfull for testing
root@Omega-C617:/tmp/run/mountd/sda1/seqtest# for i in `ls -v *.bmp`; do cat $i > /dev/fb0; done