LINUX.ORG.RU

Как объединить видео (MJPEG) и аудио (OPUS) в AVI или FLV контейнер?

 , ,


0

2

Передаю видео:

mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video1 -r 1280x720 -f 25 -n" \
-o "/usr/local/lib/output_http.so -w /usr/local/www"

Передаю звук:

gst-launch-1.0 -v alsasrc device=plughw:1,0 ! \
queue ! audioconvert ! audioresample ! opusenc ! rtpopuspay ! udpsink host=127.0.0.1 port=5002 \
queue ! tcpserversink host=0.0.0.0 port=5003

Принимаю (получается только видео, не понимаю как добавить звук):

gst-launch-1.0 souphttpsrc location=http://192.168.1.139:8080/?action=stream \
    ! 'image/jpeg,framerate=25/1,width=1280,height=720' ! jpegparse ! avimux \
    ! filesink location=encode.avi

Пробовал так, увы не работает:

gst-launch-1.0 souphttpsrc location=http://127.0.0.1:8080/?action=stream \
    ! "image/jpeg,framerate=25/1,width=1280,height=720" ! jpegparse \
    ! mux. \
    ! udpsrc port=5002 caps="application/x-rtp" ! rtpopusdepay ! opusdec \
    ! mux. \
    ! avimux ! filesink location=encode.avi

ffmpeg -i video-input -i audio-input -c copy -map -0:0 -map 1:0 output.avi

Где video-input и audio-input могут быть как файлами, так и адресами.

Ya_gnu_linux
()
Ответ на: комментарий от Ya_gnu_linux

Я не уверен что это работает с rtp..

~ $ffmpeg -i http://192.168.1.139:8080/?action=stream -i udp://192.168.1.139:5003 -c copy -map -0:0 -map 1:0 output.avi
ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.3.0 (clang-703.0.29)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-vda
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[mjpeg @ 0x7fee4d008000] Changing bps to 8
Input #0, mpjpeg, from 'http://192.168.1.139:8080/?action=stream':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 640x480 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc
udp://192.168.1.139:5003: Immediate exit requested
Exiting normally, received signal 2.
Unmanner
() автор топика
Ответ на: комментарий от Ya_gnu_linux

Для видео:

Input #0, mpjpeg, from 'http://192.168.1.139:8080/?action=stream':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1280x720, 25 fps, 25 tbr, 25 tbn, 25 tbc

Для звука просто подвисает и ничего не выводит.

Unmanner
() автор топика
Ответ на: комментарий от Unmanner

Пытаюсь для начала объединить видео и звук локально, видео есть, все ок, звук есть только 1 секунду потом тишина.

gst-launch-1.0 \
    souphttpsrc location=http://127.0.0.1:8080/?action=stream \
        ! "image/jpeg,framerate=25/1,width=1280,height=720" \
        ! jpegparse \
        ! queue \
        ! mux. \
    alsasrc device=plughw:1,0 \
        ! 'audio/x-raw,rate=60000,channels=2,depth=16' \
        ! audioresample \
        ! audioconvert \
        ! queue \
        ! mux. \
    avimux name=mux \
        ! filesink location=encode.avi
Unmanner
() автор топика
Ответ на: комментарий от Unmanner

Ну так если у тебя ffprobe

Для звука просто подвисает и ничего не выводит.

То видимо там с аудиоданными в потоке что-то не так.

Ya_gnu_linux
()
Ответ на: комментарий от Ya_gnu_linux

плюсую. потому и звука нет.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.