
Recherche avancée
Médias (1)
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (105)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Use, discuss, criticize
13 avril 2011, parTalk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
A discussion list is available for all exchanges between users. -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP 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 (8939)
-
On-the-fly transcoding using derolf/transcoder
8 septembre 2015, par user1811678https://github.com/derolf/transcoder
I need to transcode locally and playback locally in my project, no other external connection to the server.
It is a good source of doing on the fly transcoding by ffmpeg.In my case i have to transcode it to mp4 as it could perform faster.
However i run into following problem, and i need some help in here to fix it.----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 34089)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 651, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 710, in finish
self.wfile.close()
File "/usr/lib/python2.7/socket.py", line 279, in close
self.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipeHere is my code :
server.pyfrom flask import Flask, request, Response, abort, send_file, jsonify
import os, subprocess, re
import config
app = Flask(__name__)
@app.route('/media/.js')
def media_content_js(path):
d= os.path.abspath( os.path.join( config.media_folder, path ) )
print d
if not os.path.isfile( d ): abort(404)
cmdline= list()
cmdline.append( config.ffmpeg )
cmdline.append( "-i" )
cmdline.append( d );
print cmdline
duration= -1
FNULL = open(os.devnull, 'w')
proc= subprocess.Popen( cmdline, stderr=subprocess.PIPE, stdout=FNULL )
try:
for line in iter(proc.stderr.readline,''):
line= line.rstrip()
#Duration: 00:00:45.13, start: 0.000000, bitrate: 302 kb/s
m = re.search('Duration: (..):(..):(..)\...', line)
if m is not None: duration= int(m.group(1)) * 3600 + int(m.group(2)) * 60 + int(m.group(3)) + 1
finally:
proc.kill()
return jsonify(duration=duration)
@app.route('/media/.mp4')
def media_content_ogv(path):
d= os.path.abspath( os.path.join( config.media_folder, path ) )
print d
if not os.path.isfile( d ): abort(404)
start= request.args.get("start") or 0
print start
def generate():
cmdline= list()
cmdline.append( config.ffmpeg )
cmdline.append( "-i" )
cmdline.append( d );
cmdline.append( "-ss" )
cmdline.append( str(start) );
cmdline.extend( config.ffmpeg_args )
print cmdline
FNULL = open(os.devnull, 'w')
proc= subprocess.Popen( cmdline, stdout=subprocess.PIPE, stderr=FNULL )
try:
f= proc.stdout
byte = f.read(512)
while byte:
yield byte
byte = f.read(512)
finally:
proc.kill()
return Response(response=generate(),status=200,mimetype='video/mp4',headers={'Access-Control-Allow-Origin': '*', "Content-Type":"video/mp4","Content-Disposition":"inline","Content-Transfer-Enconding":"binary"})
@app.route('/', defaults={"path":"index.html"})
@app.route('/')
def static_content(path):
d= os.path.abspath( os.path.join( config.static_folder, path ) )
if not os.path.isfile( d ): abort(404)
return send_file( d )
app.run( host="0.0.0.0",port=config.port, threaded=True, debug=True )config.py
media_folder= "media"
static_folder= "static"
port= 8123
ffmpeg= "/usr/bin/ffmpeg"
ffmpeg_args= [ "-f", "avi" ,"-acodec", "libfdk_aac", "-b:a", "128k", "-vcodec", "libx264", "-b:v", "1200k" , "-flags" , "+aic+mv4", "pipe:1"]index.html
<code class="echappe-js"><script src="http://vjs.zencdn.net/4.5/video.js"></script><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script><br />
var video= videojs('video');<br />
video.src("media/testavi.avi.mp4");<br />
<br />
// hack duration<br />
video.duration= function() { return video.theDuration; };<br />
video.start= 0;<br />
video.oldCurrentTime= video.currentTime;<br />
video.currentTime= function(time) <br />
{ <br />
if( time == undefined )<br />
{<br />
return video.oldCurrentTime() + video.start;<br />
}<br />
console.log(time)<br />
video.start= time;<br />
video.oldCurrentTime(0);<br />
video.src("media/testavi.avi.mp4?start=" + time);<br />
video.play();<br />
return this;<br />
};<br />
<br />
$.getJSON( "media/testavi.avi.js", function( data ) <br />
{<br />
video.theDuration= data.duration;<br />
});<br />
</script> -
Errors converting EXRs to mp4 with ffmpeg
3 février 2021, par GaryOI'm using ffmpeg 4.3.1 to convert some EXRs to mp4, with tone mapping for the extended range in the source and rec709 conversion for the mp4.


