2

Я пишу bash-скрипт, который запускает некоторые другие команды в новом терминале:

#!/bin/bash
# Sample script
gnome-terminal --title="blah blah" -x bash -c ffmpeg -i udp://239.1.2.1:60001?fifo_size=50000000 -acodec copy -vcodec copy -preset ultrafast \
-flags -global_header -f hls -hls_time 20 -hls_wrap 5 /var/www/html/ts/1.m3u8 &

sleep 1

gnome-terminal --title="blah blah" -x bash -c ffmpeg -i udp://239.1.2.2:60002?fifo_size=50000000 -acodec copy -vcodec copy -preset ultrafast \
-flags -global_header -f hls -hls_time 20 -hls_wrap 5 /var/www/html/ts/2.m3u8

Вывод каждой строки ffmpeg занимает более одной страницы и похож на:

libavutil      54.  7.100 / 54.  7.100
  libavcodec     56.  1.100 / 56.  1.100
  libavformat    56.  4.101 / 56.  4.101

  ... many pages after ....

[h264 @ 0xc04c60] decode_slice_header error
[h264 @ 0xc04c60] no frame!
[h264 @ 0xc04c60] non-existing PPS 0 referenced

.... many pages after .... 

  Program 105 
    Metadata:
      service_name    : IRIB-TV5
      service_provider: IRIB
[adts @ 0xf943e0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.
Output #0, hls, to '/home/stream/Desktop/tst/1.m3u8':
  Metadata:
    encoder         : Lavf56.4.101
    Stream #0:0: Video: h264 (libx264), yuv420p, 720x576 [SAR 12:11 DAR 15:11], q=-1--1, 25 fps, 90k tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.1.100 libx264
    Stream #0:1(per): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc56.1.100 aac
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac_latm (native) -> aac (native))
Press [q] to stop, [?] for help
[h264 @ 0xf42120] reference picture missing during reorder
[h264 @ 0xf42120] Missing reference picture, default is 65716
[h264 @ 0xf42120] reference picture missing during reorder
[h264 @ 0xf42120] Missing reference picture, default is 65717

Когда я запускаю этот скрипт в новом терминале и запускаю команду (в данном случае ffmpeg), он сразу показывает много выходных строк, иногда много страниц и автоматически переходит к последнему сообщению...

Как прокрутить вверх и вниз первое сообщение в терминале или остановить его на первой странице?

1 ответ1

1

Обновить после этого вопрос был полностью переформулирован:

Вы можете использовать | more или | less чтобы остановить вывод после первой страницы.

 gnome-terminal --title="blah blah" -x bash -c  ' find  ~  | less'

Примечание: вам нужно использовать '' чтобы сказать, где он заканчивает команды bash.
В течение less вы можете двигаться:

  • Начало и конец До начала и до конца страницы.
  • PgUp и PgUp Одна страница вниз или вверх.
  • Вверх и Дн На одну линию вверх или вниз.

Одна из строк вашего скрипта может быть похожа на

gnome-terminal --title="blah blah" -x bash -c                                 \
'ffmpeg -i udp://239.1.2.1:60001?fifo_size=50000000 -acodec copy -vcodec copy \
-preset ultrafast -flags -global_header -f hls -hls_time 20 -hls_wrap 5       \
/var/www/html/ts/1.m3u8 | less ' &

Есть несколько ярлыков:

  • Ctrl+ Shift+ Up или Dn Для прокрутки вверх или вниз по строке
  • Shift+ PgUp или PgDn Для прокрутки вверх или вниз по странице
  • Shift+ Home или End Для прокрутки вверх до начала или вниз до конца

О других ярлыках вы можете прочитать прямо на странице справки gnome.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .