
Recherche avancée
Médias (91)
-
MediaSPIP Simple : futur thème graphique par défaut ?
26 septembre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Video
-
avec chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
sans chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
config chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
Autres articles (70)
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...) -
XMP PHP
13 mai 2011, parDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)
Sur d’autres sites (9304)
-
Windows Pipes STDIN and STDOUT Parent Child proc communication IPC FFMPEG
15 octobre 2018, par Evren BingølI am writing a simple WINDOWS app which demonstrates piping,
I pass byte size data down to child proc, increment the value and send the char size data back to parent and loop until it reaches MAX_CHAR
Pretty much demonstration of "i++" with IPC.Parent Process
while(i<256){
bSuccess = WriteFile(g_hChildStd_IN_Wr, chBuf, sizeof(char), &dwWritten, NULL);
bSuccess = ReadFile(g_hChildStd_OUT_Rd, chBuf, sizeof(char), &dwRead, NULL); // IF THERE IS NO FFLUSH IT BLOCKS
}And in Child
while (i<256){
byte data=0;
fread(&data, sizeof(char), 1, stdout);
data++;
fwrite(&data, sizeof(char), 1, stdout);
//fflush(stdout); IF I DO NOT HAVE THIS PARENT BLOCKS ON READ
}First of all if I do not FFLUSH child proc stdout, the parent blocks on reading child’s stdout.
How can one run this code without having to fflush child’s stdout.
Closing the pipe after child’s first write is not an option as it is in a loop and needs to execute 256 times.
more generically I want the child to write N bytes to parent, parent read that N bytes do something and write back to child another N bytes and child does something with that N bytes and write to parent N bytes. This happens M times.
thing is I can not use fflush because my final goal is to use a child process that is not implemented by me.
My final goal is to pipe data to FFMPEG encode the data and read back from the stdin and do this over and over again with out having to fork a new FFMPEG process for each image frame but rather fork one instance of FFMPEG and pipe data in and read data out from it. And since I did not implement ffmpeg and I can not change the source code.
thanks
Thanks
-
Android ICS FFMPEG scale video not working
20 avril 2015, par Android-DeveloperI am using Guardian Project Android Java FFMPEG library to resize videos. Current code which is working on
android 5.0.1 / 5.1.0 / 4.4.4
:File fileTmp = getCacheDir();
FfmpegController fc = null;
try {
fc = new FfmpegController(this, fileTmp);
} catch (IOException e) {
e.printStackTrace();
}
String path = Environment.getExternalStorageDirectory().getPath() + "/Movies/nexus.mp4";
final String outPath = Environment.getExternalStorageDirectory().getPath() + "/Movies/test.mp4";
final Clip out = new Clip(path);
try {
if (fc != null) {
fc.convert(out, outPath, new ShellUtils.ShellCallback() {
@Override
public void shellOut(String shellLine) {
Log.e("", "SHELL OUT: " + shellLine);
}
@Override
public void processComplete(int exitValue) {
Log.e("", "PROCESS COMPLETE: " + exitValue);
}
});
}
} catch (Exception e) {
e.printStackTrace();
}Using this code on Android 4.0.4 (Ice Cream Sandwich) doesn’t do anything. While testing on other devices
exitValue
inprocessComplete
is always equal to0
, but on ICS it’s11
. Here is the output in LogCat :SHELL OUT: /data/data/org.hardartcore.ffmpeg/app_bin/ffmpeg -y -i /mnt/sdcard/Movies/NEXUS.mp4 -ab 160k -r ntsc-film -vf scale=568:320 -strict -2 /mnt/sdcard/Movies/Test.mp4
PROCESS COMPLETE: 11I don’t think it’s something from ffmpeg, more like a problem when the library is trying to execute ffmpeg executable from raw folder in internal memory, but I can’t see any logs or errors which indicate that too.
So my question is, if there is any mistake which I am doing using / running this code or something which can prevent ffmpeg executable from running on old devices with Android ICS ?
Thanks in advance !
-
C++ ffmpeg video missing frames and won't play in Quicktime
5 décembre 2019, par Oliver DainI wrote some C++ code that uses ffmpeg to encode a video. I’m having two strange issues :
- The final video is always missing 1 frame. That is, if I have it encode 10 frames the final video only has 9 (at least that’s what
ffprobe -show_frames -pretty $VIDEO | grep -F '[FRAME]' | wc -l
tells me. - The final video plays fine in some players (mpv and vlc) but not in Quicktime. Quicktime just shows a completely black screen.
My code is roughly this (modified a bit to remove types that are unique to our code base) :
First, I open the video file, write the headers and initialize things :
template <class ptrt="ptrt">
using UniquePtrWithDeleteFunction = std::unique_ptr>;
std::unique_ptr<ffmpegencodingframesink> FfmpegEncodingFrameSink::Create(
const std::string& dest_url) {
AVFormatContext* tmp_format_ctxt;
auto alloc_format_res = avformat_alloc_output_context2(&tmp_format_ctxt, nullptr, "mp4", dest_url.c_str());
if (alloc_format_res < 0) {
throw FfmpegException("Error opening output file.");
}
auto format_ctxt = UniquePtrWithDeleteFunction<avformatcontext>(
tmp_format_ctxt, CloseAvFormatContext);
AVStream* out_stream_video = avformat_new_stream(format_ctxt.get(), nullptr);
if (out_stream_video == nullptr) {
throw FfmpegException("Could not create outputstream");
}
auto codec_context = GetCodecContext(options);
out_stream_video->time_base = codec_context->time_base;
auto ret = avcodec_parameters_from_context(out_stream_video->codecpar, codec_context.get());
if (ret < 0) {
throw FfmpegException("Failed to copy encoder parameters to outputstream");
}
if (!(format_ctxt->oformat->flags & AVFMT_NOFILE)) {
ret = avio_open(&format_ctxt->pb, dest_url.c_str(), AVIO_FLAG_WRITE);
if (ret < 0) {
throw VideoDecodeException("Could not open output file: " + dest_url);
}
}
ret = avformat_init_output(format_ctxt.get(), nullptr);
if (ret < 0) {
throw FfmpegException("Unable to initialize the codec.");
}
ret = avformat_write_header(format_ctxt.get(), nullptr);
if (ret < 0) {
throw FfmpegException("Error occurred writing format header");
}
return std::unique_ptr<ffmpegencodingframesink>(
new FfmpegEncodingFrameSink(std::move(format_ctxt), std::move(codec_context)));
}
</ffmpegencodingframesink></avformatcontext></ffmpegencodingframesink></class>Then, every time I get a new frame to encode I pass it to this function (the frames are being decoded via ffmpeg from another mp4 file which Quicktime plays just fine) :
// If frame == nullptr then we're done and we're just flushing the encoder
// otherwise encode an actual frame
void FfmpegEncodingFrameSink::EncodeAndWriteFrame(
const AVFrame* frame) {
auto ret = avcodec_send_frame(codec_ctxt_.get(), frame);
if (ret < 0) {
throw FfmpegException("Error encoding the frame.");
}
AVPacket enc_packet;
enc_packet.data = nullptr;
enc_packet.size = 0;
av_init_packet(&enc_packet);
do {
ret = avcodec_receive_packet(codec_ctxt_.get(), &enc_packet);
if (ret == AVERROR(EAGAIN)) {
CHECK(frame != nullptr);
break;
} else if (ret == AVERROR_EOF) {
CHECK(frame == nullptr);
break;
} else if (ret < 0) {
throw FfmpegException("Error putting the encoded frame into the packet.");
}
assert(ret == 0);
enc_packet.stream_index = 0;
LOG(INFO) << "Writing packet to stream.";
av_interleaved_write_frame(format_ctxt_.get(), &enc_packet);
av_packet_unref(&enc_packet);
} while (ret == 0);
}Finally, in my destructor I close everything up like so :
FfmpegEncodingFrameSink::~FfmpegEncodingFrameSink() {
// Pass a nullptr to EncodeAndWriteFrame so it flushes the encoder
EncodeAndWriteFrame(nullptr);
// write mp4 trailer
av_write_trailer(format_ctxt_.get());
}If I run this passing
n
frames toEncodeAndWriteFrame
lineLOG(INFO) << "Writing packet to stream.";
gets runn
times indicating then
packets were written to the stream. Butffprobe
always shows onlyn - 1
frames int he video. And the final video doesn’t play on quicktime.What am I doing wrong ??
- The final video is always missing 1 frame. That is, if I have it encode 10 frames the final video only has 9 (at least that’s what