Você está usando um caminho relativo, em que seu script está procurando os arquivos .mp4 no diretório atual, isto é, o diretório de onde o script está sendo executado e descobrindo que nenhum arquivo .mp4 existe. para um arquivo *.mp4 literal (assumindo que nullglob / failglob não está definido, que é o padrão), e esse arquivo não existe também, daí a mensagem de erro *.mp4: No Such File or Directory .
Você deve usar o caminho absoluto:
for i in /directory/*.mp4; do ...; done
Substitua /directory/ pelo caminho real do diretório; se você quiser, pode pegar o nome do diretório como primeiro argumento também:
for i in ""/*.mp4; do ...; done
Você pode usar o caminho absoluto ou relativo aqui, mas novamente o caminho absoluto é sempre a opção mais segura.
Agora, chame o script executável da maneira usual:
/path/to/script.sh /directory
Do diretório de script:
./script.sh /directory