I'm using this command :


ffmpeg -pattern_type glob -framerate 24 -i 'frames/*.exr' -vf zscale=transfer=linear,tonemap=hable,zscale=transfer=bt709,format=yuv420p -c:v libx264 -r 24 -preset slow -crf 18 -pix_fmt yuv420p foo-tonemap-01.mp4



but it gives me this error :


Input #0, image2, from 'frames/*.exr':
 Duration: 00:00:00.08, start: 0.000000, bitrate: N/A
 Stream #0:0: Video: exr, gbrapf32le, 1920x1080 [SAR 1:1 DAR 16:9], 24 tbr, 24 tbn, 24 tbc
Stream mapping:
 Stream #0:0 -> #0:0 (exr (native) -> h264 (libx264))
code 3074: no path between colorspaces
Error while filtering: Generic error in an external library



What does that error "no path between colorspaces" mean ? Do I need to tell it what colorspace the EXRs are in (scene-linear RGB) or something ?


Complete log :


ffmpeg started on 2020-08-05 at 22:22:33
Report written to "ffmpeg-20200805-222233.log"
Log level: 48
Command line:
ffmpeg -report -y -i frames/0240.exr -vf "zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p" -c:v libx264 -r 24 -preset slow -crf 18 -pix_fmt yuv420p foo-tonemap-01.mp4
ffmpeg version 4.3.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 8 (Debian 8.3.0-6)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
 libavutil 56. 51.100 / 56. 51.100
 libavcodec 58. 91.100 / 58. 91.100
 libavformat 58. 45.100 / 58. 45.100
 libavdevice 58. 10.100 / 58. 10.100
 libavfilter 7. 85.100 / 7. 85.100
 libswscale 5. 7.100 / 5. 7.100
 libswresample 3. 7.100 / 3. 7.100
 libpostproc 55. 7.100 / 55. 7.100
Splitting the commandline.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-i' ... matched as input url with argument 'frames/0240.exr'.
Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'libx264'.
Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '24'.
Reading option '-preset' ... matched as AVOption 'preset' with argument 'slow'.
Reading option '-crf' ... matched as AVOption 'crf' with argument '18'.
Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel format) with argument 'yuv420p'.
Reading option 'foo-tonemap-01.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url frames/0240.exr.
Successfully parsed a group of options.
Opening an input file: frames/0240.exr.
[NULL @ 0x6db71c0] Opening 'frames/0240.exr' for reading
[file @ 0x6db7c80] Setting default whitelist 'file,crypto,data'
[exr_pipe @ 0x6db71c0] Format exr_pipe probed with size=2048 and score=51
[exr_pipe @ 0x6db71c0] Before avformat_find_stream_info() pos: 0 bytes read:32768 seeks:0 nb_streams:1
[exr_pipe @ 0x6db71c0] parser not found for codec exr, packets or times may be invalid.
[exr_pipe @ 0x6db71c0] parser not found for codec exr, packets or times may be invalid.
[exr @ 0x6db92c0] line order: 0.
[exr_pipe @ 0x6db71c0] After avformat_find_stream_info() pos: 4970635 bytes read:4970635 seeks:0 frames:1
Input #0, exr_pipe, from 'frames/0240.exr':
 Duration: N/A, bitrate: N/A
 Stream #0:0, 1, 1/25: Video: exr, gbrapf32le, 1920x1080 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
Successfully opened the file.
Parsing a group of options: output url foo-tonemap-01.mp4.
Applying option vf (set video filters) with argument zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p.
Applying option c:v (codec name) with argument libx264.
Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 24.
Applying option pix_fmt (set pixel format) with argument yuv420p.
Successfully parsed a group of options.
Opening an output file: foo-tonemap-01.mp4.
[file @ 0x6e0a0c0] Setting default whitelist 'file,crypto,data'
Successfully opened the file.
detected 32 logical cores
Stream mapping:
 Stream #0:0 -> #0:0 (exr (native) -> h264 (libx264))
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[exr @ 0x6dbe700] line order: 0.
[Parsed_zscale_0 @ 0x725c4c0] Setting 'transfer' to value 'linear'
[Parsed_tonemap_1 @ 0x725c940] Setting 'tonemap' to value 'clip'
[Parsed_zscale_2 @ 0x725d380] Setting 'transfer' to value 'bt709'
[Parsed_format_3 @ 0x725e100] Setting 'pix_fmts' to value 'yuv420p'
[graph 0 input from stream 0:0 @ 0x725eb40] Setting 'video_size' to value '1920x1080'
[graph 0 input from stream 0:0 @ 0x725eb40] Setting 'pix_fmt' to value '180'
[graph 0 input from stream 0:0 @ 0x725eb40] Setting 'time_base' to value '1/25'
[graph 0 input from stream 0:0 @ 0x725eb40] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0x725eb40] Setting 'frame_rate' to value '25/1'
[graph 0 input from stream 0:0 @ 0x725eb40] w:1920 h:1080 pixfmt:gbrapf32le tb:1/25 fr:25/1 sar:1/1
[format @ 0x725fc00] Setting 'pix_fmts' to value 'yuv420p'
[AVFilterGraph @ 0x6dc0000] query_formats: 7 queried, 6 merged, 0 already done, 0 delayed
[Parsed_zscale_0 @ 0x725c4c0] w:1920 h:1080 fmt:gbrapf32le sar:1/1 -> w:1920 h:1080 fmt:gbrapf32le sar:1/1
[Parsed_zscale_2 @ 0x725d380] w:1920 h:1080 fmt:gbrapf32le sar:1/1 -> w:1920 h:1080 fmt:yuv420p sar:1/1
[Parsed_zscale_0 @ 0x725c4c0] w:1920 h:1080 fmt:gbrapf32le sar:1/1 -> w:1920 h:1080 fmt:gbrapf32le sar:1/1
code 3074: no path between colorspaces
Error while filtering: Generic error in an external library
Failed to inject frame into filter network: Generic error in an external library
Error while processing the decoded data for stream #0:0
[AVIOContext @ 0x6e08a80] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0x6dc00c0] Statistics: 4970635 bytes read, 0 seeks
Conversion failed!



-
ffmpeg : unable to use hardware encoder h264_rkmpp with software decoded ATSC OTA transmission
20 août 2020, par Brad BruggemannWhen attempting to hardware encode to h264 using the Rockchip MPP encoder h264_rkmpp from an ATSC source, FFMPEG errors out with :


"Impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto_scaler_0'"


The sample file used in this example can be downloaded here : https://transfer.sh/BRMej/out.ts


The full command used and resulting output is as follows :


$ ffmpeg -loglevel 48 -c:v mpeg2video -f mpegts -i out.ts -f mp4 -c:v h264_rkmpp -c:a libfdk_aac -preset ultrafast -mbd rd -copyinkf -flags +ilme+ildct -fflags +genpts out.mp4 -y

ffmpeg version N-98732-g9f702fc8f4 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 9.3.0 (GCC)
 configuration: --prefix=/usr/local --extra-libs='-lpthread -lm' --enable-hardcoded-tables --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-rkmpp --enable-version3 --enable-libdrm --enable-libx265 --enable-nonfree
 libavutil 56. 58.100 / 56. 58.100
 libavcodec 58.100.100 / 58.100.100
 libavformat 58. 51.100 / 58. 51.100
 libavdevice 58. 11.101 / 58. 11.101
 libavfilter 7. 87.100 / 7. 87.100
 libswscale 5. 8.100 / 5. 8.100
 libswresample 3. 8.100 / 3. 8.100
 libpostproc 55. 8.100 / 55. 8.100

Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '48'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'mpeg2video'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mpegts'.
Reading option '-i' ... matched as input url with argument 'out.ts'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mp4'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'h264_rkmpp'.
Reading option '-c:a' ... matched as option 'c' (codec name) with argument 'libfdk_aac'.
Reading option '-preset' ... matched as AVOption 'preset' with argument 'ultrafast'.
Reading option '-mbd' ... matched as AVOption 'mbd' with argument 'rd'.
Reading option '-copyinkf' ... matched as option 'copyinkf' (copy initial non-keyframes) with argument '1'.
Reading option '-flags' ... matched as AVOption 'flags' with argument '+ilme+ildct'.
Reading option '-fflags' ... matched as AVOption 'fflags' with argument '+genpts'.
Reading option 'out.mp4' ... matched as output url.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument 48.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url out.ts.
Applying option c:v (codec name) with argument mpeg2video.
Applying option f (force format) with argument mpegts.
Successfully parsed a group of options.
Opening an input file: out.ts.
[mpegts @ 0xaaaaec9acf20] Opening 'out.ts' for reading
[file @ 0xaaaaec9ad830] Setting default whitelist 'file,crypto,data'
[mpegts @ 0xaaaaec9acf20] Before avformat_find_stream_info() pos: 0 bytes read:5013504 seeks:1 nb_streams:0
[mpegts @ 0xaaaaec9acf20] stream=0 stream_type=0 pid=31 prog_reg_desc=
[mpegts @ 0xaaaaec9acf20] probing stream 0 pp:2500
[mpegts @ 0xaaaaec9acf20] Probe with size=204749, packets=1 detected mpegvideo with score=25
[mpegts @ 0xaaaaec9acf20] probed stream 0
[mpegts @ 0xaaaaec9acf20] stream=1 stream_type=0 pid=34 prog_reg_desc=
[mpeg2video @ 0xaaaaec9cb7d0] Format yuv420p chosen by get_format().
[mpegts @ 0xaaaaec9acf20] probing stream 1 pp:2500
[mpegts @ 0xaaaaec9acf20] Probe with size=7680, packets=1 detected ac3 with score=25
[mpegts @ 0xaaaaec9acf20] probed stream 1
[mpegts @ 0xaaaaec9acf20] max_analyze_duration 5000000 reached at 5005000 microseconds st:0
[mpegts @ 0xaaaaec9acf20] PES packet size mismatch
[mpegts @ 0xaaaaec9acf20] Packet corrupt (stream = 1, dts = 2632691898).
[mpegts @ 0xaaaaec9acf20] After avformat_find_stream_info() pos: 0 bytes read:9195664 seeks:3 frames:306
Input #0, mpegts, from 'out.ts':
 Duration: 00:00:18.42, start: 29234.532200, bitrate: 5406 kb/s
 Stream #0:0[0x31], 152, 1/90000: Video: mpeg2video (Main), 1 reference frame, yuv420p(yuv420p) (tv, bt709, top first, left), 1920x1080 [SAR 1:1 DAR 16:9], 0/1, Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
 Side data:
 cpb: bitrate max/min/avg: 15000000/0/0 buffer size: 7995392 vbv_delay: N/A
 Stream #0:1[0x34], 154, 1/90000: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
Successfully opened the file.
Parsing a group of options: output url out.mp4.
Applying option f (force format) with argument mp4.
Applying option c:v (codec name) with argument h264_rkmpp.
Applying option c:a (codec name) with argument libfdk_aac.
Applying option copyinkf (copy initial non-keyframes) with argument 1.
Successfully parsed a group of options.
Opening an output file: out.mp4.
Codec AVOption preset (Set the encoding preset (cf. x264 --fullhelp)) specified for output file #0 (out.mp4) 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.
[file @ 0xaaaaec9cef20] Setting default whitelist 'file,crypto,data'
Successfully opened the file.
detected 4 logical cores
Stream mapping:
 Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (h264_rkmpp))
 Stream #0:1 -> #0:1 (ac3 (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[mpeg2video @ 0xaaaaec9cf7b0] Format yuv420p chosen by get_format().
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[mpeg2video @ 0xaaaaec9cf7b0] Skipping B slice due to open GOP
 Last message repeated 67 times
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[mpeg2video @ 0xaaaaec9cf7b0] Skipping B slice due to open GOP
 Last message repeated 67 times
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[graph 0 input from stream 0:0 @ 0xaaaaecd8c290] Setting 'video_size' to value '1920x1080'
[graph 0 input from stream 0:0 @ 0xaaaaecd8c290] Setting 'pix_fmt' to value '0'
[graph 0 input from stream 0:0 @ 0xaaaaecd8c290] Setting 'time_base' to value '1/90000'
[graph 0 input from stream 0:0 @ 0xaaaaecd8c290] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0xaaaaecd8c290] Setting 'frame_rate' to value '30000/1001'
[graph 0 input from stream 0:0 @ 0xaaaaecd8c290] w:1920 h:1080 pixfmt:yuv420p tb:1/90000 fr:30000/1001 sar:1/1
[format @ 0xaaaaecadf950] Setting 'pix_fmts' to value 'drm_prime'
[auto_scaler_0 @ 0xaaaaecd80070] Setting 'flags' to value 'bicubic'
[auto_scaler_0 @ 0xaaaaecd80070] w:iw h:ih flags:'bicubic' interl:0
[format @ 0xaaaaecadf950] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_null_0' and the filter 'format'
Impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto_scaler_0'
Error reinitializing filters!
Failed to inject frame into filter network: Function not implemented
Error while processing the decoded data for stream #0:0
[AVIOContext @ 0xaaaaec9cf190] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0xaaaaec9b5900] Statistics: 9556112 bytes read, 3 seeks
Conversion failed!