Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 42
1

Воспроизведение аудио и видео файлов с помощью omxplayer

03.08.2014, 00:08. Показов 5711. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, помогите.
Уже долго мучаюсь ничего не получается.

Такая проблема

Есть скрипт. Он воспроизводит аудио и видеофайлы с помощью omxplayer.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  #Создать временную папку FIFO
while (( ++n <= $i ))
do
  mkfifo /tmp/cmd"$n"
done
n=0
 
#Воспроизведение и загрузка файлов
while (( ++n <= $i ))
 do
  #Воспроизведение фидео:
  if [ "${name[n]}" == "video" ]
   then
    omxplayer -b ${pfad[n]} < /tmp/cmd"$n" &
    echo -n p > /tmp/cmd"$n" & 
    sleep $delay
    echo -n p > /tmp/cmd"$n" &
    $timestamp >> $output 
    sleep ${dauer[n]}
    echo -n q > /tmp/cmd"$n" &
    $timestamp >> $output 
 
  #Воспроизведение аудио:
  else 
   if [ "${name[n]}" == "audio" ]
    then
     omxplayer -b ${pfad[n]}
     echo -n p > /tmp/cmd"$n" & 
     sleep $delay
     echo -n p > /tmp/cmd"$n" &
     $timestamp >> $output &
     sleep ${dauer[n]}
     echo -n q > /tmp/cmd"$n" &
     $timestamp >> $output 
  
  #Воспроизведение картинок:   
  else
   if [ "${name[n]}" == "picture" ]   
    then
     $image ${filepath[n]} < /tmp/cmd"$n" &
     echo . > /tmp/cmd"$n" & 
     sleep $delay
     echo -n s > /tmp/cmd"$n" &
     $timestamp >> $output &
     sleep ${lenght[n]}
     echo -n q > /tmp/cmd"$n" &
     $timestamp >> $output
 
   fi
  fi
 fi
done
Файлы для воспроизведения хранятся в папке. Есть также документ, где записаны названия файлов для воспроизведения в виде Playlist, чтобы omxplayer знал, что, в какой последовательности и как долго нужно воспроизводить.
Cам по себе скрипт работает.

Ну теперь собстенно вот в чем проблема. Выполнение этого скрипта хочу начать по нажатию кнопки. При повторном нажати воспроизведение дожно закончиться. Вот это и не удается.

Для этого пользуюсь вот этим скриптом.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    state=0
while true; do 
 #считываем состояние пина, к которому подключена кнопка
**pin=$(cat /sys/class/gpio/gpio4/value)
  # если на пине о, значит кнопка нажата, меняется статус и воспроизводим скрипт 
**if [ $pin -eq 0 -a $state -eq 0]; then
****state=1
****start play&
****pid=$$
**fi 
  # кнопка отпущена, но воспроизведение продолжается, переходим в новый статус
**if [ $pin -eq 1 -a $state -eq 1]; then
****state=2
**fi 
 # кнопка опять нажата, переходим в следующий статус, заканчиваем скрипт
**if [ $pin -eq 0 -a $state -eq 2]; then
****state=3
****kill $pid
**fi 
  # возвращаемся к начальному статусу. Кнопка не нажата, скрипт не воспроизводится.
**if [ $pin -eq 1 -a $state -eq 3]; then
****state=0
**fi 
**sleep 1 
done
Но команда
Bash
1
  kill $pid
не срабатывает.
Bash
1
 pkill omxplayer
тоже не срабатывает, да любая команда с
Bash
1
 kill
не срабатывает.

Тоесть файлы продолжают воспроизводится, иногда несколько файлов сразу.

Помогите, пожалуйста. Где ошибка?

Добавлено через 4 часа 38 минут
Ну что ни у кого нет идей?)

Добавлено через 4 часа 18 минут
Программисты, помогите, пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2014, 00:08
Ответы с готовыми решениями:

Медиа плеер. Воспроизведение любых форматы видео и аудио файлов
Мне задали курсовой проект - медиа плеер, я накопал на просторах интернета библиотеку с помощью...

