
Recherche avancée
Médias (29)
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#3 The Safest Place
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#4 Emo Creates
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#2 Typewriter Dance
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (68)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Possibilité de déploiement en ferme
12 avril 2011, parMediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...) -
Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs
12 avril 2011, parLa manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.
Sur d’autres sites (12295)
-
FFMPEG to create an MPEG-DASH stream with VP8
16 septembre 2019, par Kenny WordenI’m trying to use FFMPEG to stream a live video feed from my webcam
/dev/video0
. Following scattered tutorials and scarce documentation (is this a known problem for the encoding community ?) I arrived at the following bash script :#!/bin/bash
ffmpeg \
-y \
-f v4l2 \
-i /dev/video0 \
-s 640x480 \
-input_format mjpeg \
-r 24 \
-map 0:0 \
-pix_fmt yuv420p \
-codec:v libvpx \
-s 640x480 \
-threads 4 \
-b:v 50k \
-tile-columns 4 \
-frame-parallel 1 \
-keyint_min 24 -g 24 \
-f webm_chunk \
-header "stream.hdr" \
-chunk_start_index 1 \
stream_%d.chk &
sleep 2
ffmpeg \
-f webm_dash_manifest -live 1 \
-i stream.hdr \
-c copy \
-map 0 \
-f webm_dash_manifest -live 1 \
-adaptation_sets "id=0,streams=0" \
-chunk_start_index 1 \
-chunk_duration_ms 1000 \
-time_shift_buffer_depth 30000 \
-minimum_update_period 60000 \
stream_manifest.mpdWhen I run this script, my webcam light turns on, the
stream.hdr
andstream_manifest.mpd
files are written, and chunks start to be created (i.e.stream_1.chk
,stream_2.chk
, etc...). However, FFMPEG throws the following error :Could not write header for output file #0 (incorrect codec parameters
?) : Invalid data found when processing inputI will explain what I think I am doing with this script, and hopefully this will expose any errors in my thinking.
First, we invoke FFMPEG to use Video for Linux 2 (v4l2) to read from my webcam (
/dev/video0
) of a resolution 640x480. The input format ismjpeg
with a framerate of 24fps.I then declare that FFMPEG should "map" (copy) the video stream output by v4l2 to a file. I specify the pixel format (YUV420P) and use libvpx (VP8 encoding) to encode the video stream. I set the size to be 640x480, use 4 threads, set the bitrate to be 50kbps, do some magic with tile-columns and frame-parallel options, and set the I-frames to be 24 frames apart.
I then create a
stream.hdr
file. The starting index is 1. This command continues to run infinitely until I kill it, grabbing new video from my webcam and outputting it into chunks.I then sleep for 2 seconds to give the previous command time to generate a header file.
And that’s really it. The next invocation of FFMPEG simply creates the MPEG-DASH manifest file given the header generated in the previous step.
So what’s going on ? Why can I not view the video in a web browser (I’m using Dash.js) ? I serve the manifest, header, and chunks on a Node.js server so that trivial issue is not the problem.
Edit : Here is my full console output.
ffmpeg version 3.0.7-0ubuntu0.16.10.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.2.0 (Ubuntu 6.2.0-5ubuntu12) 20161005
configuration: --prefix=/usr --extra-version=0ubuntu0.16.10.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librubberband --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-chromaprint --enable-libx264
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
[video4linux2,v4l2 @ 0x55847e244ea0] The driver changed the time per frame from 1/24 to 1/30
[mjpeg @ 0x55847e245c00] Changing bps to 8
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 64305.102081, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 640x480, -5 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
Codec AVOption frame-parallel (Enable frame parallel decodability features) specified for output file #0 (stream_%d.chk) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Codec AVOption tile-columns (Number of tile columns to use, log2) specified for output file #0 (stream_%d.chk) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[swscaler @ 0x55847e24b720] deprecated pixel format used, make sure you did set range correctly
[libvpx @ 0x55847e248a20] v1.5.0
Output #0, webm_chunk, to 'stream_%d.chk':
Metadata:
encoder : Lavf57.25.100
Stream #0:0: Video: vp8 (libvpx), yuv420p, 640x480, q=-1--1, 50 kb/s, 30 fps, 30 tbn, 30 tbc
Metadata:
encoder : Lavc57.24.102 libvpx
Side data:
unknown side data type 10 (24 bytes)
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> vp8 (libvpx))
Press [q] to stop, [?] for help
frame= 21 fps=0.0 q=0.0 size=N/A time=00:00:00.70 bitrate=N/A dup=5 drop=frame= 36 fps= 35 q=0.0 size=N/A time=00:00:01.20 bitrate=N/A dup=5 drop=frame= 51 fps= 33 q=0.0 size=N/A time=00:00:01.70 bitrate=N/A dup=5 drop=ffmpeg version 3.0.7-0ubuntu0.16.10.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.2.0 (Ubuntu 6.2.0-5ubuntu12) 20161005
configuration: --prefix=/usr --extra-version=0ubuntu0.16.10.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librubberband --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-chromaprint --enable-libx264
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
Input #0, webm_dash_manifest, from 'stream.hdr':
Metadata:
encoder : Lavf57.25.100
Duration: N/A, bitrate: N/A
Stream #0:0: Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
Metadata:
webm_dash_manifest_file_name: stream.hdr
webm_dash_manifest_track_number: 1
Output #0, webm_dash_manifest, to 'stream_manifest.mpd':
Metadata:
encoder : Lavf57.25.100
Stream #0:0: Video: vp8, yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
Metadata:
webm_dash_manifest_file_name: stream.hdr
webm_dash_manifest_track_number: 1
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input
frame= 67 fps= 33 q=0.0 size
frame= 82 fps= 32 q=0.0 size=N/A time=00:00:02.73 bitrate=N/A dup=5 drop=
frame= 97 fps= 32 q=0.0 size=N/A time=00:00:03.23 bitrate=N/A dup=5 drop=
frame= 112 fps= 32 q=0.0 size=N/A time=00:00:03.73 bitrate=N/A dup=5 ... -
FFMPEG, Creating an MPEG-DASH stream with existing inputs
10 septembre 2019, par kitenseiI am trying to generating a
DASH .mpd
file from multiple inputs (2 videos, 1 audio) without any success..What I’d like to do it’s simple getting the streams and create an mpd file without any re encoding since I’ve already my sources ready.
The output seems to work in rxplayer, but I do get a lot of errors (see log below).
Here are my 3 sources (taken from http://dash-mse-test.appspot.com/media.html) :
➜ test-dash $ ffprobe -hide_banner ../test-sources/car/car-20120827-89.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '../test-sources/car/car-20120827-89.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
creation_time : 2012-08-24T03:04:15.000000Z
Duration: 00:03:01.39, start: 0.000000, bitrate: 4202 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, 171 kb/s, 23.97 fps, 23.97 tbr, 90k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2012-08-24T03:04:15.000000Z
handler_name : VideoHandler
➜ test-dash $ ffprobe -hide_banner ../test-sources/car/car-20120827-88.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '../test-sources/car/car-20120827-88.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
creation_time : 2012-08-27T01:01:28.000000Z
Duration: 00:03:01.43, start: 0.000000, bitrate: 2076 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720, 81 kb/s, 23.97 fps, 23.97 tbr, 90k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2012-08-27T01:01:28.000000Z
handler_name : VideoHandler
➜ test-dash $ ffprobe -hide_banner ../test-sources/car/car-20120827-8b.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '../test-sources/car/car-20120827-8b.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6mp41
creation_time : 2012-08-27T01:19:23.000000Z
Duration: 00:03:01.63, start: 0.000000, bitrate: 31 kb/s
Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 1 kb/s (default)
Metadata:
creation_time : 2012-08-27T01:19:23.000000Z
handler_name : SoundHandlerAnd here how I am "muxing" them together with an .mpd manifest :
ffmpeg \
-re \
-i ../test-sources/car/car-20120827-88.mp4 \
-i ../test-sources/car/car-20120827-89.mp4 \
-i ../test-sources/car/car-20120827-8d.mp4 \
-map 0:0 \
-map 1:0 \
-map 2:0 \
-c copy \
-bf 1 -keyint_min 120 -g 120 -sc_threshold 0 \
-b_strategy 0 -use_timeline 1 -use_template 1 \
-adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash out.mpdThe generated
mpd
file :<?xml version="1.0" encoding="utf-8"?>
<mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediapresentationduration="PT3M1.3S" minbuffertime="PT10.0S">
<programinformation>
</programinformation>
<period start="PT0.0S">
<adaptationset contenttype="video" segmentalignment="true" bitstreamswitching="true" lang="und">
<representation mimetype="video/mp4" codecs="avc1.4d401f" bandwidth="81397" width="1280" height="720" framerate="45000/1877">
<segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
<segmenttimeline>
<s t="0" d="120128"></s>
<s d="120120" r="34"></s>
<s d="29023"></s>
</segmenttimeline>
</segmenttemplate>
</representation>
<representation mimetype="video/mp4" codecs="avc1.640028" bandwidth="171953" width="1920" height="1080" framerate="45000/1877">
<segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
<segmenttimeline>
<s t="0" d="121129"></s>
<s d="239239"></s>
<s d="120120" r="32"></s>
<s d="29023"></s>
</segmenttimeline>
</segmenttemplate>
</representation>
</adaptationset>
<adaptationset contenttype="audio" segmentalignment="true" bitstreamswitching="true" lang="und">
<representation mimetype="audio/mp4" codecs="mp4a.40.2" bandwidth="13976" audiosamplingrate="44100">
<audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></audiochannelconfiguration>
<segmenttemplate timescale="44100" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
<segmenttimeline>
<s t="0" d="219136"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184" r="1"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184" r="1"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184" r="1"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="221184"></s>
<s d="220160"></s>
<s d="63488"></s>
</segmenttimeline>
</segmenttemplate>
</representation>
</adaptationset>
</period>
</mpd>But I get a lot of errors :
➜ test-dash git:(0.1) ✗ ffmpeg \
-re \
-i ../test-sources/car/car-20120827-88.mp4 \
-i ../test-sources/car/car-20120827-89.mp4 \
-i ../test-sources/car/car-20120827-8d.mp4 \
-map 0:0 \
-map 1:0 \
-map 2:0 \
-c copy \
-bf 1 -keyint_min 120 -g 120 -sc_threshold 0 \
-b_strategy 0 -use_timeline 1 -use_template 1 \
-adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash out.mpd
ffmpeg version n4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --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-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '../test-sources/car/car-20120827-88.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
creation_time : 2012-08-27T01:01:28.000000Z
Duration: 00:03:01.43, start: 0.000000, bitrate: 2076 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720, 81 kb/s, 23.97 fps, 23.97 tbr, 90k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2012-08-27T01:01:28.000000Z
handler_name : VideoHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '../test-sources/car/car-20120827-89.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
creation_time : 2012-08-24T03:04:15.000000Z
Duration: 00:03:01.39, start: 0.000000, bitrate: 4202 kb/s
Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, 171 kb/s, 23.97 fps, 23.97 tbr, 90k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2012-08-24T03:04:15.000000Z
handler_name : VideoHandler
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from '../test-sources/car/car-20120827-8d.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6mp41
creation_time : 2012-08-27T00:59:44.000000Z
Duration: 00:03:01.58, start: 0.000000, bitrate: 255 kb/s
Stream #2:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 13 kb/s (default)
Metadata:
creation_time : 2012-08-27T00:59:44.000000Z
handler_name : SoundHandler
[dash @ 0x55b464bb1240] Opening 'init-stream0.m4s' for writing
[dash @ 0x55b464bb1240] Opening 'init-stream1.m4s' for writing
[dash @ 0x55b464bb1240] Opening 'init-stream2.m4s' for writing
Output #0, dash, to 'out.mpd':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
encoder : Lavf58.29.100
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720, q=2-31, 81 kb/s, 23.97 fps, 23.97 tbr, 24k tbn, 23.98 tbc (default)
Metadata:
creation_time : 2012-08-27T01:01:28.000000Z
handler_name : VideoHandler
Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=2-31, 171 kb/s, 23.97 fps, 23.97 tbr, 24k tbn, 23.98 tbc (default)
Metadata:
creation_time : 2012-08-24T03:04:15.000000Z
handler_name : VideoHandler
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 13 kb/s (default)
Metadata:
creation_time : 2012-08-27T00:59:44.000000Z
handler_name : SoundHandler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #1:0 -> #0:1 (copy)
Stream #2:0 -> #0:2 (copy)
Press [q] to stop, [?] for help
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00001.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00001.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00001.m4s.tmp' for writing
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 119119 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00002.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Non-monotonous DTS in output stream 0:1; previous: 119127, current: 119119; changing to 119128. This may result in incorrect timestamps in the output file.
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -1000 / timestamp: 119128 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00002.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00002.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 120120 is out of range for mov/mp4 format
[mp4 @ 0x55b464c425c0] pts has no value
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 239239 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00003.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00003.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing74 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 359359 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00004.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 359359 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00003.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00004.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing81 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 479479 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00005.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 479479 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00004.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00005.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing86 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 599599 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00006.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 599599 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00005.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00006.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing95 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 719719 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00007.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 719719 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00006.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00007.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing53 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 839839 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00008.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 839839 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00007.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00008.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing59 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 959959 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00009.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 959959 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00008.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00009.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing66 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 1080079 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00010.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 1080079 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00009.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00010.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing73 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 1200199 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00011.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 1200199 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00010.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00011.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing82 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 1320319 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00012.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 1320319 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00011.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00012.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing90 bitrate=N/A speed= 1x
...
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 3962959 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00033.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00034.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing06 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 4083079 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00035.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 4083079 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00034.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00035.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing10 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 4203199 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00036.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 4203199 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00035.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00036.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing67 bitrate=N/A speed= 1x
[mp4 @ 0x55b464c3d840] Application provided duration: -8 / timestamp: 4323319 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream0-00037.m4s.tmp' for writing
[mp4 @ 0x55b464c425c0] Application provided duration: -8 / timestamp: 4323319 is out of range for mov/mp4 format
[dash @ 0x55b464bb1240] Opening 'chunk-stream1-00036.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'chunk-stream2-00037.m4s.tmp' for writing
[dash @ 0x55b464bb1240] Opening 'out.mpd.tmp' for writing18 bitrate=N/A speed= 1x
frame= 4350 fps= 24 q=-1.0 Lq=-1.0 size=N/A time=00:03:01.55 bitrate=N/A speed= 1x
video:138926kB audio:5621kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown -
Having trouble compiling ffmpeg code in command terminal
10 septembre 2019, par m00ncakeI am having a bit of trouble compiling my c++ code in my terminal. I have ffmpeg installed as shown below.
ffmpeg version n4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --enable-gpl --enable-version3 --disable-static --enable-shared --enable-small --enable-avisynth --enable-chromaprint --enable-frei0r --enable-gmp --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-librtmp --enable-libshine --enable-libsmbclient --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-libmysofa --enable-openal --enable-opencl --enable-opengl --enable-libdrm
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...However, when I compile my c++ code, currently trying to get NTP timestamps from private data in ffmpeg but I need to include their headers ? I have looked into ffmpeg’s
libavformat
folder and it does havertpdec.h
but when I compile it in the command line, i get this error. (trying to include this header forRTSPState
andRTSPStream
as well asRTPDemuxContext
)cf.cpp:11:10: fatal error: libavformat/rtsp.h: No such file or directory
#include <libavformat></libavformat>rtpdec.h>
^~~~~~~~~~~~~~~~~~~~
compilation terminated.This is my code :
#include
#include
#include <iostream>
#include <fstream>
#include <sstream>
extern "C" {
#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#include <libavformat></libavformat>avio.h>
#include <libavformat></libavformat>rtpdec.h>
#include <libswscale></libswscale>swscale.h>
}
int main(int argc, char** argv) {
// Open the initial context variables that are needed
SwsContext *img_convert_ctx;
AVFormatContext* format_ctx = avformat_alloc_context();
AVCodecContext* codec_ctx = NULL;
int video_stream_index;
uint32_t* last_rtcp_ts;
double* base_time;
double* time;
// Register everything
av_register_all();
avformat_network_init();
//open RTSP
if (avformat_open_input(&format_ctx, "rtsp://admin:password@192.168.1.67:554",
NULL, NULL) != 0) {
return EXIT_FAILURE;
}
if (avformat_find_stream_info(format_ctx, NULL) < 0) {
return EXIT_FAILURE;
}
//search video stream
for (int i = 0; i < format_ctx->nb_streams; i++) {
if (format_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
video_stream_index = i;
}
AVPacket packet;
av_init_packet(&packet);
//open output file
AVFormatContext* output_ctx = avformat_alloc_context();
AVStream* stream = NULL;
int cnt = 0;
//start reading packets from stream and write them to file
av_read_play(format_ctx); //play RTSP
// Get the codec
AVCodec *codec = NULL;
codec = avcodec_find_decoder(AV_CODEC_ID_H264);
if (!codec) {
exit(1);
}
// Add this to allocate the context by codec
codec_ctx = avcodec_alloc_context3(codec);
avcodec_get_context_defaults3(codec_ctx, codec);
avcodec_copy_context(codec_ctx, format_ctx->streams[video_stream_index]->codec);
std::ofstream output_file;
if (avcodec_open2(codec_ctx, codec, NULL) < 0)
exit(1);
img_convert_ctx = sws_getContext(codec_ctx->width, codec_ctx->height,
codec_ctx->pix_fmt, codec_ctx->width, codec_ctx->height, AV_PIX_FMT_RGB24,
SWS_BICUBIC, NULL, NULL, NULL);
int size = avpicture_get_size(AV_PIX_FMT_YUV420P, codec_ctx->width,
codec_ctx->height);
uint8_t* picture_buffer = (uint8_t*) (av_malloc(size));
AVFrame* picture = av_frame_alloc();
AVFrame* picture_rgb = av_frame_alloc();
int size2 = avpicture_get_size(AV_PIX_FMT_RGB24, codec_ctx->width,
codec_ctx->height);
uint8_t* picture_buffer_2 = (uint8_t*) (av_malloc(size2));
avpicture_fill((AVPicture *) picture, picture_buffer, AV_PIX_FMT_YUV420P,
codec_ctx->width, codec_ctx->height);
avpicture_fill((AVPicture *) picture_rgb, picture_buffer_2, AV_PIX_FMT_RGB24,
codec_ctx->width, codec_ctx->height);
while (av_read_frame(format_ctx, &packet) >= 0 && cnt < 1000) { //read ~ 1000 frames
RTSPState* rt = format_ctx->priv_data;
RTSPStream *rtsp_stream = rt->rtsp_streams[0];
RTPDemuxContext* rtp_demux_context = rtsp_stream->transport_priv;
uint32_t new_rtcp_ts = rtp_demux_context->last_rtcp_timestamp;
uint64_t last_ntp_time = 0;
if (new_rtcp_ts != *last_rtcp_ts) {
*last_rtcp_ts = new_rtcp_ts;
last_ntp_time = rtp_demux_context->last_rtcp_ntp_time;
uint32_t seconds = ((last_ntp_time >> 32) & 0xffffffff) - 2208988800;
uint32_t fraction = (last_ntp_time & 0xffffffff);
double useconds = ((double) fraction / 0xffffffff);
*base_time = seconds + useconds;
uint32_t d_ts = rtp_demux_context->timestamp - *last_rtcp_ts;
*time = *base_time + d_ts / 90000.0;
std::cout << "Time is: " << *time << std::endl;
}
std::cout << "1 Frame: " << cnt << std::endl;
if (packet.stream_index == video_stream_index) { //packet is video
std::cout << "2 Is Video" << std::endl;
if (stream == NULL) { //create stream in file
std::cout << "3 create stream" << std::endl;
stream = avformat_new_stream(output_ctx,
format_ctx->streams[video_stream_index]->codec->codec);
avcodec_copy_context(stream->codec,
format_ctx->streams[video_stream_index]->codec);
stream->sample_aspect_ratio =
format_ctx->streams[video_stream_index]->codec->sample_aspect_ratio;
}
int check = 0;
packet.stream_index = stream->id;
std::cout << "4 decoding" << std::endl;
int result = avcodec_decode_video2(codec_ctx, picture, &check, &packet);
std::cout << "Bytes decoded " << result << " check " << check
<< std::endl;
if (cnt > 100) //cnt < 0)
{
sws_scale(img_convert_ctx, picture->data, picture->linesize, 0,
codec_ctx->height, picture_rgb->data, picture_rgb->linesize);
std::stringstream file_name;
file_name << "test" << cnt << ".ppm";
output_file.open(file_name.str().c_str());
output_file << "P3 " << codec_ctx->width << " " << codec_ctx->height
<< " 255\n";
for (int y = 0; y < codec_ctx->height; y++) {
for (int x = 0; x < codec_ctx->width * 3; x++)
output_file
<< (int) (picture_rgb->data[0]
+ y * picture_rgb->linesize[0])[x] << " ";
}
output_file.close();
}
cnt++;
}
av_free_packet(&packet);
av_init_packet(&packet);
}
av_free(picture);
av_free(picture_rgb);
av_free(picture_buffer);
av_free(picture_buffer_2);
av_read_pause(format_ctx);
avio_close(output_ctx->pb);
avformat_free_context(output_ctx);
return (EXIT_SUCCESS);
}
</sstream></fstream></iostream>The command i use to compile my code :
g++ -w cf.cpp -o cf $(pkg-config --cflags --libs libavformat libswscale libavcodec)
I am a bit new to coding in FFmpeg.