Vēlams visus uzdevumus veikt linux vidē (Windows pilnīgi savādāk strādās). Var caur SSH testēt ar import pdb
pdb.set_trace()
debugging
FFMPEG apstrādi var apskatīties arī no subkick/explorer projekta (tur tikai audio) apstrādā https://github.com/asya-ai/asya-api-explorer (nosūtīju invite)
TODO:
Nepieciešams ParkExpert APP pamainīt, lai pievienojot zonas var norādīt RTSP stream un uzreiz pārbauda vai stream strādā un novelk parauga bildi priekš zonu editora. Vajadzētu, ka bildes atjaunošanās notiek fonā caur AJAX nevis lietotājs gaida uz POST request un lapa stāv frozen. Ja RTSP nav labs tad to arī vajag paziņot
Glabājam datubāzē RTSP settings katrai zonai. Zonām, kurām nav RTSP barojamies no esošā API
Zonu formā ieviešam arī, ka var norādīt Callback URL, lai tev vieglāk testēt un Denisam vieglāk savā pusē implementēt. Esošajām Zonām bez RTSP var paņemt no API call dotās.
Nepieciešams worker, kurš reizi sekundē (konfigurējams parametrs) no dotajiem RTSP streams paņem bildi un procēsē caur mūsu modeļiem. Izgrieztās bildes īslaicīgi glabāt, bet tā, lai tu vari arī debuggot un saprast kas notiek (mums tās nav tik vērtīgas, jo tur nenāk marķējumi). Bildes glabājam ar UUID filename, jo būs daudz kameras un klientu organizācijas nākotnē.
Varbūt var izmantot jau esošo tabulu, kur ienāk uzdevumi, tikai beigās nedrīkst notriggeroties esošais callback, šajā gadījumā jauna loģika.
Ja fiksējam 2 kadrus 10 sek intervālā, kur vienāds mašīnas virziens un numurs, tad sūtam uz Denisa endpoint ar Zonas nosaukumu numura zīmi un virzienu (ja līdz šim nebija tas zonas nosaukums vajadzētu ieviest). Ja redzi, ka vajag vairāk kadrus, lai drošāka atbilde, pamaini pēc saviem ieskatiem.
Neļaut ievadīt jaunas zonas ar esošu zonas nosaukumu (daudziem klientiem varēs būt vienādi zonas nosaukumi)
Domājot par struktūru jāņem vērā šis! Nakts gadījumā būs nepieciešams arī fiksēt 2 secīgas bildes ar kustības noteikanu, kur numura zīme palielinās vai samazinās (lai noteiktu priekšu vai aizmuguri, pieņemot, ka nebrauc atmuguriski).
Play RTSP video
x1ffplay rtsp://localhost:80/live/a
2ffplay rtsp://10.0.1.15:8900/live
FFMPEG stream to pngs/jpgs
xxxxxxxxxx
11ffmpeg -i video_stream_url -s 640x360 -vf fps=20 imagePath/output_%08d.png
Cut video till time
xxxxxxxxxx
11ffmpeg -i /Users/evalds/Downloads/video_8.mp4 -ss 00:00:00 -to 00:07:42 -c:v copy -c:a copy /Users/evalds/Downloads/video_8.mp4
Subtitles bottom white
xxxxxxxxxx
11ffmpeg -i video2_enh.mp4 -vf "subtitles=video2_enh_real.srt:force_style='Fontsize=24,PrimaryColour=&H00ffffff&'" -c:a copy video2_enh_subs.mp4
Subtitles top red
xxxxxxxxxx
11ffmpeg -i video_5_enh.mp4 -vf "subtitles=video_5_enh.wav.srt:force_style='Fontsize=24,PrimaryColour=&H000000ff&,Alignment=6'" -c:a copy video_5_enh_sub.mp4
Subtitles top red (gilroy)
xxxxxxxxxx
11ffmpeg -i video_7_enh.mp4 -vf "subtitles=video_7.mp4.srt:force_style='FontName=Gilroy,Fontsize=24,PrimaryColour=&H000000ff&,Alignment=6,fontfile=/Users/evalds/Desktop/Gilroy.otf '" -c:a copy video_7_enh_subs.mp4
WebVTT subtitles
x1npm install -g webvtt2ass
2
3webvtt2ass video_8.vtt --output video_8.ass
4
5BITRATE=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 video_8_enh.mp4) && \
6ffmpeg -i video_8_enh.mp4 -vcodec hevc_videotoolbox -b:v $BITRATE -tag:v hvc1 -c:a copy -vf ass=video_8.ass video_8_enh_subs.mp4
Replace audio in video
xxxxxxxxxx
11ffmpeg -i video_8.mp4 -i video_8_enh.wav -c:v copy -map 0:v:0 -map 1:a:0 video_8_enh.mp4
Extract audio from video
xxxxxxxxxx
11ffmpeg -i video_8.mp4 -acodec pcm_s16le -ar 44100 -ac 2 video_8.wav
Concat
xxxxxxxxxx
11ffmpeg -f concat -safe 0 -i list.txt -acodec copy output.mp3
Convert to mp3
xxxxxxxxxx
11ffmpeg -i input.wav -vn -ar 44100 -ac 2 -b:a 192k output.mp3
Conversion WAV
xxxxxxxxxx
51ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
2
3-pcm_s16le is codec 16 bit conversion
4-ar is sampling rate (16000samples/sec)
5-ac no of audio channel
Seek to position (discard before)
xxxxxxxxxx
71-ss 00:00:15
2
3ffmpeg -ss start_second -to end_second -i input.mp3 output.mp3
4
5ffmpeg -i pp.mp4 -ss 00:10:15 -to 00:20:15 -acodec pcm_s16le -ar 44100 -ac 2 pp.wav
6
7ffmpeg -i lr.mp4 -ss 00:00:6 -to 00:00:35 -acodec pcm_s16le -ar 16000 -ac 2 lr.wav
Get info about file format
xxxxxxxxxx
11ffprobe /file.mp3
Concat audio
xxxxxxxxxx
11ffmpeg -f concat -safe 0 -i list.txt -acodec copy result.wav
list.txt
xxxxxxxxxx
31file '/path.wav'
2file '/path.wav'
3file '/path.wav'
Video conversion for Car XTRONS video player
xxxxxxxxxx
11ffmpeg -i INPUT -c:v libx264 -c:a aac -r 25 -s 716x576 OUTPUT
xxxxxxxxxx
121
2
3
4INPUT_DIR="/Users/evalds/Downloads/duck"
5OUTPUT_DIR="/Users/evalds/Downloads/converted"
6for input_file in "$INPUT_DIR"/*.mp4
7do
8 filename=$(basename -- "$input_file")
9 filename="${filename%.*}"
10 output_file="$OUTPUT_DIR/${filename}.mp4"
11 ffmpeg -i "$input_file" -c:v libx264 -c:a aac -r 25 "$output_file"
12done