Прекращение цикла, Ordu, 02-Авг-16, 15:17 [смотреть все]Ниже однострочник, чья идея в том, чтобы взять два случайных файла из текущей директории, и скопировать их в другое место, параллельно перекодировав им звук. Вообще он мне нужен, чтобы закинуть на планшет и посмотреть в ванной пару случайных серий любимого сериала. При этом планшет не дружит с той звуковой дорожкой, которая есть, поэтому я перекодирую в mp3. Ну и естественно хотелось бы перекодировать и копировать параллельно, для экономии времени. Здесь в команде в качестве цели указана ./tmp/, но это просто я устранял возможные источники влияния.Собственно, проблема в том, что он только один файл "копирует" -- первый. ls *.mkv | shuf | head -n 2 | sort | (i=1; while read line; do ffmpeg -i "$line" -c:v copy -c:a mp3 tmp/$((i++)).mkv; done ) Если заменить ffmpeg на echo ffmpeg то он две строчки. Если всю команду в теле цикла на cp "$line" tmp/$((i++)).mkv, то тоже всё срабатывает как я ожидаю -- два случайных файла копируются с переименованием в 0.mkv, 1.mkv. Но если ffmpeg, то только один. Чтоза?
|
- Прекращение цикла, _, 18:41 , 02-Авг-16 (1)
> Но если ffmpeg, то только один. Чтоза?ffmpeg вываливается с ошибкой? Ты же один фиг не контролируешь ....
- Прекращение цикла, omnomnim, 19:17 , 02-Авг-16 (2) –1
>> Но если ffmpeg, то только один. Чтоза? > ffmpeg вываливается с ошибкой? Ты же один фиг не контролируешь ....угу, тоже самое подумал, тестить за ОПа лень, нет такого _энкодера_ mp3 -c:a libmp3lame ffmpeg -encoders
- Прекращение цикла, Ordu, 19:37 , 02-Авг-16 (5)
>>> Но если ffmpeg, то только один. Чтоза? >> ffmpeg вываливается с ошибкой? Ты же один фиг не контролируешь .... > угу, тоже самое подумал, тестить за ОПа лень, > нет такого _энкодера_ mp3 > -c:a libmp3lame > ffmpeg -encoders У тебя ffmpeg неправильный. У меня есть такой энкодер. И я прямо сказал, что один вызов ffmpeg отрабатывает на ура. Что тебе ещё надо?
- Прекращение цикла, asavah, 20:48 , 02-Авг-16 (6)
>>>> Но если ffmpeg, то только один. Чтоза? >>> ffmpeg вываливается с ошибкой? Ты же один фиг не контролируешь .... >> угу, тоже самое подумал, тестить за ОПа лень, >> нет такого _энкодера_ mp3 >> -c:a libmp3lame >> ffmpeg -encoders > У тебя ffmpeg неправильный. У меня есть такой энкодер. И я прямо > сказал, что один вызов ffmpeg отрабатывает на ура. Что тебе ещё > надо?ему ничего не надо, это тебе дебилу надо, у меня ffmpeg из гита недельной давности и тоже нет mp3, есть libmp3lame, а у тебя старьё, может ваще у тебя не ffmpeg а гнилой avconv
- Прекращение цикла, Ordu, 19:33 , 02-Авг-16 (3)
>> Но если ffmpeg, то только один. Чтоза? > ffmpeg вываливается с ошибкой? Ты же один фиг не контролируешь ....$ ls *.mkv | shuf | head -n 2 | sort | (i=1; while read line; do ffmpeg -i "$line" -c:v copy -c:a mp3 tmp/$((i++)).mkv>/dev/null 2>/dev/null; echo exit status: $?; done ) exit status: 0 Но... Я добавил вывод $line _в_дополнение_ к вызову ffmpeg, и у меня возник вопрос, а ffmpeg может читать из stdin? Второму вызову ffmpeg достаётся имя файла не полностью. И мне кажется, что чем раньше я тыкну в C-c, чтобы оборвать первый вызов ffmpeg, тем меньше будет обгрызано имя файла для второго вызова. Если же я дожидаюсь окончания перекодирования, то exit status: 0, и цикл заканчивается, как будто в stdin у сабшелла вообще пусто.
Да, если mencoder'ом делать то же самое, оно работает. Всё дело в ffmpeg. Видимо он зачем-то читает из stdin, падла.
- Прекращение цикла, Ordu, 19:34 , 02-Авг-16 (4) +1
Да! Добавление к вызову ffmpeg перенаправления </dev/zero решает все проблемы. Вот ё. Хрен догадаешься.
|