Recherche avancée

Médias (0)

Mot : - Tags -/interaction

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (39)

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

Sur d’autres sites (4880)

  • How can I stream mjpeg file as rtsp

    24 août 2013, par Ilya Yevlampiev

    We have an mjpeg video, obtained from the webcam and stored into *.avi file, still encoded as mjpeg.

    We need to restream this file as rtsp (and stil preserve the mjpeg there, i.e. no decoding). The goal is to emulate the webcam this video was obtained from for the software that processes the video. The file can be open with vlc/ffplay with no problems. The ffmpeg behaves like it is streaming it, however, ffplay/vlc can't open this stream.

    We tried to stream if with gstreamer.

    1) we fount no free rtsp sink element for gstreamer pipeline. So, is there a free analogue for rtspsink to launch this pipeline with gst-launch ? we need and only cast, so we don't need so advanced element as rtspsink is.

    2) we also tried to build own simple rtsp server as described in http://weeklybuild.com/2013/01/creating-an-rtsp-stream-with-gstreamer/

    replacing videotestsrc with filesrc ; but what kind of elements we should use there ? usage of an only filesrc doesn't help ; we get the same problem as if we stream with ffmpeg. But what kind of lements we need there, if we dont' wan to decode/encode it, just to stream the file (to reproduce the thing what the webcam actually does).

    $ ffplay rtsp://127.0.0.1:8554/test -loglevel debug
    avplay version 0.8.5-6:0.8.5-1, Copyright (c) 2003-2012 the Libav developers
    built on Jan 13 2013 12:05:48 with gcc 4.7.2
    configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.5-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
    avutil      configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
    avcodec     configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
    avformat    configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
    swscale     configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
    postproc    configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-            postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
    libavutil    51. 22. 1 / 51. 22. 1
    libavcodec   53. 35. 0 / 53. 35. 0
    libavformat  53. 21. 1 / 53. 21. 0
    libavdevice  53.  2. 0 / 53.  2. 0
    libavfilter   2. 15. 0 /  2. 15. 0
    libswscale    2.  1. 0 /  2.  1. 0
    libpostproc  52.  0. 0 / 52.  0. 0
    [rtsp @ 0x7f558c0008c0] method DESCRIBE failed: 503 Service Unavailable
    [rtsp @ 0x7f558c0008c0] CSeq: 2
    Server: GStreamer RTSP server
    Date: Thu, 22 Aug 2013 07:49:30 GMT

    rtsp://127.0.0.1:8554/test: Invalid data found when processing input

    And everything is okay when I try gstreamer server built as in example, i.e. using videotestsrc

  • Hardsub issue with ffmpeg

    27 octobre 2013, par user2925649

    I am trying to hardsub subtitle files on videos with ffmpeg. The video is creating properly but I can't see any text on it. I am on Windows.

    Test with .srt file

    ffmpeg started on 2013-10-27 at 19:27:24
    Report written to "ffmpeg-20131027-192724.log"
    Command line:
    "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\calis.exe" -y -i "D:\\ortamFabrika\\videoTest\\videolar\\1.mp4" -vf "subtitles=altyazi2895625.srt" -vcodec mpeg2video -qscale 1 "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\altyazi5795186.mpg" -report
    ffmpeg version N-48675-g2672b2c Copyright (c) 2000-2013 the FFmpeg developers
     built on Jan  9 2013 23:25:59 with gcc 4.7.2 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-filter=frei0r
     libavutil      52. 13.100 / 52. 13.100
     libavcodec     54. 86.100 / 54. 86.100
     libavformat    54. 59.107 / 54. 59.107
     libavdevice    54.  3.102 / 54.  3.102
     libavfilter     3. 32.100 /  3. 32.100
     libswscale      2.  1.103 /  2.  1.103
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-i' ... matched as input file with argument 'D:\ortamFabrika\videoTest\videolar\1.mp4'.
    Reading option '-vf' ... matched as option 'vf' (video filters) with argument 'subtitles=altyazi2895625.srt'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg2video'.
    Reading option '-qscale' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'.
    Reading option 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg' ... matched as output file.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input file D:\ortamFabrika\videoTest\videolar\1.mp4.
    Successfully parsed a group of options.
    Opening an input file: D:\ortamFabrika\videoTest\videolar\1.mp4.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] ISO: File Type Major Brand: isom
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] File position before avformat_find_stream_info() is 667830
    [h264 @ 007929a0] Using externally provided dimensions
    [h264 @ 007929a0] no picture
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] All info found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] File position after avformat_find_stream_info() is 2014
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\ortamFabrika\videoTest\videolar\1.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf53.21.0
     Duration: 00:00:15.96, start: 0.000000, bitrate: 334 kb/s
       Stream #0:0(und), 2, 1/25: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 9 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 1, 1/44100: Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, s16p, 319 kb/s
       Metadata:
         handler_name    : SoundHandler
    Successfully openened the file.
    Parsing a group of options: output file C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg.
    Applying option vf (video filters) with argument subtitles=altyazi2895625.srt.
    Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg2video.
    Applying option qscale (use fixed quality scale (VBR)) with argument 1.
    Please use -q:a or -q:v, -qscale is ambiguous
    Successfully parsed a group of options.
    Opening an output file: C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg.
    Successfully openened the file.
    [subtitles @ 003fd840] Setting 'filename' to value 'altyazi2895625.srt'
    [Parsed_subtitles_0 @ 0079a180] Raster: FreeType 2.4.10
    [Parsed_subtitles_0 @ 0079a180] Shaper: FriBidi 0.19.5 (SIMPLE)
    [Parsed_subtitles_0 @ 0079a180] Initialized
    [Parsed_subtitles_0 @ 0079a180] No usable fontconfig configuration file found, using fallback.
    [srt @ 007ac380] Format srt probed with size=2048 and score=100
    [srt @ 007ac380] File position before avformat_find_stream_info() is 280
    [srt @ 007ac380] All info found
    [srt @ 007ac380] Estimating duration from bitrate, this may be inaccurate
    [srt @ 007ac380] File position after avformat_find_stream_info() is 280
    [Parsed_subtitles_0 @ 0079a180] Event: [Script Info]

    ScriptType: v4.00+



    [V4+ Styles]

    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding

    Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,1,1,0,2,10,10,10,0,0



    [Events]

    Format: Layer, Start, End, Style, Text

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Style format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
    [Parsed_subtitles_0 @ 0079a180] [00798cb0] Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,1,1,0,2,10,10,10,0,0
    [Parsed_subtitles_0 @ 0079a180] Name = Default
    [Parsed_subtitles_0 @ 0079a180] FontName = Arial
    [Parsed_subtitles_0 @ 0079a180] FontSize = 16
    [Parsed_subtitles_0 @ 0079a180] PrimaryColour = &Hffffff
    [Parsed_subtitles_0 @ 0079a180] SecondaryColour = &Hffffff
    [Parsed_subtitles_0 @ 0079a180] OutlineColour = &H0
    [Parsed_subtitles_0 @ 0079a180] BackColour = &H0
    [Parsed_subtitles_0 @ 0079a180] Bold = 0
    [Parsed_subtitles_0 @ 0079a180] Italic = 0
    [Parsed_subtitles_0 @ 0079a180] Underline = 0
    [Parsed_subtitles_0 @ 0079a180] BorderStyle = 1
    [Parsed_subtitles_0 @ 0079a180] Outline = 1
    [Parsed_subtitles_0 @ 0079a180] Shadow = 0
    [Parsed_subtitles_0 @ 0079a180] Alignment = 2
    [Parsed_subtitles_0 @ 0079a180] MarginL = 10
    [Parsed_subtitles_0 @ 0079a180] MarginR = 10
    [Parsed_subtitles_0 @ 0079a180] MarginV = 10
    [Parsed_subtitles_0 @ 0079a180] Encoding = 0
    [Parsed_subtitles_0 @ 0079a180] Event format: Layer, Start, End, Style, Text
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:01.48,0:00:04.02,Default,{\c&HFF00&}VimeoSrtPlayer Example{\c}

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:01.48
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:04.02
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = {\c&HFF00&}VimeoSrtPlayer Example{\c}
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:05.05,0:00:09.55,Default,Support for {\i1}italic{\i0} font

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:05.05
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:09.55
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Support for {\i1}italic{\i0} font
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:09.38,0:00:13.75,Default,Support for {\b1}bold{\b0} font

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:09.38
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:13.75
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Support for {\b1}bold{\b0} font
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:14.81,0:00:16.14,Default,Multi\NLine\NSupport ;)

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:14.81
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:16.14
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Multi\NLine\NSupport ;)
    [AVIOContext @ 007ac920] Statistics: 280 bytes read, 0 seeks
    [buffer @ 003fd960] Setting entry with key 'video_size' to value '1280x720'
    [buffer @ 003fd960] Setting entry with key 'pix_fmt' to value '0'
    [buffer @ 003fd960] Setting entry with key 'time_base' to value '1/25'
    [buffer @ 003fd960] Setting entry with key 'pixel_aspect' to value '1/1'
    [buffer @ 003fd960] Setting entry with key 'sws_param' to value 'flags=2'
    [buffer @ 003fd960] Setting entry with key 'frame_rate' to value '25/1'
    [graph 0 input from stream 0:0 @ 007a9fc0] w:1280 h:720 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
    [abuffer @ 003fd9e0] Setting entry with key 'time_base' to value '1/44100'
    [abuffer @ 003fd9e0] Setting entry with key 'sample_rate' to value '44100'
    [abuffer @ 003fd9e0] Setting entry with key 'sample_fmt' to value 's16p'
    [abuffer @ 003fd9e0] Setting entry with key 'channel_layout' to value '0x3'
    [graph 1 input from stream 0:1 @ 007aee60] tb:1/44100 samplefmt:s16p samplerate:44100 chlayout:0x3
    [aformat @ 00796340] Setting entry with key 'sample_fmts' to value 's16'
    [aformat @ 00796340] Setting entry with key 'sample_rates' to value '44100,48000,32000,22050,24000,16000'
    [aformat @ 00796340] Setting entry with key 'channel_layouts' to value '0x4,0x3'
    [audio format for output stream 0:1 @ 007aef20] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:1'
    [auto-inserted resampler 0 @ 007aef80] chl:stereo fmt:s16p r:44100Hz -> chl:stereo fmt:s16 r:44100Hz
    [mpeg2video @ 01c87260] detected 1 logical cores
    [mpeg2video @ 01c87260] intra_quant_bias = 96 inter_quant_bias = 0
    [h264 @ 007929a0] detected 1 logical cores
    [mpeg @ 00798580] VBV buffer size not set, muxing may fail
    Output #0, mpeg, to 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.59.107
       Stream #0:0(und), 0, 1/90000: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 0, 1/90000: Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> mpeg2video)
     Stream #0:1 -> #0:1 (mp3 -> mp2)
    Press [q] to stop, [?] for help
    [h264 @ 007929a0] Using externally provided dimensions
    [h264 @ 007929a0] no picture
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_subtitles_0 @ 0079a180] Neither PlayResX nor PlayResY defined. Assuming 384x288
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [mpeg @ 00798580] First SCR: 0 First DTS: 45000
    [Parsed_subtitles_0 @ 0079a180] color: FF0000
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject
    ...
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [output stream 0:0 @ 007aa0e0] EOF on sink link output stream 0:0:default.
    [output stream 0:1 @ 007aeec0] EOF on sink link output stream 0:1:default.
    No more output streams to write to, finishing.
    frame=  399 fps= 93 q=1.0 Lsize=    1036kB time=00:00:15.94 bitrate= 532.1kbits/s    

    video:778kB audio:249kB subtitle:0 global headers:0kB muxing overhead 0.887275%
    [AVIOContext @ 003fff40] Statistics: 711491 bytes read, 2 seeks

    Test with .ass file

    ffmpeg started on 2013-10-27 at 19:48:45
    Report written to "ffmpeg-20131027-194845.log"
    Command line:
    "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\calis.exe" -y -i "D:\\ortamFabrika\\videoTest\\videolar\\1.mp4" -vf "ass=altyazi5334240.ass" -vcodec mpeg2video -qscale 1 "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\altyazi7055475.mpg" -report
    ffmpeg version N-48675-g2672b2c Copyright (c) 2000-2013 the FFmpeg developers
     built on Jan  9 2013 23:25:59 with gcc 4.7.2 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-filter=frei0r
     libavutil      52. 13.100 / 52. 13.100
     libavcodec     54. 86.100 / 54. 86.100
     libavformat    54. 59.107 / 54. 59.107
     libavdevice    54.  3.102 / 54.  3.102
     libavfilter     3. 32.100 /  3. 32.100
     libswscale      2.  1.103 /  2.  1.103
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-i' ... matched as input file with argument 'D:\ortamFabrika\videoTest\videolar\1.mp4'.
    Reading option '-vf' ... matched as option 'vf' (video filters) with argument 'ass=altyazi5334240.ass'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg2video'.
    Reading option '-qscale' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'.
    Reading option 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg' ... matched as output file.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input file D:\ortamFabrika\videoTest\videolar\1.mp4.
    Successfully parsed a group of options.
    Opening an input file: D:\ortamFabrika\videoTest\videolar\1.mp4.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] ISO: File Type Major Brand: isom
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] File position before avformat_find_stream_info() is 667830
    [h264 @ 00722980] Using externally provided dimensions
    [h264 @ 00722980] no picture
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] All info found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] File position after avformat_find_stream_info() is 2014
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\ortamFabrika\videoTest\videolar\1.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf53.21.0
     Duration: 00:00:15.96, start: 0.000000, bitrate: 334 kb/s
       Stream #0:0(und), 2, 1/25: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 9 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 1, 1/44100: Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, s16p, 319 kb/s
       Metadata:
         handler_name    : SoundHandler
    Successfully openened the file.
    Parsing a group of options: output file C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg.
    Applying option vf (video filters) with argument ass=altyazi5334240.ass.
    Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg2video.
    Applying option qscale (use fixed quality scale (VBR)) with argument 1.
    Please use -q:a or -q:v, -qscale is ambiguous
    Successfully parsed a group of options.
    Opening an output file: C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg.
    Successfully openened the file.
    [ass @ 0060d840] Setting 'filename' to value 'altyazi5334240.ass'
    [Parsed_ass_0 @ 00725ce0] Raster: FreeType 2.4.10
    [Parsed_ass_0 @ 00725ce0] Shaper: FriBidi 0.19.5 (SIMPLE)
    [Parsed_ass_0 @ 00725ce0] Initialized
    [Parsed_ass_0 @ 00725ce0] No usable fontconfig configuration file found, using fallback.
    [Parsed_ass_0 @ 00725ce0] File size: 1440
    [Parsed_ass_0 @ 00725ce0] Style format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    [Parsed_ass_0 @ 00725ce0] [0073a030] Style: Default,Arial,16,&H00FFFFFF,&H000000FF,&H32202255,&HC8333CBA,0,0,0,0,100,100,0,0,1,3,1,2,100,100,50,1
    [Parsed_ass_0 @ 00725ce0] Name = Default
    [Parsed_ass_0 @ 00725ce0] FontName = Arial
    [Parsed_ass_0 @ 00725ce0] FontSize = 16
    [Parsed_ass_0 @ 00725ce0] PrimaryColour = &H00FFFFFF
    [Parsed_ass_0 @ 00725ce0] SecondaryColour = &H000000FF
    [Parsed_ass_0 @ 00725ce0] OutlineColour = &H32202255
    [Parsed_ass_0 @ 00725ce0] BackColour = &HC8333CBA
    [Parsed_ass_0 @ 00725ce0] Bold = 0
    [Parsed_ass_0 @ 00725ce0] Italic = 0
    [Parsed_ass_0 @ 00725ce0] Underline = 0
    [Parsed_ass_0 @ 00725ce0] StrikeOut = 0
    [Parsed_ass_0 @ 00725ce0] ScaleX = 100
    [Parsed_ass_0 @ 00725ce0] ScaleY = 100
    [Parsed_ass_0 @ 00725ce0] Spacing = 0
    [Parsed_ass_0 @ 00725ce0] Angle = 0
    [Parsed_ass_0 @ 00725ce0] BorderStyle = 1
    [Parsed_ass_0 @ 00725ce0] Outline = 3
    [Parsed_ass_0 @ 00725ce0] Shadow = 1
    [Parsed_ass_0 @ 00725ce0] Alignment = 2
    [Parsed_ass_0 @ 00725ce0] MarginL = 100
    [Parsed_ass_0 @ 00725ce0] MarginR = 100
    [Parsed_ass_0 @ 00725ce0] MarginV = 50
    [Parsed_ass_0 @ 00725ce0] Encoding = 1
    [Parsed_ass_0 @ 00725ce0] Event format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:00.01
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:10.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}This line is 10 seconds long but will disappear and reappear alongside other subs.
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:00.01
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:01.50
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:05.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:06.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:07.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:09.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Added subtitle file: 'altyazi5334240.ass' (2 styles, 8 events)
    [buffer @ 0060d960] Setting entry with key 'video_size' to value '1280x720'
    [buffer @ 0060d960] Setting entry with key 'pix_fmt' to value '0'
    [buffer @ 0060d960] Setting entry with key 'time_base' to value '1/25'
    [buffer @ 0060d960] Setting entry with key 'pixel_aspect' to value '1/1'
    [buffer @ 0060d960] Setting entry with key 'sws_param' to value 'flags=2'
    [buffer @ 0060d960] Setting entry with key 'frame_rate' to value '25/1'
    [graph 0 input from stream 0:0 @ 0073c360] w:1280 h:720 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
    [abuffer @ 0060d9e0] Setting entry with key 'time_base' to value '1/44100'
    [abuffer @ 0060d9e0] Setting entry with key 'sample_rate' to value '44100'
    [abuffer @ 0060d9e0] Setting entry with key 'sample_fmt' to value 's16p'
    [abuffer @ 0060d9e0] Setting entry with key 'channel_layout' to value '0x3'
    [graph 1 input from stream 0:1 @ 0073de00] tb:1/44100 samplefmt:s16p samplerate:44100 chlayout:0x3
    [aformat @ 007262a0] Setting entry with key 'sample_fmts' to value 's16'
    [aformat @ 007262a0] Setting entry with key 'sample_rates' to value '44100,48000,32000,22050,24000,16000'
    [aformat @ 007262a0] Setting entry with key 'channel_layouts' to value '0x4,0x3'
    [audio format for output stream 0:1 @ 0073dec0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:1'
    [auto-inserted resampler 0 @ 0073df20] chl:stereo fmt:s16p r:44100Hz -> chl:stereo fmt:s16 r:44100Hz
    [mpeg2video @ 0081fc00] detected 1 logical cores
    [mpeg2video @ 0081fc00] intra_quant_bias = 96 inter_quant_bias = 0
    [h264 @ 00722980] detected 1 logical cores
    [mpeg @ 00728560] VBV buffer size not set, muxing may fail
    Output #0, mpeg, to 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.59.107
       Stream #0:0(und), 0, 1/90000: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 0, 1/90000: Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> mpeg2video)
     Stream #0:1 -> #0:1 (mp3 -> mp2)
    Press [q] to stop, [?] for help
    [h264 @ 00722980] Using externally provided dimensions
    [h264 @ 00722980] no picture
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [mpeg @ 00728560] First SCR: 0 First DTS: 45000
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [output stream 0:0 @ 0073c480] EOF on sink link output stream 0:0:default.
    [output stream 0:1 @ 0073de60] EOF on sink link output stream 0:1:default.
    No more output streams to write to, finishing.
    frame=  399 fps=139 q=1.0 Lsize=    1036kB time=00:00:15.94 bitrate= 532.1kbits/s    

    video:778kB audio:249kB subtitle:0 global headers:0kB muxing overhead 0.887275%
    [AVIOContext @ 00721ea0] Statistics: 711491 bytes read, 2 seeks
  • How to write HEVC frames to file using FFMpeg ?

    2 mai 2018, par boneill

    I have the following code used to output H264 frames to an mp4 file and this works fine :

    typedef struct _AvFileStreamContext
    {
       AVStream                 *pStreams[AV_FRAME_MAX];
       AVCodecContext           *streamCodec;
       AVFormatContext          *pAvContext;    // initialised with avformat_alloc_output_context2 for mp4 container

    }_AvFileStreamContext;

    static void WriteImageFrameToFile(const unsigned char * frame,
                                     const int frameSize,
                                     const struct timeval *frameTime,
                                     AvFileStreamContext *pContext,
                                     int keyFrame)
    {
       AVStream *stream pContext->pStreams[AV_FRAME_VIDEO];
       AVPacket pkt;

       av_init_packet(&pkt);
       if (keyFrame)
       {
           pkt.flags |= AV_PKT_FLAG_KEY;
       }
       pkt.stream_index = stream->index;
       pkt.data = (unsigned char*)frame;
       pkt.size = frameSize;

       int ptsValue = round((float)( ( (frameTime->tv_sec - pContext->firstFrameTime.tv_sec ) * 1000000 +
                                       (frameTime->tv_usec - pContext->firstFrameTime.tv_usec)) * pContext->streamCodec->time_base.den ) / 1000000);

       // Packets PTS/DTS must be in Stream time-base units before writing so
       // rescaling between coder and stream time bases is required.
       pkt.pts =  av_rescale_q(ptsValue, pContext->streamCodec->time_base, stream->time_base);
       pkt.dts =  av_rescale_q(ptsValue, pContext->streamCodec->time_base, stream->time_base);

       av_interleaved_write_frame(pContext->pAvContext, &pkt);
    }

    Once all frames have been received I call the following :

    av_write_trailer(pContext->pAvContext);
    avio_close(pContext->pAvContext->pb);

    The above function is supplied from a circular buffer of frames where each entry in the buffer represents a frame for H264. I am trying to understand how I can adapt this to handle H265/HEVC frames. When I blindly try and use this for H265 frames I end up with an mp4 file where each frame only contains a third of a complete frame i.e.

    h265partialframe
    The video continues to play for the correct duration but each frame is only a third of a complete frame. The implementation for receiving frames is the same as H264 and it is my understanding that with H265 each of the buffers I am receiving represents a ’tile’. In my case these are tile columns of which 3 tiles make up one frame. That said, it would seem that the above function would need to be adapted to combine 3 tiles until an end of frame marker is received. I have trawled the FFMpeg v3.3 documentation to find out how I can achieve this but have had limited luck.
    I have tried to use the following function call to combine frames :

    uint8_t * outputBuffer;
    unsigned int bufferSize;
    stream->parser = av_parser_init (AV_CODEC_ID_HEVC);
    int rc = av_parser_parse2(stream->parser, pContext->pAvContext,
                             &outputBuffer, &bufferSize,
                             frame, frameSize,
                             pkt.pts, pkt.dts, -1);

    It seems that the above call will ultimately call ;

    static int hevc_parse(AVCodecParserContext *s,
                         AVCodecContext *avctx,
                         const uint8_t **poutbuf, int *poutbuf_size,
                         const uint8_t *buf, int buf_size)

    Followed by :

    int ff_combine_frame(ParseContext *pc, int next,
                        const uint8_t **buf, int *buf_size)

    So it seems this is the correct path, however when I plug this all in the resulting mp4 file is not playable under gstreamer with the following errors :

    Prerolling...
    (gst-play-1.0:11225): GStreamer-WARNING **: gstpad.c:4943:store_sticky_event: Sticky event misordering, got 'segment' before 'caps'
    Redistribute latency...

    (gst-play-1.0:11225): GStreamer-WARNING **: gstpad.c:4943:store_sticky_event: Sticky event misordering, got 'segment' before 'caps'

    And I get the following errors (snippet of errors) from VLC where the frames appear to be correct in terms of height and width but are corrupt or incomplete during playback :

    [hevc @ 0x7f8128c30440] PPS changed between slices.
    [hevc @ 0x7f8128c42080] PPS changed between slices.
    [hevc @ 0x7f8128c53ce0] PPS changed between slices.
    [00007f8110293be8] freetype spu text error: Breaking unbreakable line
    [hevc @ 0x7f8128c1e0a0] First slice in a frame missing.
    [hevc @ 0x7f8128c1e0a0] First slice in a frame missing.
    [hevc @ 0x7f8128c1e0a0] Could not find ref with POC 7
    [hevc @ 0x7f8128c30440] PPS changed between slices.
    [hevc @ 0x7f8128c42080] PPS changed between slices.
    [hevc @ 0x7f8128c53ce0] PPS changed between slices.
    [hevc @ 0x7f8128c1e0a0] First slice in a frame missing.
    [hevc @ 0x7f8128c1e0a0] First slice in a frame missing.
    [hevc @ 0x7f8128c1e0a0] Could not find ref with POC 15
    [hevc @ 0x7f8128c30440] PPS changed between slices.
    [hevc @ 0x7f8128c42080] PPS changed between slices.
    [hevc @ 0x7f8128c53ce0] PPS changed between slices.
    [hevc @ 0x7f8128c1e0a0] First slice in a frame missing.
    [hevc @ 0x7f8128c1e0a0] First slice in a frame missing.
    [hevc @ 0x7f8128c1e0a0] Could not find ref with POC 23

    Here is an example frame from the VLC playback where you can just about see the outline of someone :
    h265combinedtiles

    It should be noted that when using the call to av_parser_parse2(), a frame is only passed to av_interleaved_write_frame() when outputBuffer is populated which seems to take a number of tiles (greater than 3) so I am possibly not setting something correctly.

    • Can I tell FFMpeg that a particular tile is an end of frame ?
    • Should I be using some other FFMpeg call to combine H265 tiles ?
    • Am I misunderstanding how HEVC operates ? (probably)
    • Once combined it the call to av_interleaved_write_frame() still valid ?
    • Note that use of libx265 is not possible.

    Any help appreciated.