Recherche avancée

Médias (1)

Mot : - Tags -/école

Autres articles (54)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Changer son thème graphique

    22 février 2011, par

    Le thème graphique ne touche pas à la disposition à proprement dite des éléments dans la page. Il ne fait que modifier l’apparence des éléments.
    Le placement peut être modifié effectivement, mais cette modification n’est que visuelle et non pas au niveau de la représentation sémantique de la page.
    Modifier le thème graphique utilisé
    Pour modifier le thème graphique utilisé, il est nécessaire que le plugin zen-garden soit activé sur le site.
    Il suffit ensuite de se rendre dans l’espace de configuration du (...)

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

Sur d’autres sites (7119)

  • Issue trying to stream RTSP to RTMP (live) through NGINX

    30 juin 2016, par taansari

    I want live RTMP streaming through nginx. I setup this server on a public ip (linux - CentOS), using this tutorial : https://notehub.org/rcfdu.

    My target is : RTSP source -> transcode to RTMP -> recieve on nginx (live ip),

    Then, I want to receive this stream through server ; something like :

    nginx -> ffplay.

    On transmission side, I have ffmpeg application, and on receiver side, I have ffplay application.

    I have setup everything I could think of, and I can see it is properly setup (apparently). But, when I try to stream using similar command :

    ffmpeg -i rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov -f mpegts rtmp://<live ip="ip" address="address">:1935/live/
    </live>

    I get lots of messages (where everything looks alright) :

    ffmpeg -i rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov -f mpegts rtmp://<live ip="ip" address="address">:1935/live/
    ffmpeg version N-80386-g5f5a97d Copyright (c) 2000-2016 the FFmpeg developers
     built with gcc 5.4.0 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
    enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
    e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
    able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
    bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
    amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
    librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
    bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
    -amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
    p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
    ibzimg --enable-lzma --enable-decklink --enable-zlib
     libavutil      55. 24.100 / 55. 24.100
     libavcodec     57. 46.100 / 57. 46.100
     libavformat    57. 38.100 / 57. 38.100
     libavdevice    57.  0.101 / 57.  0.101
     libavfilter     6. 46.101 /  6. 46.101
     libswscale      4.  1.100 /  4.  1.100
     libswresample   2.  1.100 /  2.  1.100
     libpostproc    54.  0.100 / 54.  0.100
    [rtsp @ 03087ca0] UDP timeout, retrying with TCP
    Input #0, rtsp, from 'rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov':
     Metadata:
       title           : filename.mov
     Duration: 00:09:56.46, start: 0.000000, bitrate: N/A
       Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
       Stream #0:1: Video: h264 (Constrained Baseline), yuv420p, 240x160, 24 fps, 4
    8 tbr, 90k tbn, 48 tbc
    [mpegts @ 04d033a0] Using AVStream.codec to pass codec parameters to muxers is d
    eprecated, use AVStream.codecpar instead.
       Last message repeated 1 times
    Output #0, mpegts, to 'rtmp://<live ip="ip" address="address">:1935/live/':
     Metadata:
       title           : filename.mov
       encoder         : Lavf57.38.100
       Stream #0:0: Video: mpeg2video (Main), yuv420p, 240x160, q=2-31, 200 kb/s, 2
    4 fps, 90k tbn, 24 tbc
       Metadata:
         encoder         : Lavc57.46.100 mpeg2video
       Side data:
         cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
       Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
       Metadata:
         encoder         : Lavc57.46.100 mp2
    Stream mapping:
     Stream #0:1 -> #0:0 (h264 (native) -> mpeg2video (native))
     Stream #0:0 -> #0:1 (aac (native) -> mp2 (native))
    Press [q] to stop, [?] for help
    Past duration 0.999992 too large
       Last message repeated 4 times
    frame=   85 fps=0.0 q=2.9 size=     322kB time=00:00:03.85 bitrate= 684.4kbits/s
    frame=   95 fps= 94 q=3.5 size=     366kB time=00:00:04.28 bitrate= 698.9kbits/s
    frame=  108 fps= 71 q=3.7 size=     421kB time=00:00:04.79 bitrate= 719.9kbits/s
    frame=  122 fps= 61 q=4.1 size=     478kB time=00:00:05.34 bitrate= 733.1kbits/s
    frame=  134 fps= 53 q=4.5 size=     527kB time=00:00:05.87 bitrate= 735.8kbits/s
    frame=  146 fps= 48 q=5.2 size=     579kB time=00:00:06.35 bitrate= 747.2kbits/s
    frame=  159 fps= 45 q=5.5 size=     632kB time=00:00:06.88 bitrate= 751.9kbits/s
    frame=  171 fps= 42 q=5.3 size=     677kB time=00:00:07.38 bitrate= 751.5kbits/s
    frame=  183 fps= 40 q=5.6 size=     725kB time=00:00:07.91 bitrate= 750.8kbits/s
    frame=  193 fps= 38 q=6.3 size=     765kB time=00:00:08.34 bitrate= 750.7kbits/s
    frame=  207 fps= 37 q=6.6 size=     820kB time=00:00:08.89 bitrate= 755.2kbits/s
    frame=  219 fps= 36 q=6.6 size=     865kB time=00:00:09.40 bitrate= 754.2kbits/s
    frame=  231 fps= 35 q=7.2 size=     911kB time=00:00:09.90 bitrate= 753.6kbits/s
    frame=  243 fps= 34 q=7.4 size=     959kB time=00:00:10.40 bitrate= 754.6kbits/s
    frame=  255 fps= 34 q=6.7 size=    1002kB time=00:00:10.91 bitrate= 752.1kbits/s
    frame=  267 fps= 33 q=5.5 size=    1047kB time=00:00:11.41 bitrate= 751.4kbits/s
    frame=  279 fps= 33 q=4.6 size=    1088kB time=00:00:11.89 bitrate= 749.1kbits/s
    frame=  291 fps= 32 q=6.1 size=    1140kB time=00:00:12.42 bitrate= 751.4kbits/s
    frame=  301 fps= 31 q=6.7 size=    1181kB time=00:00:12.85 bitrate= 752.5kbits/s
    frame=  314 fps= 31 q=6.6 size=    1231kB time=00:00:13.40 bitrate= 752.1kbits/s
    frame=  325 fps= 31 q=7.0 size=    1275kB time=00:00:13.86 bitrate= 753.0kbits/s
    frame=  338 fps= 30 q=6.7 size=    1324kB time=00:00:14.36 bitrate= 754.8kbits/s
    frame=  349 fps= 30 q=6.5 size=    1368kB time=00:00:14.87 bitrate= 753.5kbits/s
    frame=  362 fps= 30 q=6.8 size=    1415kB time=00:00:15.37 bitrate= 753.9kbits/s
    frame=  373 fps= 30 q=6.2 size=    1457kB time=00:00:15.88 bitrate= 751.7kbits/s
    frame=  387 fps= 30 q=3.8 size=    1506kB time=00:00:16.45 bitrate= 749.7kbits/s
    frame=  400 fps= 29 q=4.1 size=    1549kB time=00:00:16.96 bitrate= 748.2kbits/s
    frame=  415 fps= 29 q=5.4 size=    1597kB time=00:00:17.56 bitrate= 744.9kbits/s
    frame=  427 fps= 29 q=5.2 size=    1639kB time=00:00:18.04 bitrate= 744.1kbits/s
    frame=  439 fps= 29 q=4.4 size=    1679kB time=00:00:18.56 bitrate= 740.6kbits/s
    frame=  451 fps= 29 q=3.6 size=    1717kB time=00:00:19.07 bitrate= 737.4kbits/s
    frame=  464 fps= 28 q=2.6 size=    1761kB time=00:00:19.67 bitrate= 733.2kbits/s
    frame=  475 fps= 28 q=7.0 size=    1799kB time=00:00:20.08 bitrate= 734.0kbits/s
    frame=  488 fps= 28 q=8.3 size=    1847kB time=00:00:20.70 bitrate= 730.8kbits/s
    frame=  502 fps= 28 q=5.9 size=    1895kB time=00:00:21.25 bitrate= 730.2kbits/s
    frame=  515 fps= 28 q=3.3 size=    1935kB time=00:00:21.76 bitrate= 728.5kbits/s
    frame=  528 fps= 28 q=2.5 size=    1976kB time=00:00:22.31 bitrate= 725.6kbits/s
    frame=  540 fps= 28 q=3.4 size=    2017kB time=00:00:22.81 bitrate= 724.2kbits/s
    frame=  553 fps= 28 q=6.2 size=    2072kB time=00:00:23.36 bitrate= 726.2kbits/s
    frame=  568 fps= 28 q=6.7 size=    2132kB time=00:00:23.94 bitrate= 729.3kbits/s
    frame=  580 fps= 28 q=6.8 size=    2174kB time=00:00:24.42 bitrate= 729.3kbits/s
    frame=  592 fps= 27 q=6.8 size=    2219kB time=00:00:24.92 bitrate= 729.3kbits/s
    frame=  604 fps= 27 q=7.4 size=    2263kB time=00:00:25.43 bitrate= 728.8kbits/s
    frame=  615 fps= 27 q=6.1 size=    2305kB time=00:00:25.93 bitrate= 727.9kbits/s
    frame=  626 fps= 27 q=7.4 size=    2339kB time=00:00:26.36 bitrate= 726.5kbits/s
    frame=  638 fps= 27 q=6.8 size=    2383kB time=00:00:26.89 bitrate= 725.8kbits/s
    frame=  651 fps= 27 q=5.8 size=    2436kB time=00:00:27.47 bitrate= 726.5kbits/s
    frame=  662 fps= 27 q=7.0 size=    2471kB time=00:00:27.90 bitrate= 725.4kbits/s
    frame=  675 fps= 27 q=5.9 size=    2523kB time=00:00:28.40 bitrate= 727.6kbits/s
    frame=  679 fps= 26 q=6.8 size=    2534kB time=00:00:28.57 bitrate= 726.5kbits/s
    frame=  703 fps= 27 q=8.0 size=    2622kB time=00:00:29.58 bitrate= 726.1kbits/s
    frame=  714 fps= 27 q=7.6 size=    2662kB time=00:00:30.08 bitrate= 724.7kbits/s
    frame=  729 fps= 27 q=6.5 size=    2712kB time=00:00:30.68 bitrate= 724.0kbits/s
    frame=  741 fps= 27 q=7.0 size=    2753kB time=00:00:31.14 bitrate= 724.1kbits/s
    frame=  755 fps= 27 q=7.5 size=    2801kB time=00:00:31.76 bitrate= 722.2kbits/s
    frame=  767 fps= 26 q=7.2 size=    2842kB time=00:00:32.27 bitrate= 721.5kbits/s
    frame=  779 fps= 26 q=6.8 size=    2881kB time=00:00:32.77 bitrate= 720.0kbits/s
    frame=  791 fps= 26 q=8.2 size=    2922kB time=00:00:33.30 bitrate= 718.8kbits/s
    frame=  803 fps= 26 q=7.0 size=    2961kB time=00:00:33.76 bitrate= 718.4kbits/s
    frame=  816 fps= 26 q=6.6 size=    3003kB time=00:00:34.33 bitrate= 716.4kbits/s
    frame=  828 fps= 26 q=6.4 size=    3044kB time=00:00:34.84 bitrate= 715.7kbits/s
    frame=  840 fps= 26 q=7.5 size=    3084kB time=00:00:35.34 bitrate= 714.7kbits/s
    frame=  855 fps= 26 q=5.0 size=    3137kB time=00:00:35.94 bitrate= 714.8kbits/s
    frame=  866 fps= 26 q=6.2 size=    3169kB time=00:00:36.40 bitrate= 713.3kbits/s
    frame=  880 fps= 26 q=5.9 size=    3219kB time=00:00:36.95 bitrate= 713.6kbits/s
    frame=  892 fps= 26 q=6.8 size=    3259kB time=00:00:37.43 bitrate= 713.2kbits/s
    frame=  904 fps= 26 q=5.3 size=    3300kB time=00:00:37.96 bitrate= 712.2kbits/s
    frame=  916 fps= 26 q=5.5 size=    3338kB time=00:00:38.46 bitrate= 711.0kbits/s
    frame=  928 fps= 26 q=5.5 size=    3377kB time=00:00:38.94 bitrate= 710.4kbits/s
    frame=  941 fps= 26 q=6.4 size=    3422kB time=00:00:39.52 bitrate= 709.4kbits/s
    frame=  953 fps= 26 q=5.4 size=    3460kB time=00:00:40.00 bitrate= 708.6kbits/s
    frame=  967 fps= 26 q=5.2 size=    3506kB time=00:00:40.60 bitrate= 707.3kbits/s
    frame=  979 fps= 26 q=4.8 size=    3546kB time=00:00:41.12 bitrate= 706.2kbits/s
    frame=  985 fps= 26 q=5.2 size=    3563kB time=00:00:41.36 bitrate= 705.6kbits/s
    frame= 1008 fps= 26 q=4.8 size=    3639kB time=00:00:42.30 bitrate= 704.6kbits/s
    frame= 1022 fps= 26 q=4.3 size=    3684kB time=00:00:42.88 bitrate= 703.7kbits/s
    frame= 1034 fps= 26 q=4.5 size=    3723kB time=00:00:43.38 bitrate= 702.9kbits/s
    frame= 1046 fps= 26 q=3.8 size=    3763kB time=00:00:43.88 bitrate= 702.5kbits/s
    frame= 1056 fps= 26 q=5.3 size=    3800kB time=00:00:44.32 bitrate= 702.3kbits/s
    frame= 1069 fps= 26 q=5.5 size=    3842kB time=00:00:44.84 bitrate= 701.8kbits/s
    frame= 1081 fps= 26 q=6.3 size=    3883kB time=00:00:45.35 bitrate= 701.3kbits/s
    frame= 1093 fps= 26 q=6.3 size=    3925kB time=00:00:45.85 bitrate= 701.1kbits/s
    frame= 1105 fps= 26 q=5.3 size=    3964kB time=00:00:46.36 bitrate= 700.5kbits/s
    frame= 1117 fps= 26 q=6.7 size=    4006kB time=00:00:46.86 bitrate= 700.3kbits/s
    frame= 1129 fps= 26 q=4.5 size=    4046kB time=00:00:47.32 bitrate= 700.4kbits/s
    frame= 1141 fps= 26 q=7.1 size=    4089kB time=00:00:47.87 bitrate= 699.8kbits/s
    Larger timestamp than 24-bit: 0x310042f0
    WriteN, RTMP send error 10054 (133 bytes)
    WriteN, RTMP send error 10054 (35 bytes)
    WriteN, RTMP send error 10038 (42 bytes)
    av_interleaved_write_frame(): Operation not permitted
    Error writing trailer of rtmp://<live ip="ip" address="address">:1935/live/: Operation not permitte
    dframe= 1143 fps= 25 q=8.1 Lsize=    4109kB time=00:00:47.92 bitrate= 702.5kbits
    /s dup=0 drop=5 speed=1.07x
    video:1343kB audio:2248kB subtitle:0kB other streams:0kB global headers:0kB muxi
    ng overhead: 14.429363%
    Conversion failed!
    </live></live></live>

    but in the end, I get this error :

    WriteN, RTMP send error 10054 (133 bytes)
    WriteN, RTMP send error 10054 (35 bytes)
    WriteN, RTMP send error 10038 (42 bytes)
    av_interleaved_write_frame(): Operation not permitted
    Error writing trailer of rtmp://<live ip="ip" address="address">:1935/live/: Operation not permitte
    dframe= 1143 fps= 25 q=8.1 Lsize=    4109kB time=00:00:47.92 bitrate= 702.5kbits
    /s dup=0 drop=5 speed=1.07x
    video:1343kB audio:2248kB subtitle:0kB other streams:0kB global headers:0kB muxi
    ng overhead: 14.429363%
    Conversion failed!
    </live>

    On the receiver side (where ffplay is running), I always get this error :

    RTMP_ReadPacket, failed to read RTMP packet headersq=    0B f=0/0
       rtmp://<live ip="ip" address="address">:1935/live/: Invalid data found when processing input
    </live>

    Detailed output :

    ffplay rtmp://<live ip="ip" address="address">:1935/live/
    ffplay version N-80386-g5f5a97d Copyright (c) 2003-2016 the FFmpeg developers
     built with gcc 5.4.0 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
    enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
    e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
    able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
    bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
    amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
    librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
    bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
    -amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
    p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
    ibzimg --enable-lzma --enable-decklink --enable-zlib
     libavutil      55. 24.100 / 55. 24.100
     libavcodec     57. 46.100 / 57. 46.100
     libavformat    57. 38.100 / 57. 38.100
     libavdevice    57.  0.101 / 57.  0.101
     libavfilter     6. 46.101 /  6. 46.101
     libswscale      4.  1.100 /  4.  1.100
     libswresample   2.  1.100 /  2.  1.100
     libpostproc    54.  0.100 / 54.  0.100
    RTMP_ReadPacket, failed to read RTMP packet headersq=    0B f=0/0
    rtmp://<live ip="ip" address="address">:1935/live/: Invalid data found when processing input
    </live></live>

    and if I enable debug mode, this is the receiving side log :

    ffplay -loglevel debug rtmp://<live ip="ip" address="address">:1935/live/
    ffplay version N-80386-g5f5a97d Copyright (c) 2003-2016 the FFmpeg developers
     built with gcc 5.4.0 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
    enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
    e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
    able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
    bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
    amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
    librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
    bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
    -amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
    p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
    ibzimg --enable-lzma --enable-decklink --enable-zlib
     libavutil      55. 24.100 / 55. 24.100
     libavcodec     57. 46.100 / 57. 46.100
     libavformat    57. 38.100 / 57. 38.100
     libavdevice    57.  0.101 / 57.  0.101
     libavfilter     6. 46.101 /  6. 46.101
     libswscale      4.  1.100 /  4.  1.100
     libswresample   2.  1.100 /  2.  1.100
     libpostproc    54.  0.100 / 54.  0.100
    [rtmp @ 0310d800] No default whitelist set    0KB sq=    0B f=0/0
    Parsing... :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
    Parsed protocol: 0
    Parsed host    : <live ip="ip" address="address">
    Parsed app     : live
    RTMP_Connect1, ... connected, handshaking=    0KB sq=    0B f=0/0
    HandShake: Type Answer   : 03q=    0KB vq=    0KB sq=    0B f=0/0
    HandShake: Server Uptime : 324510454
    HandShake: FMS Version   : 0.0.0.0
    HandShake: Handshaking finished....0KB vq=    0KB sq=    0B f=0/0
    RTMP_Connect1, handshaked
    RTMP_SendPacket: fd=648, size=174
     0000:  03 00 00 00 00 00 ae 14  00 00 00 00               ............
     0000:  02 00 07 63 6f 6e 6e 65  63 74 00 3f f0 00 00 00   ...connect.?....
     0010:  00 00 00 03 00 03 61 70  70 02 00 04 6c 69 76 65   ......app...live
     0020:  00 05 74 63 55 72 6c 02  00 1e 72 74 6d 70 3a 2f   ..tcUrl...rtmp:/
     0030:  2f 36 34 2e 34 39 2e 32  33 34 2e 32 35 30 3a 31   /<live ip="ip" address="address">:1
     0040:  39 33 35 2f 6c 69 76 65  00 04 66 70 61 64 01 00   935/live..fpad..
     0050:  00 0c 63 61 70 61 62 69  6c 69 74 69 65 73 00 40   ..capabilities.@
     0060:  2e 00 00 00 00 00 00 00  0b 61 75 64 69 6f 43 6f   .........audioCo
     0070:  64 65 63 73 00 40 a8 ee  00 00 00 00 00 00 0b 76   decs.@.........v
     0000:  c3                                                 .
     0000:  69 64 65 6f 43 6f 64 65  63 73 00 40 6f 80 00 00   ideoCodecs.@o...
     0010:  00 00 00 00 0d 76 69 64  65 6f 46 75 6e 63 74 69   .....videoFuncti
     0020:  6f 6e 00 3f f0 00 00 00  00 00 00 00 00 09         on.?..........
    Invoking connect
    RTMP_ReadPacket: fd=648
     0000:  02 00 00 00 00 00 04 05  00 00 00 00               ............
     0000:  00 4c 4b 40                                        .LK@
    HandleServerBW: server BW = 5000000
    RTMP_ReadPacket: fd=648
     0000:  02 00 00 00 00 00 05 06  00 00 00 00               ............
     0000:  00 4c 4b 40 02                                     .LK@.
    HandleClientBW: client BW = 5000000 2
    RTMP_ReadPacket: fd=648
     0000:  02 00 00 00 00 00 04 01  00 00 00 00               ............
     0000:  00 00 10 00                                        ....
    HandleChangeChunkSize, received: chunk size change to 4096
    RTMP_ReadPacket: fd=648
     0000:  03 00 00 00 00 00 be 14  00 00 00 00               ............
     0000:  02 00 07 5f 72 65 73 75  6c 74 00 3f f0 00 00 00   ..._result.?....
     0010:  00 00 00 03 00 06 66 6d  73 56 65 72 02 00 0d 46   ......fmsVer...F
     0020:  4d 53 2f 33 2c 30 2c 31  2c 31 32 33 00 0c 63 61   MS/3,0,1,123..ca
     0030:  70 61 62 69 6c 69 74 69  65 73 00 40 3f 00 00 00   pabilities.@?...
     0040:  00 00 00 00 00 09 03 00  05 6c 65 76 65 6c 02 00   .........level..
     0050:  06 73 74 61 74 75 73 00  04 63 6f 64 65 02 00 1d   .status..code...
     0060:  4e 65 74 43 6f 6e 6e 65  63 74 69 6f 6e 2e 43 6f   NetConnection.Co
     0070:  6e 6e 65 63 74 2e 53 75  63 63 65 73 73 00 0b 64   nnect.Success..d
     0080:  65 73 63 72 69 70 74 69  6f 6e 02 00 15 43 6f 6e   escription...Con
     0090:  6e 65 63 74 69 6f 6e 20  73 75 63 63 65 65 64 65   nection succeede
     00a0:  64 2e 00 0e 6f 62 6a 65  63 74 45 6e 63 6f 64 69   d...objectEncodi
     00b0:  6e 67 00 00 00 00 00 00  00 00 00 00 00 09         ng............
    RTMP_ClientPacket, received: invoke 190 bytes
    (object begin)
    Property:
    Property:
    Property:
    (object begin)
    Property: 3,0,1,123>
    Property:
    (object end)
    Property:
    (object begin)
    Property:
    Property:
    Property:
    Property:
    (object end)
    (object end)
    HandleInvoke, server invoking &lt;_result>
    HandleInvoke, received result for method call <connect>  0B f=0/0
    RTMP_SendPacket: fd=648, size=4
     0000:  02 00 00 00 00 00 04 05  00 00 00 00               ............
     0000:  00 4c 4b 40                                        .LK@
    sending ctrl. type: 0x0003
    RTMP_SendPacket: fd=648, size=10
     0000:  42 00 00 00 00 00 0a 04                            B.......
     0000:  00 03 00 00 00 00 00 00  01 2c                     .........,
    RTMP_SendPacket: fd=648, size=25
     0000:  43 00 00 00 00 00 19 14                            C.......
     0000:  02 00 0c 63 72 65 61 74  65 53 74 72 65 61 6d 00   ...createStream.
     0010:  40 00 00 00 00 00 00 00  05                        @........
    Invoking createStream
    RTMP_ReadPacket: fd=648
     0000:  03 00 00 00 00 00 1d 14  00 00 00 00               ............
     0000:  02 00 07 5f 72 65 73 75  6c 74 00 40 00 00 00 00   ..._result.@....
     0010:  00 00 00 05 00 3f f0 00  00 00 00 00 00            .....?.......
    RTMP_ClientPacket, received: invoke 29 bytes
    (object begin)
    Property:
    Property:
    Property: NULL
    Property:
    (object end)
    HandleInvoke, server invoking &lt;_result>
    HandleInvoke, received result for method call <createstream>
    SendPlay, seekTime=0, stopTime=0, sending play: (null)
    RTMP_SendPacket: fd=648, size=29
     0000:  08 00 00 00 00 00 1d 14  01 00 00 00               ............
     0000:  02 00 04 70 6c 61 79 00  40 08 00 00 00 00 00 00   ...play.@.......
     0010:  05 02 00 00 00 00 00 00  00 00 00 00 00            .............
    Invoking play 0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
    sending ctrl. type: 0x0003
    RTMP_SendPacket: fd=648, size=10
     0000:  c2                                                 .
     0000:  00 03 00 00 00 01 00 00  0b b8                     ..........
    RTMP_ReadPacket: fd=648
     0000:  05 00 00 00 00 00 60 14  01 00 00 00               ......`.....
     0000:  02 00 08 6f 6e 53 74 61  74 75 73 00 00 00 00 00   ...onStatus.....
     0010:  00 00 00 00 05 03 00 05  6c 65 76 65 6c 02 00 06   ........level...
     0020:  73 74 61 74 75 73 00 04  63 6f 64 65 02 00 14 4e   status..code...N
     0030:  65 74 53 74 72 65 61 6d  2e 50 6c 61 79 2e 53 74   etStream.Play.St
     0040:  61 72 74 00 0b 64 65 73  63 72 69 70 74 69 6f 6e   art..description
     0050:  02 00 0a 53 74 61 72 74  20 6c 69 76 65 00 00 09   ...Start live...
    RTMP_ClientPacket, received: invoke 96 bytes
    (object begin)
    Property:
    Property:
    Property: NULL
    Property:
    (object begin)
    Property:
    Property:
    Property:
    (object end)
    (object end)
    HandleInvoke, server invoking <onstatus>
    HandleInvoke, onStatus: NetStream.Play.Start
    RTMP_ReadPacket: fd=648
     0000:  05 00 00 00 00 00 18 12  01 00 00 00               ............
     0000:  02 00 11 7c 52 74 6d 70  53 61 6d 70 6c 65 41 63   ...|RtmpSampleAc
     0010:  63 65 73 73 01 01 01 01                            cess....
    RTMP_ClientPacket, received: notify 24 bytes
    (object begin)
    Property:
    Property:     nan    :  0.000 fd=   0
    aq=    0KB vq=    0KB sq=    0B f=0/0
    Property:
    (object end)
    RTMP_ReadPacket: fd=648
    RTMPSockBuf_Fill, recv returned -1. GetSockError(): 10060 (Unknown error)
    RTMP_ReadPacket, failed to read RTMP packet header
    [AVIOContext @ 04c81be0] Statistics: 0 bytes read, 0 seeks
    RTMP_SendPacket: fd=648, size=34
     0000:  43 00 00 00 00 00 22 14                            C.....".
     0000:  02 00 0c 64 65 6c 65 74  65 53 74 72 65 61 6d 00   ...deleteStream.
     0010:  40 10 00 00 00 00 00 00  05 00 3f f0 00 00 00 00   @.........?.....
     0020:  00 00                                              ..
    Invoking deleteStreamd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
    rtmp://<live ip="ip" address="address">:1935/live/: Invalid data found when processing input
    </live></onstatus></createstream></connect></live></live></live>

    By the way, this is my server config file ( /etc/nginx/nginx.conf )

    #user  nobody;
    worker_processes  4;

    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;

    #pid        logs/nginx.pid;


    events {
       worker_connections  1024;
    }


    http {
       include       mime.types;
       default_type  application/octet-stream;

       #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
       #                  '$status $body_bytes_sent "$http_referer" '
       #                  '"$http_user_agent" "$http_x_forwarded_for"';

       #access_log  logs/access.log  main;

       sendfile        on;
       #tcp_nopush     on;

       #keepalive_timeout  0;
       keepalive_timeout  65;

       #gzip  on;

       server {
           listen       80;
           server_name  localhost;

           #charset koi8-r;

           #access_log  logs/host.access.log  main;

           location / {
               root   html;
               index  index.html index.htm;
           }

           #error_page  404              /404.html;

           # redirect server error pages to the static page /50x.html
           #
           error_page   500 502 503 504  /50x.html;
           location = /50x.html {
               root   html;
           }

           # proxy the PHP scripts to Apache listening on 127.0.0.1:80
           #
           #location ~ \.php$ {
           #    proxy_pass   http://127.0.0.1;
           #}

           # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
           #
           #location ~ \.php$ {
           #    root           html;
           #    fastcgi_pass   127.0.0.1:9000;
           #    fastcgi_index  index.php;
           #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
           #    include        fastcgi_params;
           #}

           # deny access to .htaccess files, if Apache's document root
           # concurs with nginx's one
           #
           #location ~ /\.ht {
           #    deny  all;
           #}
       }


       # another virtual host using mix of IP-, name-, and port-based configuration
       #
       #server {
       #    listen       8000;
       #    listen       somename:8080;
       #    server_name  somename  alias  another.alias;

       #    location / {
       #        root   html;
       #        index  index.html index.htm;
       #    }
       #}


       # HTTPS server
       #
       #server {
       #    listen       443 ssl;
       #    server_name  localhost;

       #    ssl_certificate      cert.pem;
       #    ssl_certificate_key  cert.key;

       #    ssl_session_cache    shared:SSL:1m;
       #    ssl_session_timeout  5m;

       #    ssl_ciphers  HIGH:!aNULL:!MD5;
       #    ssl_prefer_server_ciphers  on;

       #    location / {
       #        root   html;
       #        index  index.html index.htm;
       #    }
       #}

    }
    rtmp {
           server {
                   listen 1935;
                   chunk_size 4096;

                   application live {
                           live on;
                           record off;
                   }
           }
    }

    I can telnet into both port 80 and 1935, and made sure port 1935 is open as input and output in iptables...

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT
    -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT

    but nothing works.

    Can anyone help in this regards ?

  • lowpass filter Q factor online simulator (bode plot)

    5 novembre 2016, par user1320370

    I like to add a low pass filter on a audio file myfile.flac with ffmpeg.

    The parameters to choose are the frequency and Q-factor or slope.

    ffmpeg -i myfile.flac -af "highpass=f=9000:width_type=q:width=0.707" output.flac

    The default q-factor is 0.707.

    I like to increase the q-factor but a too high value can cause excessive resonance.

    For this reason before do it can be useful to test with a bode plot simular (online if exist) that can accept filter type (lowpass, highpass) , frequency and Q-factor.

    Someone can please send a link of a bode plot that show a simulator like this ?

    thank you !!

  • Fixing A/V sync issues with RTP/RTCP sent from mediasoup

    10 décembre 2017, par artushin

    A little background : I’m attempting to record a webrtc call being made through the mediasoup v2 SFU. I’m using mediasoup’s room.createRtpStreamer() method to generate a stream which mirrors RTP/RTCP to ffmpeg. Two streamers are created for audio and video within 30ms of each other and begin broadcasting. FFmpeg then spins up and starts accepting. Pretty sure RTCP is working since ffmpeg is always starting with a keyframe despite being started after the streamer begins broadcasting.

    The problem is that I encounter audio/video desynchronization with seemingly random offsets. My current theory is that this offset is based on how old the last keyframe is that RTCP requests to start the stream. See below for ffmpeg configuration and output but my question is : what ffmpeg arguments can I use to adjust the video frame timestamps to match the audio frame timestamps or vice versa ? I’ve messed around with -map 0:0,0:1 -map 0:1,0:1 but it doesn’t seem to do what I’m looking for.

    ffmpeg flags :

    '-y',
    '-loglevel',
    'debug',
    '-dump',
    '-protocol_whitelist',
    'file,crypto,udp,rtp,data',
    '-analyzeduration',
    '20M',
    '-probesize',
    '20M',
    '-i',
    `data:text/plain;base64,${sdp.toString('base64')}`,
    '-fflags',
    '+genpts',
    '-vcodec',
    'copy',
    '-acodec',
    'aac',
    '-bsf:v',
    'h264_mp4toannexb',
    '-start_number',
    '0',
    '-hls_list_size',
    '2147480000',
    '-hls_wrap',
    '0',
    '-hls_time',
    '10',

    SDP used for input (template) :

    v=0
    o=- 0 0 IN IP4 &lt;%=ip %>
    s=title
    c=IN IP4 &lt;%=ip %>
    m=audio &lt;%=audioPort %> RTP/AVPF &lt;%=audioPayload %>
    a=sendrecv
    a=rtcp-mux
    a=rtpmap:&lt;%=audioPayload %> opus/48000/2
    a=fmtp:&lt;%=audioPayload %> minptime=10; useinbandfec=1
    m=video &lt;%=videoPort %> RTP/AVPF &lt;%=videoPayload %>
    a=sendrecv
    a=rtcp-mux
    a=rtpmap:&lt;%=videoPayload %> H264/90000
    a=rtcp-fb:&lt;%=videoPayload %> ccm fir
    a=rtcp-fb:&lt;%=videoPayload %> nack
    a=rtcp-fb:&lt;%=videoPayload %> nack pli
    a=rtcp-fb:&lt;%=videoPayload %> goog-remb
    a=rtcp-fb:&lt;%=videoPayload %> transport-cc
    a=fmtp:&lt;%=videoPayload %> level-asymmetry-allowed=1;packetization-mode=1

    ffmpeg output - garbled with some timestamps

    1512775954585 - stderr: ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
     built with Apple LLVM version 9.0.0 (clang-900.0.38)
     configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-libmp3lame --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
    1512775954587 - stderr:   libavutil      55. 78.100 / 55. 78.100
     libavcodec     57.107.100 / 57.107.100
     libavformat    57. 83.100 / 57. 83.100
     libavdevice    57. 10.100 / 57. 10.100
    1512775954587 - stderr:   libavfilter     6.107.100 /  6.107.100
     libavresample   3.  7.  0 /  3.  7.  0
     libswscale      4.  8.100 /  4.  8.100
     libswresample   2.  9.100 /  2.  9.100
     libpostproc    54.  7.100 / 54.  7.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
    Reading option '-dump' ... matched as option 'dump' (dump each input packet) with argument '1'.
    Reading option '-protocol_whitelist' ...1512775954589 - stderr:  matched as AVOption 'protocol_whitelist' with argument 'file,crypto,udp,rtp,data'.
    Reading option '-analyzeduration' ...1512775954590 - stderr:  matched as AVOption 'analyzeduration' with argument '20M'.
    Reading option '-probesize' ...1512775954590 - stderr:  matched as AVOption 'probesize' with argument '20M'.
    Reading option '-i' ... matched as input url with argument 'data:text/plain;base64,dj0wCm89LSAwIDAgSU4gSVA0IDEyNy4wLjAuMQpzPWUwYzkyZmEwLWRhZDUtMTFlNy04Njg3LTA5MGRkYTk1YjFhNCBmb29ib2FyCmM9SU4gSVA0IDEyNy4wLjAuMQptPWF1ZGlvIDIwMDAwIFJUUC9BVlBGIDEwMAphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAwIG9wdXMvNDgwMDAvMgphPWZtdHA6MTAwIG1pbnB0aW1lPTEwOyB1c2VpbmJhbmRmZWM9MQptPXZpZGVvIDIwMDAyIFJUUC9BVlBGIDEwMQphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAxIEgyNjQvOTAwMDAKYT1ydGNwLWZiOjEwMSBjY20gZmlyCmE9cnRjcC1mYjoxMDEgbmFjawphPXJ0Y3AtZmI6MTAxIG5hY2sgcGxpCmE9cnRjcC1mYjoxMDEgZ29vZy1yZW1iCmE9cnRjcC1mYjoxMDEgdHJhbnNwb3J0LWNjCmE9Zm10cDoxMDEgbGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZgo='.
    Reading option '-fflags' ...1512775954591 - stderr:  matched as AVOption 'fflags' with argument '+genpts'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'copy'.
    Reading option '-acodec' ... matched as option 'acodec' (force audio codec ('copy' to copy stream)) with argument 'aac'.
    Reading option '-vsync' ... matched as option 'vsync' (video sync method) with argument '0'.
    Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:0,0:1'.
    Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:1,0:1'.
    Reading option '-bsf:v' ... matched as option 'bsf' (A comma-separated list of bitstream filters) with argument 'h264_mp4toannexb'.
    Reading option '-start_number' ...1512775954591 - stderr:  matched as AVOption 'start_number' with argument '0'.
    Reading option '-hls_list_size' ...1512775954591 - stderr:  matched as AVOption 'hls_list_size' with argument '2147480000'.
    Reading option '-hls_wrap' ... matched as AVOption 'hls_wrap' with argument '0'.
    Reading option '-hls_time' ...1512775954591 - stderr:  matched as AVOption 'hls_time' with argument '10'.
    Reading option '/tmp/archive/e0c92fa0-dad5-11e7-8687-090dda95b1a4_10e1c990-dc70-11e7-888d-9f39ca0c79bc/1512775954465.m3u8' ... matched as output url.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    1512775954592 - stderr: Applying option loglevel (set logging level) with argument debug.
    Applying option dump (dump each input packet) with argument 1.
    Applying option vsync (video sync method) with argument 0.
    Successfully parsed a group of options.
    Parsing a group of options: input url data:text/plain;base64,dj0wCm89LSAwIDAgSU4gSVA0IDEyNy4wLjAuMQpzPWUwYzkyZmEwLWRhZDUtMTFlNy04Njg3LTA5MGRkYTk1YjFhNCBmb29ib2FyCmM9SU4gSVA0IDEyNy4wLjAuMQptPWF1ZGlvIDIwMDAwIFJUUC9BVlBGIDEwMAphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAwIG9wdXMvNDgwMDAvMgphPWZtdHA6MTAwIG1pbnB0aW1lPTEwOyB1c2VpbmJhbmRmZWM9MQptPXZpZGVvIDIwMDAyIFJUUC9BVlBGIDEwMQphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAxIEgyNjQvOTAwMDAKYT1ydGNwLWZiOjEwMSBjY20gZmlyCmE9cnRjcC1mYjoxMDEgbmFjawphPXJ0Y3AtZmI6MTAxIG5hY2sgcGxpCmE9cnRjcC1mYjoxMDEgZ29vZy1yZW1iCmE9cnRjcC1mYjoxMDEgdHJhbnNwb3J0LWNjCmE9Zm10cDoxMDEgbGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZgo=.
    Successfully parsed a group of options.
    Opening an input file: data:text/plain;base64,dj0wCm89LSAwIDAgSU4gSVA0IDEyNy4wLjAuMQpzPWUwYzkyZmEwLWRhZDUtMTFlNy04Njg3LTA5MGRkYTk1YjFhNCBmb29ib2FyCmM9SU4gSVA0IDEyNy4wLjAuMQptPWF1ZGlvIDIwMDAwIFJUUC9BVlBGIDEwMAphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAwIG9wdXMvNDgwMDAvMgphPWZtdHA6MTAwIG1pbnB0aW1lPTEwOyB1c2VpbmJhbmRmZWM9MQptPXZpZGVvIDIwMDAyIFJUUC9BVlBGIDEwMQphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAxIEgyNjQvOTAwMDAKYT1ydGNwLWZiOjEwMSBjY20gZmlyCmE9cnRjcC1mYjoxMDEgbmFjawphPXJ0Y3AtZmI6MTAxIG5hY2sgcGxpCmE9cnRjcC1mYjoxMDEgZ29vZy1yZW1iCmE9cnRjcC1mYjoxMDEgdHJhbnNwb3J0LWNjCmE9Zm10cDoxMDEgbGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZgo=.
    1512775954592 - stderr: [NULL @ 0x7f81fd000000] Opening 'data:text/plain;base64,dj0wCm89LSAwIDAgSU4gSVA0IDEyNy4wLjAuMQpzPWUwYzkyZmEwLWRhZDUtMTFlNy04Njg3LTA5MGRkYTk1YjFhNCBmb29ib2FyCmM9SU4gSVA0IDEyNy4wLjAuMQptPWF1ZGlvIDIwMDAwIFJUUC9BVlBGIDEwMAphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAwIG9wdXMvNDgwMDAvMgphPWZtdHA6MTAwIG1pbnB0aW1lPTEwOyB1c2VpbmJhbmRmZWM9MQptPXZpZGVvIDIwMDAyIFJUUC9BVlBGIDEwMQphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAxIEgyNjQvOTAwMDAKYT1ydGNwLWZiOjEwMSBjY20gZmlyCmE9cnRjcC1mYjoxMDEgbmFjawphPXJ0Y3AtZmI6MTAxIG5hY2sgcGxpCmE9cnRjcC1mYjoxMDEgZ29vZy1yZW1iCmE9cnRjcC1mYjoxMDEgdHJhbnNwb3J0LWNjCmE9Zm10cDoxMDEgbGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZgo=' for reading
    1512775954593 - stderr: [data @ 0x7f81fca001a0] Content-type: text/plain
    {"level":"info","time":"Dec 8, 2017 11:32 PM","message":"ffmpeg started"}
    1512775954595 - stderr: [sdp @ 0x7f81fd000000] Format sdp probed with size=2048 and score=50
    1512775954598 - stderr: [sdp @ 0x7f81fd000000] audio codec set to: opus
    [sdp @ 0x7f81fd000000] audio samplerate set to: 48000
    [sdp @ 0x7f81fd000000] audio channels set to: 2
    1512775954639 - stderr: [sdp @ 0x7f81fd000000] video codec set to: h264
    [sdp @ 0x7f81fd000000] RTP Packetization Mode: 1
    [sdp @ 0x7f81fd000000] RTP Profile IDC: 42 Profile IOP: e0 Level: 1f
    [udp @ 0x7f81fcb007e0] end receive buffer size reported is 65536
    [udp @ 0x7f81fbe00180] end receive buffer size reported is 65536
    [sdp @ 0x7f81fd000000] setting jitter buffer size to 500
    [udp @ 0x7f81fbe00680] end receive buffer size reported is 65536
    [udp @ 0x7f81fbe00740] end receive buffer size reported is 65536
    [sdp @ 0x7f81fd000000] setting jitter buffer size to 500
    [sdp @ 0x7f81fd000000] Before avformat_find_stream_info() pos: 479 bytes read:479 seeks:0 nb_streams:2
    {"level":"info","time":"Dec 8, 2017 11:32 PM","message":"new active speaker","activePeer":"9f05d96a-9641-4c63-8f0e-486b98e48eb5"}
    1512775954773 - stderr: [AVBSFContext @ 0x7f81fc8018e0] nal_unit_type: 7, nal_ref_idc: 3
    [AVBSFContext @ 0x7f81fc8018e0] nal_unit_type: 8, nal_ref_idc: 3
    [AVBSFContext @ 0x7f81fc8018e0] nal_unit_type: 5, nal_ref_idc: 3
    1512775954774 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 7, nal_ref_idc: 3
    1512775954774 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 8, nal_ref_idc: 3
    1512775954774 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 5, nal_ref_idc: 3
    1512775954774 - stderr: [h264 @ 0x7f8200000c00] Reinit context to 640x480, pix_fmt: yuv420p
    1512775954801 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 1, nal_ref_idc: 3
    1512775954939 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 7, nal_ref_idc: 3
    1512775954939 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 8, nal_ref_idc: 3
    1512775954940 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 5, nal_ref_idc: 3
    1512775955003 - stderr: [h264 @ 0x7f8200000c00] nal_unit_type: 1, nal_ref_idc: 3
    1512775955999 - stderr:     Last message repeated 3 times
    [sdp @ 0x7f81fd000000] All info found
    1512775955999 - stderr: [sdp @ 0x7f81fd000000] rfps: 29.750000 0.019566
    [sdp @ 0x7f81fd000000] rfps: 29.833333 0.015263
    [sdp @ 0x7f81fd000000] rfps: 29.916667 0.011503
    1512775955999 - stderr: [sdp @ 0x7f81fd000000] rfps: 30.000000 0.008285
    [sdp @ 0x7f81fd000000] rfps: 31.000000 0.011990
       Last message repeated 1 times
    [sdp @ 0x7f81fd000000] rfps: 29.970030 0.009380
    [sdp @ 0x7f81fd000000] After avformat_find_stream_info() pos: 479 bytes read:479 seeks:0 frames:98
    1512775956000 - stderr: Input #0, sdp, from 'data:text/plain;base64,dj0wCm89LSAwIDAgSU4gSVA0IDEyNy4wLjAuMQpzPWUwYzkyZmEwLWRhZDUtMTFlNy04Njg3LTA5MGRkYTk1YjFhNCBmb29ib2FyCmM9SU4gSVA0IDEyNy4wLjAuMQptPWF1ZGlvIDIwMDAwIFJUUC9BVlBGIDEwMAphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAwIG9wdXMvNDgwMDAvMgphPWZtdHA6MTAwIG1pbnB0aW1lPTEwOyB1c2VpbmJhbmRmZWM9MQptPXZpZGVvIDIwMDAyIFJUUC9BVlBGIDEwMQphPXNlbmRyZWN2CmE9cnRjcC1tdXgKYT1ydHBtYXA6MTAxIEgyNjQvOTAwMDAKYT1ydGNwLWZiOjEwMSBjY20gZmlyCmE9cnRjcC1mYjoxMDEgbmFjawphPXJ0Y3AtZmI6MTAxIG5hY2sgcGxpCmE9cnRjcC1mYjoxMDEgZ29vZy1yZW1iCmE9cnRjcC1mYjoxMDEgdHJhbnNwb3J0LWNjCmE9Zm10cDoxMDEgbGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZgo=':
    1512775956000 - stderr:   Metadata:
       title           : e0c92fa0-dad5-11e7-8687-090dda95b1a4 fooboar
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0, 70, 1/48000: Audio: opus, 48000 Hz, stereo, fltp1512775956000 - stderr:
       Stream #0:1, 28, 1/90000: Video: h264 (Constrained Baseline), 1 reference frame, yuv420p(progressive, left), 640x480, 0/1, 30 tbr, 90k tbn, 180k tbc
    1512775956000 - stderr: Successfully opened the file.
    Parsing a group of options: output url /tmp/archive/e0c92fa0-dad5-11e7-8687-090dda95b1a4_10e1c990-dc70-11e7-888d-9f39ca0c79bc/1512775954465.m3u8.
    Applying option vcodec (force video codec ('copy' to copy stream)) with argument copy.
    Applying option acodec (force audio codec ('copy' to copy stream)) with argument aac.
    Applying option map (set input stream mapping) with argument 0:0,0:1.
    Applying option map (set input stream mapping) with argument 0:1,0:1.
    Applying option bsf:v (A comma-separated list of bitstream filters) with argument h264_mp4toannexb.
    Successfully parsed a group of options.
    1512775956000 - stderr: Opening an output file: /tmp/archive/e0c92fa0-dad5-11e7-8687-090dda95b1a4_10e1c990-dc70-11e7-888d-9f39ca0c79bc/1512775954465.m3u8.
    1512775956000 - stderr: Successfully opened the file.
    1512775956001 - stderr: [AVBSFContext @ 0x7f81fcb020a0] The input looks like it is Annex B already
    Stream mapping:
    1512775956001 - stderr:   Stream #0:0 -> #0:0 [sync #0:1] (opus (native) -> aac (native))
     Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.000  pts=0.000
     size=82
    1512775956001 - stderr: [SWR @ 0x7f820001e600] Using fltp internally between filters
    1512775956002 - stderr: detected 8 logical cores
    1512775956003 - stderr: [graph_0_in_0_0 @ 0x7f81fc90dfc0] Setting 'time_base' to value '1/48000'
    [graph_0_in_0_0 @ 0x7f81fc90dfc0] Setting 'sample_rate' to value '48000'
    1512775956003 - stderr: [graph_0_in_0_0 @ 0x7f81fc90dfc0] Setting 'sample_fmt' to value 'fltp'
    [graph_0_in_0_0 @ 0x7f81fc90dfc0] Setting 'channel_layout' to value '0x3'
    [graph_0_in_0_0 @ 0x7f81fc90dfc0] tb:1/48000 samplefmt:fltp samplerate:48000 chlayout:0x3
    [format_out_0_0 @ 0x7f81fc914da0] Setting 'sample_fmts' to value 'fltp'
    [format_out_0_0 @ 0x7f81fc914da0] Setting 'sample_rates' to value '96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000|7350'
    1512775956004 - stderr: [AVFilterGraph @ 0x7f81fbd02200] query_formats: 4 queried, 9 merged, 0 already done, 0 delayed
    1512775956007 - stderr: [hls @ 0x7f81fd80f000] Opening '/tmp/archive/e0c92fa0-dad5-11e7-8687-090dda95b1a4_10e1c990-dc70-11e7-888d-9f39ca0c79bc/15127759544650.ts' for writing
    [file @ 0x7f81fbf01ee0] Setting default whitelist 'file,crypto'
    1512775956007 - stderr: [mpegts @ 0x7f81fd877800] muxrate VBR, pcr every 9000 pkts, sdt every 2147483647, pat/pmt every 2147483647 pkts
    Output #0, hls, to '/tmp/archive/e0c92fa0-dad5-11e7-8687-090dda95b1a4_10e1c990-dc70-11e7-888d-9f39ca0c79bc/1512775954465.m3u8':
     Metadata:
       title           : e0c92fa0-dad5-11e7-8687-090dda95b1a4 fooboar
       encoder         : Lavf57.83.100
    1512775956007 - stderr:     Stream #0:0, 0, 1/90000: Audio: aac (LC), 48000 Hz, stereo, fltp, delay 1024, 128 kb/s
       Metadata:
         encoder         : Lavc57.107.100 aac
       Stream #0:1, 0, 1/90000: Video: h264 (Constrained Baseline), 1 reference frame, yuv420p(progressive, left), 640x480 (0x0), 0/1, q=2-31, 30 tbr, 90k tbn, 90k tbc
    cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    1512775956007 - stderr:     Last message repeated 1 times
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.020  pts=0.020
     size=79
    1512775956007 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
       Last message repeated 1 times
    stream #0:
     keyframe=1
     duration=0.000
    1512775956007 - stderr:   dts=0.040  pts=0.040
     size=75
    1512775956014 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.0601512775956014 - stderr:   pts=0.060
     size=81
    1512775956017 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.080  pts=0.080
     size=76
    1512775956022 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.1001512775956022 - stderr:   pts=0.100
     size=79
    1512775956023 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    stream #0:
     keyframe=1
    1512775956023 - stderr:   duration=0.000
     dts=0.120  pts=0.120
     size=95
    1512775956024 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    1512775956024 - stderr: stream #0:
     keyframe=1
     duration=0.000
     dts=0.140  pts=0.140
     size=93
    1512775956025 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    stream #0:
     keyframe=1
    1512775956025 - stderr:   duration=0.000
     dts=0.160  pts=0.160
     size=94
    1512775956026 - stderr: cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    stream #1:
     keyframe=1
    1512775956026 - stderr:   duration=0.000
     dts=N/A  pts=N/A
     size=992
    [hls @ 0x7f81fd80f000] Timestamps are unset in a packet for stream 1. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
    1512775956026 - stderr: stream #0:
     keyframe=1
     duration=0.000
    1512775956026 - stderr:   dts=0.180  pts=0.180
     size=108
    1512775956027 - stderr: stream #1:
     keyframe=0
     duration=0.000
    1512775956027 - stderr:   dts=0.002  pts=0.002
     size=3047
    [hls @ 0x7f81fd80f000] pkt->duration = 0, maybe the hls segment duration will not precise
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.200  pts=0.200
     size=89
    1512775956060 - stderr: stream #0:
     keyframe=1
     duration=0.000
     dts=0.220  pts=0.220
     size=73
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.240  pts=0.240
     size=78
    stream #0:
     keyframe=1
     duration=0.000
     dts=0.260  pts=0.260

    Notice how the first frame for stream #1 (video) starts after a number of audio frames ? Specifically, it starts at stream #0 dts/pts 0.18. In this situation, the a/v sync issue is pretty much unnoticeable, but with a bunch of repros, I’ve determined that the a/v sync offset is always the duration of however long audio frames were sent before the first video frame (sometimes seconds). I’m consistently starting the RTP streams only tens of ms apart, so I can’t control for this variance on the input side.

    After the initial audio frames come in, the first video frame has a dts/pts around 0. What ffmpeg setting would I use to adjust the timestamps accordingly ? I don’t care about losing the starting audio that doesn’t have video, so any solution that would adjust the timestamps works.