~bronikowski/stopzycie

f33bef4e4ca9e3f2b83b953cbb9ff7c11bde884a — Emil Oppeln-Bronikowski 3 years ago ac15c21
Comments, ignore, etc
3 files changed, 22 insertions(+), 5 deletions(-)

M .gitignore
M extract_frames.sh
M grab.py
M .gitignore => .gitignore +1 -0
@@ 1,1 1,2 @@
audio.mp3
out.mp4

M extract_frames.sh => extract_frames.sh +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)