воспроизведение аудио и видео на ubuntu linux
( помогите plz... никак не могу воспроизвести звук и видео!! Что надо делать????? Заранее...

Воспроизведение аудио файлов .ogg
Прочитал кучу инфы про это, но так и не понял как заставить мой проигрыватель воспроизводить ogg....

Одновременное воспроизведение нескольких аудио файлов
Здравствуйте. Подскажите пожалуйста, как мне добиться того, чтобы звуковые дорожки...

11
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 42
06.08.2014, 19:06  [ТС] 2
Решил проблему.
Только если я нажимаю на кнопку в то время, когда скрипт показывает рисунок, этот рисунок зависает на экране, что можно сделать?
0
Заблокирован
11.08.2014, 01:33 3
Освой наконец &. Да и криво это - через баш считывать кнопки, там на C++ накатать пара минут, наверняка ведь никсовый minipc в духе raspberry/pcduino.
0
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 42
11.08.2014, 10:59  [ТС] 4
а если в строчке 52 пишу
Bash
1
2
 if [ n==$i] 
then n=0
то почему цикл не становится бесконечным?
0
Заблокирован
11.08.2014, 11:19 5
А почему вдруг должен?
0
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 42
11.08.2014, 12:56  [ТС] 6
Ну тот скрипт из первого поста работает только 1 раз, тоесть while петля пробегается только 1 раз.
Хочу сделать ее бесконечной.

Bash
1
2
  if [ n==$i] 
then n=0
Это разве неправильно?

И так пробовал
Bash
1
2
3
4
5
   
if [ $n -ge $i ]; then
echo "$n"
 n=0
fi
0
Заблокирован
11.08.2014, 13:45 7
while true... Тема первого занятия циклами на баше и не только.
0
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 42
11.08.2014, 14:56  [ТС] 8
спасибо за гениальный совет)

теперь шарманка Pi играет бесконечно

Только такой вопрос после того как один цикл прокрутится, я запланировал удаление временных файлов Fifo.
Это видно в скрипте.
Так и оставить отдельным циклом while или добавить в основной, ну в тот цикл while, в котором файлы воспроизводятся

Добавлено через 16 минут
Bash
1
2
3
4
5
  n=0
while (( ++n <= $i ))
 do
 sudo  rm /tmp/cmd"$n"
done
Это для удаления Fifo
0
Заблокирован
11.08.2014, 15:33 9
Научиться писать правильно таки... Поллинг шеллом - верх маразма.
0
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 42
11.08.2014, 19:49  [ТС] 10
А как лучше то?

Добавлено через 2 часа 48 минут
Нашел команду, с помощью которой можно удалить все файлы, начинающиеся одинаково.
Bash
1
 rm file*
В моем случае это будет выглядить так?
Bash
1
 /tmp/cmd*
?
0
Заблокирован
11.08.2014, 22:16 11
Под никсы часто надо делать rm -f вмеcто rm - алиасы висят косые, а так да.
0
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 42
13.08.2014, 14:46  [ТС] 12
Все вроде теперь работает как задумнано, только есть проблема одна.

Если нажиамаю кнопку в тот момент, когда на экране изображение, то она зависает на экране

пробую
Bash
1
 killall-9 python
и другие команды, связанные с kill, но ничего не помогает.

Что можно сделать еще?
0
13.08.2014, 14:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.08.2014, 14:46
Помогаю со студенческими работами здесь

Воспроизведение видео-файлов
Воспроизведение ВИДЕО файлов в SFML ктото пробовал ? Я только такую библиотеку Motion нашел и...

Воспроизведение видео-файлов
Коллеги, добрый вечер! Столкнулся со следующей проблемой. С начала эксплуатации компьютера не...

Воспроизведение видео на форме с помощью DirectX (в референсах ничего не отображается)
Стоит задача воспроизведения видео на форме с помощью DirectX Вот нашёл небольшую вводную статью:...

Воспроизведение видео AVI-файлов
Помогите написать программу для воспроизведения видео AVI- файлов в Delphi


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru