
Recherche avancée
Médias (1)
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
Autres articles (60)
-
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 est la première version de MediaSPIP stable.
Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
L’utiliser, en parler, le critiquer
10 avril 2011La première attitude à adopter est d’en parler, soit directement avec les personnes impliquées dans son développement, soit autour de vous pour convaincre de nouvelles personnes à l’utiliser.
Plus la communauté sera nombreuse et plus les évolutions seront rapides ...
Une liste de discussion est disponible pour tout échange entre utilisateurs. -
Mise à disposition des fichiers
14 avril 2011, parPar défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)
Sur d’autres sites (8231)
-
FFMPEG options for video streaming
26 février 2014, par YorgZI am trying to use ffmpeg to stream video using ffserver. You will find below the ffserver1.conf file, and the log output from the ffmpeg command.
One of the errors references presets, and everytime I try to use presets I get the error "File not found, even after copying all the preset files in the current directory.
Thanks for the help.
YorgZ
FFSERVER CONF
YorgZ-Macbook$cat ffserver1.conf
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 4000
CustomLog -
<feed>
File feed1.ffm
FileMaxSize 1G
ACL allow 127.0.0.1
ACL allow localhost
ACL allow 10.0.0.0 10.0.255.255
</feed>
<stream>
Feed feed1.ffm
Format mp4
VideoFrameRate 29.97
VideoBitRate 500
VideoSize 640x352
</stream>
<stream>
Format status
ACL allow localhost
ACL allow 10.0.0.0 10.0.255.255
</stream>
YorgZ-Macbook$
FFMPEG COMMAND AND LOG
YorgZ-Macbook$./ffmpeg -loglevel debug -i TestStream.mp4 -codec:v libx264 -b:v 500k -vf "scale=640:352" -r 29.97 -codec:a aac -b:a 128k http://127.0.0.1:8090/feed1.ffm
ffmpeg version 2.1.3-tessus Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 16 2014 13:50:59 with llvm-gcc 4.2.1 (LLVM build 2336.1.00)
configuration: --prefix=/Users/tessus/data/ext/ffmpeg/sw --as=yasm --extra-version=tessus --disable-shared --enable-static --disable-ffplay --enable-gpl --enable-pthreads --enable-postproc --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-fontconfig --enable-libfreetype --enable-libass --enable-libbluray --enable-filters --enable-runtime-cpudetect
libavutil 52. 48.101 / 52. 48.101
libavcodec 55. 39.101 / 55. 39.101
libavformat 55. 19.104 / 55. 19.104
libavdevice 55. 5.100 / 55. 5.100
libavfilter 3. 90.100 / 3. 90.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
Reading option '-i' ... matched as input file with argument 'TestStream.mp4'.
Reading option '-codec:v' ... matched as option 'codec' (codec name) with argument 'libx264'.
Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '500k'.
Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'scale=640:352'.
Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '29.97'.
Reading option '-codec:a' ... matched as option 'codec' (codec name) with argument 'aac'.
Reading option '-b:a' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '128k'.
Reading option 'http://127.0.0.1:8090/feed1.ffm' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input file TestStream.mp4.
Successfully parsed a group of options.
Opening an input file: TestStream.mp4.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] ISO: File Type Major Brand: mp42
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] File position before avformat_find_stream_info() is 33783
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] File position after avformat_find_stream_info() is 64138
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'TestStream.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2014-02-17 10:17:06
Duration: 00:01:40.10, start: 0.000000, bitrate: 582 kb/s
Stream #0:0(und), 15, 1/30000: Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 1001/60000, 483 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default)
Metadata:
creation_time : 2014-02-17 10:17:06
handler_name : IsoMedia File Produced by Google, 5-11-2011
Successfully opened the file.
Parsing a group of options: output file http://127.0.0.1:8090/feed1.ffm.
Applying option codec:v (codec name) with argument libx264.
Applying option b:v (video bitrate (please use -b:v)) with argument 500k.
Applying option vf (set video filters) with argument scale=640:352.
Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 29.97.
Applying option codec:a (codec name) with argument aac.
Applying option b:a (video bitrate (please use -b:v)) with argument 128k.
Successfully parsed a group of options.
Opening an output file: http://127.0.0.1:8090/feed1.ffm.
[ffm @ 0x102037200] Format ffm probed with size=2048 and score=101
[AVIOContext @ 0x101d04fe0] Statistics: 4096 bytes read, 0 seeks
Mon Feb 24 11:53:05 2014 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200 4175
Successfully opened the file.
detected 8 logical cores
[graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'time_base' to value '1/44100'
[graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'sample_rate' to value '44100'
[graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'sample_fmt' to value 'fltp'
[graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'channel_layout' to value '0x3'
[graph 0 input from stream 0:1 @ 0x101d05a20] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[audio format for output stream 0:0 @ 0x102d004e0] Setting 'sample_fmts' to value 's16'
[audio format for output stream 0:0 @ 0x102d004e0] Setting 'sample_rates' to value '22050'
[audio format for output stream 0:0 @ 0x102d004e0] Setting 'channel_layouts' to value '0x4'
[audio format for output stream 0:0 @ 0x102d004e0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:0'
[AVFilterGraph @ 0x101d03ea0] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
0.500000 0.500000
[auto-inserted resampler 0 @ 0x102d00ca0] ch:2 chl:stereo fmt:fltp r:44100Hz -> ch:1 chl:mono fmt:s16 r:22050Hz
[graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'video_size' to value '640x360'
[graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'pix_fmt' to value '0'
[graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'time_base' to value '1/30000'
[graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'pixel_aspect' to value '1/1'
[graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'sws_param' to value 'flags=2'
[graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'frame_rate' to value '30000/1001'
[graph 1 input from stream 0:0 @ 0x103b003a0] w:640 h:360 pixfmt:yuv420p tb:1/30000 fr:30000/1001 sar:1/1 sws_param:flags=2
[scaler for output stream 0:1 @ 0x103b00900] Setting 'w' to value '640'
[scaler for output stream 0:1 @ 0x103b00900] Setting 'h' to value '352'
[scaler for output stream 0:1 @ 0x103b00900] Setting 'flags' to value '0x4'
[scaler for output stream 0:1 @ 0x103b00900] w:640 h:352 flags:'0x4' interl:0
[format @ 0x103b00dc0] compat: called with args=[yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16]
[format @ 0x103b00dc0] Setting 'pix_fmts' to value 'yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16'
[AVFilterGraph @ 0x102d00fc0] query_formats: 5 queried, 4 merged, 0 already done, 0 delayed
[scaler for output stream 0:1 @ 0x103b00900] w:640 h:360 fmt:yuv420p sar:1/1 -> w:640 h:352 fmt:yuv420p sar:44/45 flags:0x4
[libx264 @ 0x102049800] broken ffmpeg default settings detected
[libx264 @ 0x102049800] use an encoding preset (e.g. -vpre medium)
[libx264 @ 0x102049800] preset usage: -vpre <speed> -vpre <profile>
[libx264 @ 0x102049800] speed presets are listed in x264 --help
[libx264 @ 0x102049800] profile is optional; x264 defaults to high
Output #0, ffm, to 'http://127.0.0.1:8090/feed1.ffm':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : now
Stream #0:0(und), 0, 1/1000000: Audio: aac (libvo_aacenc), 22050 Hz, mono, s16, 128 kb/s (default)
Metadata:
creation_time : 2014-02-17 10:17:06
handler_name : IsoMedia File Produced by Google, 5-11-2011
Stream #0:1(und), 0, 1/1000000: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x352 [SAR 44:45 DAR 16:9], 1001/30000, q=2-31, 500 kb/s, 1000k tbn, 29.97 tbc (default)
Metadata:
handler_name : VideoHandler
Stream mapping:
Stream #0:1 -> #0:0 (aac -> libvo_aacenc)
Stream #0:0 -> #0:1 (h264 -> libx264)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
[AVIOContext @ 0x101d04fe0] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0x101d03fa0] Statistics: 65536 bytes read, 0 seeks
Mon Feb 24 11:53:05 2014 127.0.0.1 - - [POST] "/feed1.ffm HTTP/1.1" 200 0
YorgZ-Macbook$
</profile></speed> -
Solving The XVD Puzzle
I downloaded a multimedia file a long time ago (at least, I strongly suspected it was a multimedia file which is why I downloaded it). It went by the name of ‘lamborghini_850kbps.vg2′. I have had it in my collection for at least 7 years. I couldn’t remember where I found it. I downloaded it before it occurred to me to take notes about this sort of stuff.
I found myself staring at the file again today and Googled the filename. This led me to a few Japanese sites which also contained working URLs for a few more .vg2 samples. Some other clues led me to a Russian language forum where someone had linked to a site that had Win32 codec modules that could process the files. The site was defunct but the Internet Archive Wayback Machine kept a copy for me, as well as copies of several more .vg2 samples from a defunct Japanese site previously involved with this codec.
Sometimes this internet technology works really well. But I digress.
Anyway, through all this, I finally found a clue : XVD. and wouldn’t you know, there is already a basic page on the MultimediaWiki describing the technology. In fact, while VG2 is a custom container, the MultimediaWiki states that the video component has a FourCC of VGMV, and there is already a file named VGMV.avi in the root V-codecs/ samples directory, something I vow to correct (that’s a big pet peeve of mine– putting samples in the root V-codecs/ or A-codecs/ directories).
XVD… XVD… XVD… why does that sound so familiar ? Oh, of course ; there is a company named XVD and they have an office in the Bay Area which I have passed on numerous occasions, like this morning :
<
Someone originally connected with the multimedia technology in question operates a website which contains an unofficial history of the XVD tech. At first, I was wondering if the technology was completely defunct (and should therefore be open sourced). But if XVD’s solutions page (dated 2010) is to be believed, the technology is still in service, and purported to be better than H.264 and VC-1 : “The current generation of XVD video compression technology provides better video quality at any given data rate than standards-based codecs (H.264 or VC-1) with four times lower encoding complexity (when compared with H.264 Main Profile).”
If they say so. For my part, I’m just happy that I have finally figured out what this lamborghini_850kbps.vg2 is so that I can properly catalog it on the samples site, which I have now done, along with other samples and various codecs modules.
This episode reminds me that there’s a branch office of Zygo Corporation close to my home (though the headquarters are far, far away). The companies you see in Silicon Valley. Anyway, long-time open source multimedia hackers will no doubt recognize Zygo from the ZyGo FourCC & video codec transported in QuickTime files that was almost decode-able using an H.263 decoder.
I may never learn what Zygo’s core competency actually is, but I will always remember their multimedia tech every time I run past their office.
-
I have a log file with RTP packets : now what ?
9 mai 2012, par BrannonI have a log file with RTP packets coming off of a black box device. I also have a corresponding SDP file (RTSP DESCRIBE) for that. I need to convert this file into some kind of playable video file. Can I pass these two files to FFMpeg or VLC or something else and have it mux that data into something playable ?
As an alternate plan, I can loop through the individual packets in code and do something with each packet. However, it seems that there are existing libraries for parsing this data. And it seems to do it by hand would be asking for a large project. Is there some kind of video file format that is a pretty raw mix of SDP and RTP ? Thanks for your time.
Is there a way for FFmpeg or VLC to open an SDP file and then get their input packets through STDIN ?
I generally use C#, but I could use C if necessary.
Update 1 : Here is my unworking code. I'm trying to get some kind of output to play with ffplay, but I haven't had any luck yet. It gives me invalid data errors. It does go over all the data correctly as far as I can tell. My output is nearly as big as my input (at about 4MB).
public class RtpPacket2
{
public byte VersionPXCC;
public byte MPT;
public ushort Sequence; // length?
public uint Timestamp;
public uint Ssrc;
public int Version { get { return VersionPXCC >> 6; } }
public bool Padding { get { return (VersionPXCC & 32) > 0; } }
public bool Extension { get { return (VersionPXCC & 16) > 0; } }
public int CsrcCount { get { return VersionPXCC & 0xf; } } // ItemCount
public bool Marker { get { return (MPT & 0x80) > 0; } }
public int PayloadType { get { return MPT & 0x7f; } } // PacketType
}
static void Main(string[] args)
{
if (args.Length != 2)
{
Console.WriteLine("Usage: <input rtp="rtp" file="file" /> <output 3gp="3gp" file="file">");
return;
}
var inputFile = args[0];
var outputFile = args[1];
if(File.Exists(outputFile)) File.Delete(outputFile);
// FROM the SDP : fmtp 96 profile-level-id=4D0014;packetization-mode=0
var sps = Convert.FromBase64String("Z0LAHoiLUFge0IAAA4QAAK/IAQ=="); // BitConverter.ToString(sps) "67-42-C0-1E-88-8B-50-58-1E-D0-80-00-03-84-00-00-AF-C8-01" string
var pps = Convert.FromBase64String("aM44gA=="); // BitConverter.ToString(pps) "68-CE-38-80" string
var sep = new byte[] { 00, 00, 01 };
var packet = new RtpPacket2();
bool firstFrame = true;
using (var input = File.OpenRead(inputFile))
using (var reader = new BinaryReader(input))
using (var output = File.OpenWrite(outputFile))
{
//output.Write(header, 0, header.Length);
output.Write(sep, 0, sep.Length);
output.Write(sps, 0, sps.Length);
output.Write(sep, 0, sep.Length);
output.Write(pps, 0, pps.Length);
output.Write(sep, 0, sep.Length);
while (input.Position < input.Length)
{
var size = reader.ReadInt16();
packet.VersionPXCC = reader.ReadByte();
packet.MPT = reader.ReadByte();
packet.Sequence = reader.ReadUInt16();
packet.Timestamp = reader.ReadUInt32();
packet.Ssrc = reader.ReadUInt32();
if (packet.PayloadType == 96)
{
if (packet.CsrcCount > 0 || packet.Extension) throw new NotImplementedException();
var header0 = reader.ReadByte();
var header1 = reader.ReadByte();
var fragmentType = header0 & 0x1F; // should be 28 for video
if(fragmentType != 28) // 28 for video?
{
input.Position += size - 14;
continue;
}
var nalUnit = header0 & ~0x1F;
var nalType = header1 & 0x1F;
var start = (header1 & 0x80) > 0;
var end = (header1 & 0x40) > 0;
if(firstFrame)
{
output.Write(sep, 0, sep.Length);
output.WriteByte((byte)(nalUnit | fragmentType));
firstFrame = false;
}
for (int i = 0; i < size - 14; i++)
output.WriteByte(reader.ReadByte());
if (packet.Marker)
firstFrame = true;
}
else input.Position += size - 12;
}
}
}
</output>