[FFmpeg-user] syncing rtsp video and audio
Jesper Taxbøl
jesper at taxboel.dk
Mon Oct 9 16:35:59 EEST 2017
I am trying to record a video stream from an IP camera. The camera is from
Alibaba and its boasting h.265 4K recording at 30fps + 8KHz Audio.
The product page is here:
https://www.alibaba.com/product-detail/SIP-E274K-1-2-
5-SONY_60584818808.html?spm=a2700.7724838.2017115.1.621e0c80r293BD
I have successfully configured the camera to stream 4K video at 30fps using
this command.
*ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.200/av0_0
<http://192.168.0.200/av0_0> -c:v copy -t 10 -y out.mp4*
I recieve the 4k h.265 encoded video, but the audio track is badly out of
sync.
A sample can be seen here:
http://s3-eu-west-1.amazonaws.com/recoordio-zoo/2017/down/sync3.mp4
Any idea on how to achieve better audio video sync? Am I loosing the sync
because of the aac audio codec?
For those interrested in why I care about a 8khz ausio signal: I only aim
to use it for syncing two cameras and a stereo audio input. I do the sync
by hooking the audio output of a raspberry PI to the two cameras line-in
and one of the stereo channels recording audio. The output plays a sine one
second after all recordings has started. In that way I end up with two
video files and one stereo file. The camera files has video and my
controlsignal and the stereo has the actual sound in one channel and the
controlsignal in the other channel. Thus allowing me to sync the threew
channels in post. The rtsp sync problem is giving me trouble
Kind regards
Jesper
The full ffmpeg and ffprobe output is pasted below:
---------------------------------------------------
*ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.200/av0_0
<http://192.168.0.200/av0_0> -c:v copy -t 10 -y out.mp4*
ffmpeg version N-87041-gf61e2dcfc3 Copyright (c) 2000-2017 the FFmpeg
developers
built with gcc 7.1.1 (GCC) 20170630
configuration: --prefix=/usr --disable-debug --disable-static
--disable-stripping --enable-avisynth --enable-avresample
--enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl
--enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype
--enable-libfribidi --enable-libgsm --enable-libiec61883
--enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb
--enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus
--enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh
--enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxcb --enable-libxvid --enable-shared --enable-version3
libavutil 55. 74.100 / 55. 74.100
libavcodec 57.103.100 / 57.103.100
libavformat 57. 77.100 / 57. 77.100
libavdevice 57. 7.101 / 57. 7.101
libavfilter 6.100.100 / 6.100.100
libavresample 3. 6. 0 / 3. 6. 0
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://192.168.0.200/av0_0':
Metadata:
title : av0_0
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt709, progressive),
3840x2160, 25 tbr, 90k tbn, 180k tbc
Stream #0:1: Audio: pcm_alaw, 8000 Hz, mono, s16, 64 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (pcm_alaw (native) -> aac (native))
Press [q] to stop, [?] for help
[aac @ 0x55fa5aef6ec0] Too many bits 8832.000000 > 6144 per frame
requested, clamping to max
Output #0, mp4, to 'out.mp4':
Metadata:
title : av0_0
encoder : Lavf57.77.100
Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc,
bt709, progressive), 3840x2160, q=2-31, 25 tbr, 90k tbn, 90k tbc
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 8000 Hz, mono, fltp,
48 kb/s
Metadata:
encoder : Lavc57.103.100 aac
[mp4 @ 0x55fa5aef5b00] Timestamps are unset in a packet for stream 0. This
is deprecated and will stop working in the future. Fix your code to set the
timestamps properly
frame= 250 fps= 28 q=-1.0 Lsize= 6650kB time=00:00:10.11
bitrate=5387.7kbits/s speed=1.12x
video:6598kB audio:48kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.057095%
[aac @ 0x55fa5aef6ec0] Qavg: 61411.211
----------------------------------------------
*ffprobe -rtsp_transport tcp rtsp://192.168.0.200/av0_0
<http://192.168.0.200/av0_0>*
ffprobe version N-87041-gf61e2dcfc3 Copyright (c) 2007-2017 the FFmpeg
developers
built with gcc 7.1.1 (GCC) 20170630
configuration: --prefix=/usr --disable-debug --disable-static
--disable-stripping --enable-avisynth --enable-avresample
--enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl
--enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype
--enable-libfribidi --enable-libgsm --enable-libiec61883
--enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb
--enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus
--enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh
--enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxcb --enable-libxvid --enable-shared --enable-version3
libavutil 55. 74.100 / 55. 74.100
libavcodec 57.103.100 / 57.103.100
libavformat 57. 77.100 / 57. 77.100
libavdevice 57. 7.101 / 57. 7.101
libavfilter 6.100.100 / 6.100.100
libavresample 3. 6. 0 / 3. 6. 0
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Input #0, rtsp, from 'rtsp://192.168.0.200/av0_0':
Metadata:
title : av0_0
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt709, progressive),
3840x2160, 24.92 tbr, 90k tbn, 180k tbc
Stream #0:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s
More information about the ffmpeg-user
mailing list