LINUX.ORG.RU

Gstreamer Audio & Video


0

1

Для передачи видео через SPI использую следующую цепочку

gst-launch v4l2src always-copy=false chain-ipipe=true ! video/x-raw-yuv,format='(fourcc)'NV12, width=640, height=480, framerate='(fraction)'15/1 ! dmaiaccel  ! dmaienc_h264 ddrbuf=true rcalgo=0 bytestream=true encodingpreset=2 ratecontrol=1 intraframeinterval=46 idrinterval=46 targetbitrate=400000 ! video/x-h264,profile=low  !  filesink append = true location = /dev/spidev0.1
. Передача работает. Как можно передать звук в этом же потоке?

Пробовал использовать следующую цепочку:

gst-launch v4l2src always-copy=false chain-ipipe=true ! video/x-raw-yuv,format='(fourcc)'NV12, width=640, height=480, framerate='(fraction)'30/1 ! dmaiaccel  ! dmaienc_h264 ddrbuf=true rcalgo=0 bytestream=true encodingpreset=2 ratecontrol=1 intraframeinterval=46 idrinterval=46 targetbitrate=600000 ! video/x-h264,profile=low ! queue ! mpegtsmux name=mux  alsasrc num-buffers=440 ! audioresample ! audioconvert ! wavenc ! queue  ! mux. mux.  ! filesink location=/dev/spidev0.1

Пишет ошибку: erroneous pipeline: could not link queue1 to mux. Что я не так делаю?

Попробуй так. Если не будет работать - вкуривай полный лог с GST_DEBUG=4. И версию укажи.

gst-launch v4l2src always-copy=false chain-ipipe=true ! video/x-raw-yuv,format='(fourcc)'NV12, width=640, height=480, framerate='(fraction)'30/1 ! dmaiaccel ! dmaienc_h264 ddrbuf=true rcalgo=0 bytestream=true encodingpreset=2 ratecontrol=1 intraframeinterval=46 idrinterval=46 targetbitrate=600000 ! video/x-h264,profile=low ! queue ! mpegtsmux name=mux mux. ! filesink location=/dev/spidev0.1 alsasrc num-buffers=440 ! audioresample ! audioconvert ! wavenc ! queue ! mux.

А что за проект?

Krieger_Od ★★ ()
Ответ на: комментарий от EXpoison

Для записи видео и звука(h264 + aac) в файл на Virt2Real использую цепочку

gst-launch v4l2src always-copy=false chain-ipipe=true ! video/x-raw-yuv,format='(fourcc)'NV12, width=640, height=480, framerate='(fraction)'15/1 ! dmaiaccel  ! dmaienc_h264 ddrbuf=true rcalgo=0 bytestream=true encodingpreset=2 ratecontrol=1 intraframeinterval=46 idrinterval=46 targetbitrate=400000  ! queue ! flvmux name=m  alsasrc actual_buffer_time = 1000 ! queue ! 'audio/x-raw-int,rate=22050' ! dmaienc_aac outputBufferSize=131072 bitrate=16000 ! m. m. ! filesink append = true location = /dev/spidev0.1

Для воспроизведения на ПК использую цепочку

C:\gstreamer\1.0\x86_64\bin\gst-launch-1.0 filesrc location=D:\videoh264.mp4 ! flvdemux name=demux ! queue ! video/x-h264  ! h264parse ! avdec_h264 ! videorate ! video/x-raw,framerate=30/1 ! autovideosink  demux. ! queue ! avdec_aac ! queue  ! audio/x-raw, rate= 22050 ! audioconvert ! autoaudiosink
при этом видео и звук воспроизводятся намного быстрее записи.

Если воспроизводить только видео - то скорость воспроизведения получается нормальной

C:\gstreamer\1.0\x86_64\bin\gst-launch-1.0 filesrc location=D:\test.mp4 ! video/x-h264  ! h264parse ! avdec_h264 ! videorate ! video/x-raw,framerate=30/1 ! autovideosink

Если же воспроизводить только звук то скорость воспроизведения получается выше скорости записи

C:\gstreamer\1.0\x86_64\bin\gst-launch-1.0 filesrc location=D:\test.mp4 ! queue ! flvdemux ! faad ! audio/x-raw, rate= 22050  ! audioconvert ! audioresample ! autoaudiosink

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