M .gitignore => .gitignore +1 -0
@@ 1,1 1,2 @@
audio.mp3
+out.mp4
M => +6 -2
@@ 3,6 3,10 @@
for file in output/*.mpg ; do
new_file=`echo $file | cut -d. -f1`.png
echo $new_file
ffmpeg -i $file -vf "select=eq(n\,0)" -vframes 1 $new_file
if [ -f $new_file ] ; then
echo "Skip"
else
ffmpeg -i $file -vf "select=eq(n\,0)" -vframes 1 $new_file
fi
done
ffmpeg -pattern_type glob -i 'output/*.png' -an -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3 out.mp4
ffmpeg -pattern_type glob -i 'output/*.png' -i audio.mp3 -map 0:v -map 1:a -acodec aac -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3 out.mp4
M grab.py => grab.py +15 -3
@@ 1,23 1,35 @@
-import requests
-from datetime import datetime
-from time import sleep
+import requests # klient HTTP
+from time import sleep # chcemy pauzować
+# wpisany na twardo adres z którego będę pobierał informacje
URL = 'https://cdn-3-go.toya.net.pl:8081/kamery/lodz_piotrkowskaschillera_0{}.ts'
+
+# formad do zapisywania, index poprzedzony dopełnieniem 12 zer
OUTPUT = 'output/{:012}_frame.mpg'
+
+""" Żeby się było łatwiej kręcić, wartości [42…91] w liście """
frames = range(42, 92)
idx = 0
while True:
+ # Cała lista otwarzania ma (92-42)*2 sekund
rotation_time = len(frames) * 2
+
+ #Kiedy zaczynamy proces
start_time = datetime.now()
+
for frame in frames:
print("Grabing {}".format(frame))
+ # Klasyczny HTTP GET / i zapisanie pliku docelowego
response = requests.get(URL.format(frame))
if response.status_code == 200:
with open(OUTPUT.format(idx), 'wb') as f:
f.write(response.content)
idx = idx + 1
+ # Jak przelecieliśmy wszystkie ramki to czekamy resztę sekund, aż
+ # się wszystkie podmienią
after_downloading = datetime.now()
remaining_seconds = rotation_time - int((after_downloading - start_time).total_seconds())
print("Clips fetched, sleeping for {}".format(remaining_seconds))
+ # …i do łóżka
sleep(remaining_seconds)