[solved] Bash – podział filmu na części uwzględniający ich wielość i czas rozpoczęcia

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

[solved] Bash – podział filmu na części uwzględniający ich wielość i czas rozpoczęcia

Post autor: Mały 1 »

Witam!

Chciałbym dodać kolejną funkcjonalność do mojego skryptu, który wygląda tak:

Kod: Zaznacz cały

#!/bin/bash

find . -name "*.wmv" | while read -r fileName
do
   dir="${fileName%/*}"      # katalog
   name="${fileName##*/}"    # nazwa z rozszerzeniem
   name="${name%.*}"         # nazwa bez rozszerzenia
   #ext="${fileName##*.}"     # rozszerzenie

   mencoder "$fileName" -ofps 30 -ovc xvid -xvidencopts me_quality=6:bitrate=5000:vhq=2:max_bframes=2:bvhq=1:nopacked:noqpel:nogmc:trellis:quant_type=h263:nointerlacing:chroma_me:chroma_opt:hq_ac:nolumi_mask:closed_gop:autoaspect -oac mp3lame -lameopts cbr:br=256:mode=0 -o "${dir}/${name}.avi" 

if [ -e ./$name.avi ] ; then
rm -f $name.wmv
fi

done

mencoder -ovc copy -oac copy *.avi -o polaczony.avi
Wynikiem ostatniego działania powyższego skryptu jest scalenie wszystkich filmów *.avi w jeden o nazwie polaczony.avi


Teraz chciałbym dodać do skryptu następne polecenia, które podzielą film na części, po 700 MB.


Wykorzystam do tego dwa poniższe polecenia:

Kod: Zaznacz cały

mencoder -ovc copy -oac copy -endpos 700mb -o film-CD1.avi polaczony.avi

mencoder -ovc copy -oac copy -ss 0:48:00 -endpos 700mb -o film-CD2.avi duzy_film.avi

-ss czas, w którym ma zostać ucięty poprzedni film lub miejsce, od którego mencoder ma stworzyć druga część filmu
Pierwsze polecenie utnie film po 700mb, ale w drugim poleceniu muszę podać czas rozpoczęcia się II części filmu np. -ss 0:48:00.

Chciałbym, aby czas rozpoczęcia II części filmu był automatycznie pobierany przez skrypt. W necie znalazłem polecenie, które potrafi sprawdzić czas filmu.

Kod: Zaznacz cały

mplayer -identify film-CD1.wmv -frames 0 -vo null -ao null 2>/dev/null | grep ID_LENGTH
Przykładowy wynik powyższego polecenia wygląda tak:

Kod: Zaznacz cały

mplayer -identify film-CD1.wmv -frames 0 -vo null -ao null 2>/dev/null | grep ID_LENGTH 
ID_LENGTH=117.43 
Czynności do wykonania przez skrypt:

1. Pobranie nazwy dzielonego filmu z folderu. Automatyczne wstawienie nazwy pierwszej części filmu 'film-CD1.avi' do poniższego polecenia:

Kod: Zaznacz cały

mencoder -ovc copy -oac copy -endpos 700mb -o film-CD1.avi polaczony.avi
2. Sprawdzenie czasu trwania pierwszej części filmu 'film-CD1.avi'

3. Wstawienie pobranego czasu z pierwszej części filmu do polecenia drugiego oraz automatycznie dodanie nazwy 'film-CD2.avi' do nowo tworzonej części filmu.

Kod: Zaznacz cały

mencoder -ovc copy -oac copy -ss 0:48:00 -endpos 700mb -o film-CD2.avi polaczony.avi
4. Sprawdzenie czasu trwania pierwszej 'film-CD1.avi' i drugiej 'film-CD2.avi' części filmu, a następnie wstawienie zsumowanego czasu z tych części do powyższego polecenia. Automatyczne wstawienie nazwy trzeciej części filmu 'film-CD3.avi'.

W dalszej kolejności powyższe czynności będą automatyczne powtarzane aż do podzielenia całego filmu na części.

Na koniec dodam, że nie jestem programistą, aby samodzielnie napisać taki skrypt dlatego proszę o pomoc.

EDIT:

Rozwiązanie znajduje się w tym wątku: viewtopic.php?f=170&t=154203&start=20
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 16 gości