Řetězení příkazů rozsekaných po souborech

čuzmek

Řetězení příkazů rozsekaných po souborech
« kdy: 12. 10. 2018, 13:20:12 »
Zajímá mě takováhle věc:
mám například tyto shellové skripty
Kód: [Vybrat]
source-a.sh:
ffmpeg  -f avfoundation  -i 0:0 -framerate 30 -s 1280x720  -f nut     -c:v copy - 

source-b.sh
ffmpeg  -f avfoundation  -i 1 -f nut     -c:v copy - 
player-1.sh
ffplay -
effector-2.sh
ffmpeg -i -vf scale=iw/2:ih/2 -c rawvideo -f nut -
encoder-3.sh
ffmpeg -i - -c h264_qsv -look_ahead 1 -global_quality 30 - bla.mkv


čili jsem si rozsekal pipelinu
Kód: [Vybrat]
ffmpeg  -f avfoundation  -i 0:0 -framerate 30 -s 1280x720  -f nut     -c:v copy - |  ffmpeg -i -vf scale=iw/2:ih/2 -c rawvideo -f nut - | ffplay -  na 3 části, kde stačí psát  ( po zexecutabitelnění chmod u+x *.sh)  (názvy souborů jsou symbolické)
Kód: [Vybrat]
./input.sh | ./effect.sh | ./play.sh
Nicméně, bych chtěl například použít (vsunout) do effect.sh filtr (prostřednictvím argumentu -af adelay=1000\|1000 ), jak to udělat, abych mohl psát
Kód: [Vybrat]
./input.sh | ./effect.sh "adelay=1000|1000" | ./play.sh

Jak editovat sh soubor, aby přijímal argumenty a propluly do effect.sh?
bude to fungovat i když takhle používám řetězení přes | ? Hádám, že bude potřeba puoužít něco jako $*...
« Poslední změna: 12. 10. 2018, 13:45:36 od Petr Krčmář »


k3dAR

  • *****
  • 2 837
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Řetězení příkazů rozsekaných po souborech
« Odpověď #1 kdy: 12. 10. 2018, 15:39:06 »
"řetězení přes |" je irelevantni, protoze ty parametr davas konkretnimu scriptu a ten si ho primo zpracuje

ano, "neco" jako $* nebo $@ ;-)

Yokotashi

Re:Řetězení příkazů rozsekaných po souborech
« Odpověď #2 kdy: 16. 10. 2018, 13:21:08 »
Nejsem si jist, ze jsem uplne pochopil zadani, takze odpovim nekolika skripty, se kterymi si zkus pohrat:
Hromada znaku minus ---- oddeluje kod od popisu.

nahrazeni1.sh
----------------------
sed "s/0/$1/g;s/1/$2/g"
----------------------

cat /proc/cpuinfo | ./nahrazeni1.sh nula jedna | cat

nahrazeni2.sh
----------------------
sed "s/0/$@/g"
----------------------

cat /proc/cpuinfo | ./nahrazeni2.sh prvniparametr druhyparametr tretiparametr | cat

R2D2

Re:Řetězení příkazů rozsekaných po souborech
« Odpověď #3 kdy: 16. 10. 2018, 17:17:42 »
Jen nástřel: named pipes ?
Nema cas to hledat
Zajímá mě takováhle věc:
mám například tyto shellové skripty
Kód: [Vybrat]
source-a.sh:
ffmpeg  -f avfoundation  -i 0:0 -framerate 30 -s 1280x720  -f nut     -c:v copy - 

source-b.sh
ffmpeg  -f avfoundation  -i 1 -f nut     -c:v copy - 
player-1.sh
ffplay -
effector-2.sh
ffmpeg -i -vf scale=iw/2:ih/2 -c rawvideo -f nut -
encoder-3.sh
ffmpeg -i - -c h264_qsv -look_ahead 1 -global_quality 30 - bla.mkv


