
Recherche avancée
Médias (1)
-
The Slip - Artworks
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
Autres articles (34)
-
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
Taille des images et des logos définissables
9 février 2011, parDans beaucoup d’endroits du site, logos et images sont redimensionnées pour correspondre aux emplacements définis par les thèmes. L’ensemble des ces tailles pouvant changer d’un thème à un autre peuvent être définies directement dans le thème et éviter ainsi à l’utilisateur de devoir les configurer manuellement après avoir changé l’apparence de son site.
Ces tailles d’images sont également disponibles dans la configuration spécifique de MediaSPIP Core. La taille maximale du logo du site en pixels, on permet (...) -
Gestion de la ferme
2 mars 2010, parLa ferme est gérée dans son ensemble par des "super admins".
Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
Dans un premier temps il utilise le plugin "Gestion de mutualisation"
Sur d’autres sites (5745)
-
Why does my lambda doesn't end with an expected request end event ? [on hold]
16 avril 2019, par Nachum Freedmanconst now = (...a) =>
console.log(...a, Math.floor(new Date().getTime() / 1000) % 3600);
exports.handler = (event, context, callback) => {
console.log("PROCESS START");
const FROM_BUCKET = event.Records[0].s3.bucket.name;
const Key = decodeURIComponent(
event.Records[0].s3.object.key.replace(/\+/g, " ")
);
const uploadKey = Key.replace(/.webm/, ".mp4");
console.log("FROM BUCKET", FROM_BUCKET);
console.log("Recived key", Key);
const slicedFilename = Key.slice(-4) !== "webm" ? Key.slice(-4) : ".webm";
const extension =
slicedFilename === ".mp4"
? ".mp4"
: slicedFilename === ".pcm"
? ".pcm"
: slicedFilename === ".webm"
? ".webm"
: console.log("THE FILE NAME IS INCORRECT PLEASE CHECK @:", Key);
console.log("Extension detected is", extension);
const downloadKey =
Key.slice(-4) !== "webm"
? Key.slice(0, -4) + extension
: Key.slice(0, -5) + extension;
const downloadParams = { Bucket: FROM_BUCKET, Key: downloadKey };
console.log("Downloading file from S3", downloadParams);
const mobileDownloadExtension =
extension === ".mp4" ? ".pcm" : extension === ".pcm" ? ".mp4" : null;
const mobileDownloadParams = {
Bucket: FROM_BUCKET,
Key: Key.slice(0, -4) + mobileDownloadExtension
};
console.log("Downloading file from S3", mobileDownloadParams);
const tmpNamespace = Math.random();
const isMobile = extension === ".mp4" || extension === ".pcm";
let firstDigit = 0;
let restOfTheOffset = 0;
if (isMobile) {
console.log(
"If apply, second key to download is a file type",
mobileDownloadExtension
);
const offsetTime = Key.slice(
Key.lastIndexOf("_") + 1,
Key.indexOf(".")
).replace("-", "");
if (offsetTime > 999) {
firstDigit = 1;
restOfTheOffset = offsetTime.slice(1, offsetTime.length);
} else {
firstDigit = 0;
restOfTheOffset = offsetTime;
}
}
console.log("FIle recieved from Mobile?", isMobile);
Promise.all([
// download file from s3
new Promise((resolve, reject) =>
s3.getObject(downloadParams, (err, response) => {
if (err) {
console.error(
"Error while downloading file from S3",
downloadParams,
err.code,
"-",
err.message
);
return reject(err);
}
console.log("Successfully downloaed file from S3", downloadParams);
fs.writeFile(
tmp + "/input" + tmpNamespace + extension,
response.Body,
err =>
err
? console.log(err.code, "-", err.message) || reject(err)
: console.log(tmp + "/input" + tmpNamespace + extension) ||
resolve()
);
})
),
new Promise((resolve, reject) => {
extension !== ".mp4" && extension !== ".pcm"
? resolve()
: s3.getObject(mobileDownloadParams, (err, response) => {
if (err) {
console.error(
"Error while downloading file from S3",
mobileDownloadParams,
err.code,
"-",
err.message
);
return reject(err);
}
console.log(
"Successfully downloaed file from S3",
mobileDownloadParams
);
fs.writeFile(
tmp + "/input" + tmpNamespace + mobileDownloadExtension,
response.Body,
err =>
err
? console.log(err.code, "-", err.message) || reject(err)
: console.log(
tmp + "/input" + tmpNamespace + mobileDownloadExtension
) || resolve()
);
});
})
])
.then(() =>
Promise.all([
// call the answerVideoReady -> PROCESSING mobileDownloadExtnesion is actually the second file we seek (if mp4 then pcm)
// ,
isMobile
? Promise.resolve()
.then(() => {
new Promise((resolve, reject) => {
console.log("CALLING VIDEO PROCESSING", Key);
videoProcessing(Key);
resolve();
});
})
.then(
() =>
// run ffmpeg
// ffmpeg -i tmp/input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
now("FFMPEG CONVERT PCM TO WAV START") ||
new Promise((resolve, reject) =>
spawn("./ffmpeg/ffmpeg", [
"-f",
"s16le",
"-ar",
"16000",
"-ac",
"1",
"-i",
tmp + "/input" + tmpNamespace + ".pcm",
"-ar",
"44100",
"-ac",
"2",
tmp + "/input" + tmpNamespace + ".wav"
]).on("close", code =>
console.log("FFMPEG CONVERT PCM TO WAV SUCCESS", code) ||
!code
? resolve()
: reject()
)
)
)
.then(
() =>
// run ffmpeg
// ffmpeg -i tmp/input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
//more stuff
now("FFMPEG COMBINE MP4 AND WAV START") ||
new Promise(
(resolve, reject) =>
console.log(
[
"-i",
tmp + "/input" + tmpNamespace + ".mp4",
"-itsoffset",
"-" + firstDigit + "." + restOfTheOffset,
"-i",
tmp + "/input" + tmpNamespace + ".wav",
"-movflags",
"faststart",
"-filter_complex",
" [1:0] apad ",
"-shortest",
tmp + "/output" + tmpNamespace + ".mp4"
].join(" ")
) ||
spawn("./ffmpeg/ffmpeg", [
"-i",
tmp + "/input" + tmpNamespace + ".mp4",
"-itsoffset",
"-" + firstDigit + "." + restOfTheOffset,
"-i",
tmp + "/input" + tmpNamespace + ".wav",
"-movflags",
"faststart",
"-filter_complex",
" [1:0] apad ",
"-shortest",
tmp + "/output" + tmpNamespace + ".mp4"
]).on("close", code =>
console.log(
"FFMPEG COMBINE MP4 AND WAV SUCCESS",
code
) || !code
? resolve()
: reject()
)
)
)
: Promise.resolve()
.then(() => {
new Promise((resolve, reject) => {
console.log("CALLING VIDEO PROCESSING", Key);
videoProcessing(Key);
resolve();
});
})
.then(
() =>
now("FFMPEG SEND WEBM START") ||
new Promise((resolve, reject) => {
exec(
"./sed -i '1,4d;$d' " +
tmp +
"/input" +
tmpNamespace +
".webm"
).on(
"close",
code =>
console.log("FFMPEG SEND WEBM SUCCESS", code) ||
(!code ? resolve() : reject())
);
})
)
.then(
() =>
// run ffmpeg
// ffmpeg -i tmp/input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
now("FFMPEG WEBM WEB READY START") ||
new Promise((resolve, reject) =>
(a => {
a.stdout.on("data", data => {
//console.log(`child stdout:\n${data}`);
});
a.stderr.on("data", data => {
//console.log(`child stdout:\n${data}`);
});
return a;
})(
spawn("./ffmpeg/ffmpeg", [
"-i",
tmp + "/input" + tmpNamespace + extension,
"-movflags",
"faststart",
"-acodec",
"aac",
"-vcodec",
"h264",
"-preset",
"slow",
"-crf",
"26",
"-r",
"25",
tmp + "/output" + tmpNamespace + ".mp4"
])
).on("close", code =>
console.log(
"FFMPEG WEBM WEB READY FINISHED WITH:",
code
) || !code
? resolve()
: reject()
)
)
)
])
)
.then(
() =>
new Promise((resolve, reject) =>
// upload the output.mp4 to s3
fs.readFile(
tmp + "/output" + tmpNamespace + ".mp4",
(err, filedata) => {
if (err) {
console.log("ERROR WHILE TRYING TO READ FILE", err);
throw err;
}
console.log("KEEEEYYY", uploadKey),
s3.putObject(
{
Bucket: TO_BUCKET,
Key: uploadKey,
Body: filedata
},
(err, response) => {
console.log(response);
if (err) {
console.log(
"ERROR WHILE UPLOADING FILE TO S3",
err,
response
);
return reject(err);
}
//uploading file
console.log(
"Successfully uploaded file to " + TO_BUCKET,
Key
);
resolve();
}
);
}
)
)
// call the answerVideoReady -> COMPLETED, context.success or ERROR, context.fail or error on set status to ERROR -> fail
)
.then(p =>
videoCompleted(Key)
.then(c => context.succeed())
.catch(es => context.fail(es))
)
.catch(
e =>
console.log("catch for upload error with:", e) ||
videoError(Key)
.then(p => context.fail(e))
.catch(ee => context.fail(ee))
);
}; -
Problem using -to, combining -to with framerate change
21 avril 2019, par LLLI have a question regarding the use of the
-to
option :In FFmpeg version 3 (at least 3.2.12 included in Debian 9),
-to
was an output only option. In more recent version it seems to be accepted as an input option as well (as written here https://www.ffmpeg.org/ffmpeg.html#Main-options) but I run into limitations when using in conjunction with-r
.
What I expect, if I increase the framerate of the input, is that the output will be shorter. But it is not the case if I’m not using the whole input :ffmpeg -r 30 -to 10 -i my18fpsFile.avi out.mp4
out.mp4 will be 10 seconds long, so the input has been read further than 10 seconds in.
In other terms, even as an input option, it seems to behave like an output option.Tested with ffmpeg version N-48102-g7cab5471b2-static https://johnvansickle.com/ffmpeg/ on Debian Stretch.
Thanks for your advice or confirmation that this is not normal.
Edit : Thank you Gyan for your reply and your explanation.
While it seems to work, some testing makes me remember why I wasn’t satisfied with this solution :
Stating-r
as an input option forces the framerate for the reading of the input and ensures one frame in the input is one frame in the output. This is what I want.Using yours solution with the filter on the output does cause dropped frames sometimes (which I have never had with
-r
).
However, some more testing draws me to the conclusion that the dropped frames problem happens only with an mkv container ! Your solution works fine with other containers (as far as I have tested), but with mkv (and various video codecs, it doesn’t seem to make a difference), I get a lot of dropped frames.
Using-r
with mkv causes no dropped frames.In conclusion, I’m not sure how to generalize this solution, as avoiding mkv is annoying for me.
But thank you, and if anyone has some more experience or ideas, please chime in.Adding logs :
Note the line :
[avi @ 0x6cf6880] parser not found for codec rawvideo, packets or times may be invalid
I guess it is the cause of the problem ? Is there a solution if the files are raw avi with no index ?Although the warning is the same, I don’t get dropped frames if I use the exact same command only with f.mov instead of mkv.
ffmpeg -v 40 -to 10 -i f.avi -vf setpts=N/30/TB -r 30 f.mkv
ffmpeg version N-48102-g7cab5471b2-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --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-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. 26.100 / 56. 26.100
libavcodec 58. 46.100 / 58. 46.100
libavformat 58. 26.100 / 58. 26.100
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
[avi @ 0x6cf6880] parser not found for codec rawvideo, packets or times may be invalid.
Last message repeated 1 times
Input #0, avi, from 'f.avi':
Duration: 00:01:11.62, start: 0.000000, bitrate: 846067 kb/s
Stream #0:0: Video: rawvideo, 1 reference frame, bgr24, 1632x1200, 846638 kb/s, 18 fps, 18 tbr, 18 tbn, 18 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[graph 0 input from stream 0:0 @ 0x6d0fc00] w:1632 h:1200 pixfmt:bgr24 tb:1000/17999 fr:17999/1000 sar:0/1 sws_param:flags=2
[auto_scaler_0 @ 0x6d105c0] w:iw h:ih flags:'bicubic' interl:0
[format @ 0x6cfe5c0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_setpts_0' and the filter 'format'
[trim_in_0_0 @ 0x6d109c0] TB:0.055559 FRAME_RATE:17.999000 SAMPLE_RATE:nan
[auto_scaler_0 @ 0x6d105c0] w:1632 h:1200 fmt:bgr24 sar:0/1 -> w:1632 h:1200 fmt:yuv444p sar:0/1 flags:0x4
[libx264 @ 0x6cfb2c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x6cfb2c0] profile High 4:4:4 Predictive, level 4.0, 4:4:4, 8-bit
[libx264 @ 0x6cfb2c0] 264 - core 157 r2935 545de2f - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, matroska, to 'f.mkv':
Metadata:
encoder : Lavf58.26.100
Stream #0:0: Video: h264 (libx264), 1 reference frame (H264 / 0x34363248), yuv444p, 1632x1200, q=-1--1, 30 fps, 1k tbn, 30 tbc
Metadata:
encoder : Lavc58.46.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Past duration 0.666481 too large
*** dropping frame 5 from stream 0 at ts 3
Past duration 0.666191 too large
*** dropping frame 9 from stream 0 at ts 8
Past duration 0.665916 too large
*** dropping frame 13 from stream 0 at ts 13
Past duration 0.665642 too large
*** dropping frame 17 from stream 0 at ts 18
Past duration 0.665367 too large
*** dropping frame 21 from stream 0 at ts 23
Past duration 0.665092 too large
*** dropping frame 25 from stream 0 at ts 28
Past duration 0.664803 too large
*** dropping frame 29 from stream 0 at ts 33me=00:00:00.00 bitrate=N/A dup=0 drop=6 speed= 0x
Past duration 0.664528 too large
*** dropping frame 33 from stream 0 at ts 38
Past duration 0.664253 too large
*** dropping frame 37 from stream 0 at ts 43
Past duration 0.663979 too large
*** dropping frame 41 from stream 0 at ts 48
Past duration 0.663689 too large
*** dropping frame 45 from stream 0 at ts 53
Past duration 0.663414 too large 1kB time=00:00:00.00 bitrate=N/A dup=0 drop=11 speed= 0x
*** dropping frame 49 from stream 0 at ts 58
Past duration 0.663139 too large
*** dropping frame 53 from stream 0 at ts 63ime=00:00:00.00 bitrate=5768.0kbits/s dup=0 drop=12 speed=0.00049x
Past duration 0.662865 too large
*** dropping frame 57 from stream 0 at ts 68ime=00:00:00.13 bitrate= 43.0kbits/s dup=0 drop=13 speed=0.0514x
Past duration 0.662590 too large
*** dropping frame 61 from stream 0 at ts 73ime=00:00:00.30 bitrate= 19.2kbits/s dup=0 drop=14 speed=0.094x
Past duration 0.662300 too large
*** dropping frame 65 from stream 0 at ts 78ime=00:00:00.46 bitrate= 12.3kbits/s dup=0 drop=15 speed=0.125x
Past duration 0.662025 too large 1kB time=00:00:00.60 bitrate= 9.6kbits/s dup=0 drop=16 speed=0.142x
*** dropping frame 69 from stream 0 at ts 83
Past duration 0.661751 too large 1kB time=00:00:00.76 bitrate= 7.5kbits/s dup=0 drop=17 speed=0.162x
*** dropping frame 73 from stream 0 at ts 88
Past duration 0.661476 too large 1kB time=00:00:00.93 bitrate= 6.2kbits/s dup=0 drop=18 speed=0.175x
*** dropping frame 77 from stream 0 at ts 93
Past duration 0.661201 too large
*** dropping frame 81 from stream 0 at ts 98ime=00:00:01.13 bitrate=8036.9kbits/s dup=0 drop=19 speed=0.193x
Past duration 0.660912 too large
*** dropping frame 85 from stream 0 at ts 103me=00:00:01.30 bitrate=7005.3kbits/s dup=0 drop=20 speed=0.204x
Past duration 0.660637 too large
*** dropping frame 89 from stream 0 at ts 108me=00:00:01.46 bitrate=6208.3kbits/s dup=0 drop=21 speed=0.21x
Past duration 0.660362 too large
*** dropping frame 93 from stream 0 at ts 113
Past duration 0.660088 too large 1113kB time=00:00:01.76 bitrate=5154.9kbits/s dup=0 drop=23 speed=0.235x
*** dropping frame 97 from stream 0 at ts 118
Past duration 0.659813 too large 1113kB time=00:00:01.83 bitrate=4969.4kbits/s dup=0 drop=24 speed=0.229x
*** dropping frame 101 from stream 0 at ts 123
Past duration 0.659523 too large
*** dropping frame 105 from stream 0 at ts 128e=00:00:02.13 bitrate=4270.8kbits/s dup=0 drop=25 speed=0.235x
Past duration 0.659248 too large
*** dropping frame 109 from stream 0 at ts 133
Past duration 0.658974 too large 2399kB time=00:00:02.43 bitrate=8075.2kbits/s dup=0 drop=27 speed=0.252x
*** dropping frame 113 from stream 0 at ts 138
Past duration 0.658699 too large
*** dropping frame 117 from stream 0 at ts 143e=00:00:02.63 bitrate=7462.1kbits/s dup=0 drop=28 speed=0.25x
Past duration 0.658424 too large
*** dropping frame 121 from stream 0 at ts 148
Past duration 0.658134 too large 2399kB time=00:00:02.93 bitrate=6699.1kbits/s dup=0 drop=30 speed=0.266x
*** dropping frame 125 from stream 0 at ts 153
Past duration 0.657860 too large
*** dropping frame 129 from stream 0 at ts 158e=00:00:03.13 bitrate=6271.6kbits/s dup=0 drop=31 speed=0.265x
Past duration 0.657585 too large
*** dropping frame 133 from stream 0 at ts 163
Past duration 0.657310 too large 2399kB time=00:00:03.33 bitrate=5895.4kbits/s dup=0 drop=33 speed=0.271x
*** dropping frame 137 from stream 0 at ts 168e=00:00:03.46 bitrate=5667.6kbits/s dup=0 drop=33 speed=0.269x
Past duration 0.657036 too large
*** dropping frame 141 from stream 0 at ts 173
Past duration 0.656746 too large
No more output streams to write to, finishing.e=00:00:03.80 bitrate=5171.0kbits/s dup=0 drop=35 speed=0.279x
frame= 145 fps=8.0 q=-1.0 Lsize= 4590kB time=00:00:05.90 bitrate=6372.0kbits/s dup=0 drop=35 speed=0.326x
video:4588kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.042357%
Input file #0 (f.avi):
Input stream #0:0 (video): 181 packets read (1063411200 bytes); 181 frames decoded;
Total: 181 packets (1063411200 bytes) demuxed
Output file #0 (f.mkv):
Output stream #0:0 (video): 145 frames encoded; 145 packets muxed (4698140 bytes);
Total: 145 packets (4698140 bytes) muxed
[AVIOContext @ 0x6cfe940] Statistics: 20 seeks, 33 writeouts
[libx264 @ 0x6cfb2c0] frame I:4 Avg QP:25.17 size: 84331
[libx264 @ 0x6cfb2c0] frame P:40 Avg QP:26.64 size: 47807
[libx264 @ 0x6cfb2c0] frame B:101 Avg QP:27.85 size: 24236
[libx264 @ 0x6cfb2c0] consecutive B-frames: 4.1% 8.3% 2.1% 85.5%
[libx264 @ 0x6cfb2c0] mb I I16..4: 29.5% 0.0% 70.5%
[libx264 @ 0x6cfb2c0] mb P I16..4: 12.0% 0.0% 20.1% P16..4: 38.5% 16.5% 4.5% 0.0% 0.0% skip: 8.4%
[libx264 @ 0x6cfb2c0] mb B I16..4: 1.8% 0.0% 2.7% B16..8: 46.5% 11.4% 1.6% direct: 7.6% skip:28.4% L0:40.6% L1:55.6% BI: 3.8%
[libx264 @ 0x6cfb2c0] coded y,u,v intra: 55.9% 11.8% 19.2% inter: 22.1% 1.1% 2.6%
[libx264 @ 0x6cfb2c0] i16 v,h,dc,p: 30% 15% 7% 48%
[libx264 @ 0x6cfb2c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 16% 18% 7% 8% 8% 7% 7% 3%
[libx264 @ 0x6cfb2c0] Weighted P-Frames: Y:17.5% UV:10.0%
[libx264 @ 0x6cfb2c0] ref P L0: 54.3% 15.8% 20.0% 8.8% 1.2%
[libx264 @ 0x6cfb2c0] ref B L0: 87.9% 9.3% 2.8%
[libx264 @ 0x6cfb2c0] ref B L1: 95.9% 4.1%
[libx264 @ 0x6cfb2c0] kb/s:6263.27
[AVIOContext @ 0x6cff580] Statistics: 1063666996 bytes read, 4 seeks -
FFMPEG extracting 1 second resized with copy codec
28 avril 2019, par boblapointeHow can I extract 1 second ( using fast seek ) from a video, resize it, using vp9 ? I always get the same errors. Here are the bare bone commands I’m trying :
ffmpeg -ss 00:00:10 -i test.webm -to 00:00:01 -filter:v "scale=min(iw\,1280):min(ih\,720):force_original_aspect_ratio=decrease" -c:v libvpx-vp9 -y output.webm
It returns :
"Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
After playing around I realize that this will work :
ffmpeg -ss 00:00:10 -i test.webm -to 00:00:01 -c copy -y output.webm
Not ideal but at least it works, so I add the filter :
ffmpeg -ss 00:00:10 -i test.webm -to 00:00:01 -filter:v "scale=min(iw\,1280):min(ih\,720):force_original_aspect_ratio=decrease" -c copy -y output.webm
Ant then I get :
"Filtering and streamcopy cannot be used together."
I’ve tried all kinds of combinations, unsuccessfully. Any hint would be appreciated. Thank you
Here is the full log of the first command :
ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-16ubuntu3) configuration : —prefix=/usr —extra-version=0ubuntu0.18.04.1 —toolchain=hardened —libdir=/usr/lib/x86_64-linux-gnu —incdir=/usr/include/x86_64-linux-gnu —enable-gpl —disable-stripping —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-libmp3lame —enable-libmysofa —enable-libopenjpeg —enable-libopenmpt —enable-libopus —enable-libpulse —enable-librubberband —enable-librsvg —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-libxml2 —enable-libxvid —enable-libzmq —enable-libzvbi —enable-omx —enable-openal —enable-opengl —enable-sdl2 —enable-libdc1394 —enable-libdrm —enable-libiec61883 —enable-chromaprint —enable-frei0r —enable-libopencv —enable-libx264 —enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 Splitting the commandline. Reading option ’-ss’ ... matched as option ’ss’ (set the start time offset) with argument ’00:00:10’. Reading option ’-i’ ... matched as input url with argument ’test.webm’. Reading option ’-to’ ... matched as option ’to’ (record or transcode stop time) with argument ’00:00:01’. Reading option ’-filter:v’ ... matched as option ’filter’ (set stream filtergraph) with argument ’scale=min(iw\,1280):min(ih\,720):force_original_aspect_ratio=decrease’. Reading option ’-c:v’ ... matched as option ’c’ (codec name) with argument ’libvpx-vp9’. Reading option ’-y’ ... matched as option ’y’ (overwrite output files) with argument ’1’. Reading option ’-v’ ... matched as option ’v’ (set logging level) with argument ’debug’. Reading option ’output.webm’ ... matched as output url. Finished splitting the commandline. Parsing a group of options : global . Applying option y (overwrite output files) with argument 1. Applying option v (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options : input url test.webm. Applying option ss (set the start time offset) with argument 00:00:10. Successfully parsed a group of options. Opening an input file : test.webm. [NULL @ 0x55ce679f8920] Opening ’test.webm’ for reading [file @ 0x55ce679f9340] Setting default whitelist ’file,crypto’ [matroska,webm @ 0x55ce679f8920] Format matroska,webm probed with size=2048 and score=100 st:0 removing common factor 1000000 from timebase [matroska,webm @ 0x55ce679f8920] Before avformat_find_stream_info() pos : 566 bytes read:32768 seeks:0 nb_streams:1 [matroska,webm @ 0x55ce679f8920] All info found [matroska,webm @ 0x55ce679f8920] After avformat_find_stream_info() pos : 72449 bytes read:72449 seeks:0 frames:1 Input #0, matroska,webm, from ’test.webm’ : Metadata : ENCODER : Lavf57.83.100 Duration : 00:00:15.03, start : 5.016000, bitrate : 1146 kb/s Stream #0:0(eng), 1, 1/1000 : Video : vp9 (Profile 0), 1 reference frame, yuv420p(tv), 1280x720, 0/1, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default) Metadata : DURATION : 00:00:15.025000000 Successfully opened the file. Parsing a group of options : output url output.webm. Applying option to (record or transcode stop time) with argument 00:00:01. Applying option filter:v (set stream filtergraph) with argument scale=min(iw\,1280):min(ih\,720):force_original_aspect_ratio=decrease. Applying option c:v (codec name) with argument libvpx-vp9. Successfully parsed a group of options. Opening an output file : output.webm. [file @ 0x55ce67b1e820] Setting default whitelist ’file,crypto’ Successfully opened the file. detected 8 logical cores Stream mapping : Stream #0:0 -> #0:0 (vp9 (native) -> vp9 (libvpx-vp9)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) Last message repeated 1 times [matroska,webm @ 0x55ce679f8920] first_dts 5016 not matching first dts 10395 (pts 10395, duration 41) in the queue cur_dts is invalid (this is harmless if it occurs once at the start per stream) Last message repeated 6 times [Parsed_scale_0 @ 0x55ce67a7c520] Setting ’w’ to value ’min(iw,1280)’ [Parsed_scale_0 @ 0x55ce67a7c520] Setting ’h’ to value ’min(ih,720)’ [Parsed_scale_0 @ 0x55ce67a7c520] Setting ’force_original_aspect_ratio’ to value ’decrease’ [Parsed_scale_0 @ 0x55ce67a7c520] Setting ’flags’ to value ’bicubic’ [Parsed_scale_0 @ 0x55ce67a7c520] w:min(iw,1280) h:min(ih,720) flags :’bicubic’ interl:0 [graph 0 input from stream 0:0 @ 0x55ce67a7cea0] Setting ’video_size’ to value ’1280x720’ [graph 0 input from stream 0:0 @ 0x55ce67a7cea0] Setting ’pix_fmt’ to value ’0’ [graph 0 input from stream 0:0 @ 0x55ce67a7cea0] Setting ’time_base’ to value ’1/1000’ [graph 0 input from stream 0:0 @ 0x55ce67a7cea0] Setting ’pixel_aspect’ to value ’1/1’ [graph 0 input from stream 0:0 @ 0x55ce67a7cea0] Setting ’sws_param’ to value ’flags=2’ [graph 0 input from stream 0:0 @ 0x55ce67a7cea0] Setting ’frame_rate’ to value ’24000/1001’ [graph 0 input from stream 0:0 @ 0x55ce67a7cea0] w:1280 h:720 pixfmt:yuv420p tb:1/1000 fr:24000/1001 sar:1/1 sws_param:flags=2 [format @ 0x55ce67ad7d60] compat : called with args=[yuv420p|yuva420p|yuv422p|yuv440p|yuv444p|gbrp] [format @ 0x55ce67ad7d60] Setting ’pix_fmts’ to value ’yuv420p|yuva420p|yuv422p|yuv440p|yuv444p|gbrp’ [AVFilterGraph @ 0x55ce67aec740] query_formats : 6 queried, 5 merged, 0 already done, 0 delayed [Parsed_scale_0 @ 0x55ce67a7c520] w:1280 h:720 fmt:yuv420p sar:1/1 -> w:1280 h:720 fmt:yuv420p sar:1/1 flags:0x4 [libvpx-vp9 @ 0x55ce67b32200] v1.7.0 [libvpx-vp9 @ 0x55ce67b32200] —prefix=/usr —enable-pic —enable-shared —disable-install-bins —disable-install-srcs —size-limit=16384x16384 —enable-postproc —enable-multi-res-encoding —enable-temporal-denoising —enable-vp9-temporal-denoising —enable-vp9-postproc —target=x86_64-linux-gcc [libvpx-vp9 @ 0x55ce67b32200] vpx_codec_enc_cfg [libvpx-vp9 @ 0x55ce67b32200] generic settings g_usage : 0 g_threads : 8 g_profile : 0 g_w : 320 g_h : 240 g_bit_depth : 8 g_input_bit_depth : 8 g_timebase : 1/30 g_error_resilient : 0 g_pass : 0 g_lag_in_frames : 25 [libvpx-vp9 @ 0x55ce67b32200] rate control settings rc_dropframe_thresh : 0 rc_resize_allowed : 0 rc_resize_up_thresh : 60 rc_resize_down_thresh : 30 rc_end_usage : 0 rc_twopass_stats_in : (nil)(0) rc_target_bitrate : 256 [libvpx-vp9 @ 0x55ce67b32200] quantizer settings rc_min_quantizer : 0 rc_max_quantizer : 63 [libvpx-vp9 @ 0x55ce67b32200] bitrate tolerance rc_undershoot_pct : 25 rc_overshoot_pct : 25 [libvpx-vp9 @ 0x55ce67b32200] decoder buffer model rc_buf_sz : 6000 rc_buf_initial_sz : 4000 rc_buf_optimal_sz : 5000 [libvpx-vp9 @ 0x55ce67b32200] 2 pass rate control settings rc_2pass_vbr_bias_pct : 50 rc_2pass_vbr_minsection_pct : 0 rc_2pass_vbr_maxsection_pct : 2000 [libvpx-vp9 @ 0x55ce67b32200] keyframing settings kf_mode : 1 kf_min_dist : 0 kf_max_dist : 128 [libvpx-vp9 @ 0x55ce67b32200] [libvpx-vp9 @ 0x55ce67b32200] vpx_codec_enc_cfg [libvpx-vp9 @ 0x55ce67b32200] generic settings g_usage : 0 g_threads : 0 g_profile : 0 g_w : 1280 g_h : 720 g_bit_depth : 8 g_input_bit_depth : 8 g_timebase : 1001/24000 g_error_resilient : 0 g_pass : 0 g_lag_in_frames : 25 [libvpx-vp9 @ 0x55ce67b32200] rate control settings rc_dropframe_thresh : 0 rc_resize_allowed : 0 rc_resize_up_thresh : 60 rc_resize_down_thresh : 30 rc_end_usage : 0 rc_twopass_stats_in : (nil)(0) rc_target_bitrate : 200 [libvpx-vp9 @ 0x55ce67b32200] quantizer settings rc_min_quantizer : 0 rc_max_quantizer : 63 [libvpx-vp9 @ 0x55ce67b32200] bitrate tolerance rc_undershoot_pct : 25 rc_overshoot_pct : 25 [libvpx-vp9 @ 0x55ce67b32200] decoder buffer model rc_buf_sz : 6000 rc_buf_initial_sz : 4000 rc_buf_optimal_sz : 5000 [libvpx-vp9 @ 0x55ce67b32200] 2 pass rate control settings rc_2pass_vbr_bias_pct : 50 rc_2pass_vbr_minsection_pct : 0 rc_2pass_vbr_maxsection_pct : 2000 [libvpx-vp9 @ 0x55ce67b32200] keyframing settings kf_mode : 1 kf_min_dist : 0 kf_max_dist : 128 [libvpx-vp9 @ 0x55ce67b32200] [libvpx-vp9 @ 0x55ce67b32200] vpx_codec_control [libvpx-vp9 @ 0x55ce67b32200] VP8E_SET_CPUUSED : 1 [libvpx-vp9 @ 0x55ce67b32200] VP8E_SET_ARNR_MAXFRAMES : 0 [libvpx-vp9 @ 0x55ce67b32200] VP8E_SET_ARNR_STRENGTH : 3 [libvpx-vp9 @ 0x55ce67b32200] VP8E_SET_ARNR_TYPE : 3 [libvpx-vp9 @ 0x55ce67b32200] VP8E_SET_STATIC_THRESHOLD : 0 [libvpx-vp9 @ 0x55ce67b32200] VP9E_SET_COLOR_SPACE : 0 [libvpx-vp9 @ 0x55ce67b32200] VP9E_SET_COLOR_RANGE : 0 [libvpx-vp9 @ 0x55ce67b32200] VP9E_SET_TARGET_LEVEL : 255 [libvpx-vp9 @ 0x55ce67b32200] Using deadline : 1000000 Output #0, webm, to ’output.webm’ : Metadata : encoder : Lavf57.83.100 Stream #0:0(eng), 0, 1/1000 : Video : vp9 (libvpx-vp9), 1 reference frame, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 0/1, q=-1—1, 200 kb/s, 23.98 fps, 1k tbn, 23.98 tbc (default) Metadata : DURATION : 00:00:15.025000000 encoder : Lavc57.107.100 libvpx-vp9 Side data : cpb : bitrate max/min/avg : 0/0/0 buffer size : 0 vbv_delay : -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) Last message repeated 120 times [out_0_0 @ 0x55ce67ac35a0] EOF on sink link out_0_0:default. No more output streams to write to, finishing. [webm @ 0x55ce67b2e2a0] get_metadata_duration returned : 15025000 [webm @ 0x55ce67b2e2a0] Write early duration from recording time = 1000 [webm @ 0x55ce67b2e2a0] end duration = 0 [webm @ 0x55ce67b2e2a0] stream 0 end duration = 0 frame= 0 fps=0.0 q=0.0 Lsize= 1kB time=00:00:00.00 bitrate=N/A speed= 0x video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead : unknown Input file #0 (test.webm) : Input stream #0:0 (video) : 120 packets read (1031599 bytes) ; 112 frames decoded ; Total : 120 packets (1031599 bytes) demuxed Output file #0 (output.webm) : Output stream #0:0 (video) : 0 frames encoded ; 0 packets muxed (0 bytes) ; Total : 0 packets (0 bytes) muxed Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used) 112 frames successfully decoded, 0 decoding errors [AVIOContext @ 0x55ce67b2e9a0] Statistics : 13 seeks, 9 writeouts [AVIOContext @ 0x55ce67a01660] Statistics : 2137508 bytes read, 4 seeks