Gå til innhold

[Løst] jpg -> mpg


Anbefalte innlegg

Hei!

 

Jeg har ca 11 000 jpg filer som jeg skal gjøres om til en video.

Har sett på "convert"-kommandoen, men den lager ukomprimerte bilder i /tmp først, noe som spiser noe helt vanvittig med diskplass.

 

Jeg har søkt litt på nettet, og finner andre løsninger.

Men da må filene være nummererte. Mine filer er datostemplet slik:

 

bilde-020211-120301.jpg (2. feb. kl. 12:03:01)

bilde-020211-120601.jpg (2. feb. kl. 12:06:01)

 

Hvordan gjør jeg dette? Kanskje jeg må rename alle bildene slik: bilde000001.jpg, bilde000002.jpg osv osv? Hvordan gjør jeg det, i tilfelle?

 

Alle filene har riktig "created date" timestamp...

 

Noen glupe hoder med noen gode idéer?

Lenke til kommentar
Videoannonse
Annonse

#!/usr/bin/env bash

for fil in *.jpg; do
DATE=`echo $fil | awk -F- '{print $2}'`
TIME=`echo $fil | awk -F- '{print $3}'`
TIME=${TIME%.jpg}
D3=`echo $DATE | cut -c1-2`
D2=`echo $DATE | cut -c3-4`
D1=`echo $DATE | cut -c5-6`
T1=`echo $TIME | cut -c1-2`
T2=`echo $TIME | cut -c3-4`
T3=`echo $TIME | cut -c5-6`
TIME=`echo $T1:$T2:$T3`
DATE=`echo $D1-$D2-$D3`
DATETIME=`echo "${DATE} ${TIME}"`
TIMESTAMP=`date +"%s" --date "${DATETIME}"`
mv ${fil} bilde-${TIMESTAMP}.jpg
done

Dette bør gjøre om filnavnet til bilde-unixtimestamp.jpg isteden, da får du ihvertfall tall i stigende rekkefølge, selv om de ikke akkurat begynner på 0..

Lenke til kommentar

Jeg fikk denne ca 11 000 ganger ;)

 

date: illegal time format

usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...

[-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]

 

 

Edit: My bad! Jeg kjørte scriptet på en FreeBSD-boks. Tester på en linuxbox asap :)

Endret av reminett
Lenke til kommentar

Det ser ut som det virker :)

Så nå er jeg nærmere målet mitt. Jeg har altså filer som har filnavn i stigende rekkefølge, men de kommer ikke etter hverandre med et ett siffer mellom seg...

 

Hvordan skal jeg gå frem videre?

Lenke til kommentar

Nå er vi veldig nær her!

 

Renamingsprosedyren funker bra.

Det eneste problemet er at jeg må ha dem nummerert slik: bilde-000001,jpg, bilde-000002.jpg osv osv for at ffmpeg skal kunne lage en film av det.

 

 

Noen idéer?

Lenke til kommentar

num=1
for fil in `ls -tr *.jpg`; do
  num=`printf "%0.6d" ${num}`
  mv ${fil} bilde-${num}.jpg
  (( num += 1 ))
done

burde i teorien fikse det.

 

Edit; vil nok være bedre å la num-variablen være urørt.

 

Så noe sånt:

  numwithzeroes=`printf "%0.6d" ${num}`
  mv ${fil} bilde-${numwithzeroes}.jpg

Endret av Sokkalf™
Lenke til kommentar

Dette funker:

 

#!/bin/bash

num=1
for fil in `ls -tr *.jpg`; do
  filnummer=`printf "%0.6d" ${num}`
  mv ${fil} bilde-${filnummer}.jpg
  (( num += 1 ))
done

 

Prøvde du med forslaget fra det redigerte innlegget over?

 

Ah, så denne rett etter at jeg hadde funnet det ut selv :)

Tusen hjertelig takk for hjelpen!

Lenke til kommentar

Eneste som gjenstår nå er å lage videoen, og det gjør jeg slik:

 

 

ffmpeg -f image2 -v 5 -r 25 -i bilde-%06d.jpg -vcodec copy testfilm.avi

 

Problemet er at det virker som den ikke får med seg alt.. Dvs den får med seg de første dagene bare (det er 11000 bilder, tatt hvert 3. min).

 

Edit: Det viser seg at noen få av bildene er korrupte. Derfor stopper ffmpeg konverteringen..

Endret av reminett
Lenke til kommentar

Siden problemet var at noen av bildene var helt tomme (0 bytes), løste jeg det ved å slette de tomme filene før renaming. Scriptet blir da slik:

 

#!/bin/bash
find . -maxdepth 1 -empty -exec rm {} \;
num=1
for fil in `ls -tr *.jpg`; do
  filnummer=`printf "%0.6d" ${num}`
  mv ${fil} bilde-${filnummer}.jpg
  (( num += 1 ))
done

 

Jeg kan da kjøre ffmpeg for å lage en video av bildene slik:

 

ffmpeg -v 5 -r 25 -i bilde-%06d.jpg -vcodec copy testfilm.avi

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...