čili jsem si rozsekal pipelinu
Kód: [Vybrat]
ffmpeg  -f avfoundation  -i 0:0 -framerate 30 -s 1280x720  -f nut     -c:v copy - |  ffmpeg -i -vf scale=iw/2:ih/2 -c rawvideo -f nut - | ffplay -  na 3 části, kde stačí psát  ( po zexecutabitelnění chmod u+x *.sh)  (názvy souborů jsou symbolické)
Kód: [Vybrat]
./input.sh | ./effect.sh | ./play.sh
Nicméně, bych chtěl například použít (vsunout) do effect.sh filtr (prostřednictvím argumentu -af adelay=1000\|1000 ), jak to udělat, abych mohl psát
Kód: [Vybrat]
./input.sh | ./effect.sh "adelay=1000|1000" | ./play.sh

Jak editovat sh soubor, aby přijímal argumenty a propluly do effect.sh?
bude to fungovat i když takhle používám řetězení přes | ? Hádám, že bude potřeba puoužít něco jako $*...

R2D2

Re:Řetězení příkazů rozsekaných po souborech
« Odpověď #4 kdy: 16. 10. 2018, 17:20:02 »
Jen nástřel: named pipes ?
Nemam cas to hledat
Zajímá mě takováhle věc:
mám například tyto shellové skripty
Kód: [Vybrat]
source-a.sh:
ffmpeg  -f avfoundation  -i 0:0 -framerate 30 -s 1280x720  -f nut     -c:v copy - 

source-b.sh
ffmpeg  -f avfoundation  -i 1 -f nut     -c:v copy - 
player-1.sh
ffplay -
effector-2.sh
ffmpeg -i -vf scale=iw/2:ih/2 -c rawvideo -f nut -
encoder-3.sh
ffmpeg -i - -c h264_qsv -look_ahead 1 -global_quality 30 - bla.mkv


čili jsem si rozsekal pipelinu
Kód: [Vybrat]
ffmpeg  -f avfoundation  -i 0:0 -framerate 30 -s 1280x720  -f nut     -c:v copy - |  ffmpeg -i -vf scale=iw/2:ih/2 -c rawvideo -f nut - | ffplay -  na 3 části, kde stačí psát  ( po zexecutabitelnění chmod u+x *.sh)  (názvy souborů jsou symbolické)
Kód: [Vybrat]
./input.sh | ./effect.sh | ./play.sh
Nicméně, bych chtěl například použít (vsunout) do effect.sh filtr (prostřednictvím argumentu -af adelay=1000\|1000 ), jak to udělat, abych mohl psát
Kód: [Vybrat]
./input.sh | ./effect.sh "adelay=1000|1000" | ./play.sh

Jak editovat sh soubor, aby přijímal argumenty a propluly do effect.sh?
bude to fungovat i když takhle používám řetězení přes | ? Hádám, že bude potřeba puoužít něco jako $*...


redrlo

Re:Řetězení příkazů rozsekaných po souborech
« Odpověď #5 kdy: 16. 10. 2018, 18:09:37 »
Jen nástřel: named pipes ?
Nemam cas to hledat
COPYPASTE
to už jsme četli, dokonce třikrát

Kit

Re:Řetězení příkazů rozsekaných po souborech
« Odpověď #6 kdy: 16. 10. 2018, 18:20:50 »
effect.sh:
Kód: [Vybrat]
ffmpeg -i -vf scale=iw/2:ih/2 -c rawvideo "$@" -f nut -
Kód: [Vybrat]
./input.sh | ./effect.sh "adelay=1000|1000" | ./play.sh

R2D2

Re:Řetězení příkazů rozsekaných po souborech
« Odpověď #7 kdy: 16. 10. 2018, 21:08:52 »
2x protoze se to neda editovat. A neser
Jen nástřel: named pipes ?
Nemam cas to hledat
COPYPASTE
to už jsme četli, dokonce třikrát