
Recherche avancée
Autres articles (112)
-
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 (10000)
-
How to pass data cuvidParseVideoData
28 avril 2022, par Serhan ErkovanI try to develop streaming program,I have 4k videos that 5 fps and 20 seconds, I encode frames with cuda encoder successfully, i send encoded data over rtp successfully but when i try to decode that data, i got 0 frame from
cuvidParseVideoData
. Should i do something before thecuvidParseVideoData
for example use ffmpeg demuxer ?

RecvDec.cpp


Server* server = new Server(8890 + thread_no);
server->recv_packets();
totBuf* totBuf = server->getTotalBuf();
 if (totBuf->perBuf == nullptr) {
 
 std::cout << prompt << "perBuf null!" << std::endl;
 nVideoBytes = 1;
 continue;
 }

pVideo = new uint8_t[totBuf->totSize];
memcpy(pVideo, totBuf->perBuf->perBuf, totBuf->totSize);
nVideoBytes = totBuf->perBuf->size;
int nFrameReturned = 0;
nFrameReturned = dec.Decode(pVideo, nVideoBytes);





NvDecoder.cpp


int NvDecoder::Decode(const uint8_t *pData, int nSize, int nFlags, int64_t nTimestamp)
{
 m_nDecodedFrame = 0;
 m_nDecodedFrameReturned = 0;
 CUVIDSOURCEDATAPACKET packet = { 0 };
 packet.payload = pData;
 packet.payload_size = nSize;
 packet.flags = nFlags | CUVID_PKT_TIMESTAMP;
 packet.timestamp = nTimestamp;
 if (!pData || nSize == 0) {
 packet.flags |= CUVID_PKT_ENDOFSTREAM;
 }
 NVDEC_API_CALL(cuvidParseVideoData(m_hParser, &packet));
 m_cuvidStream = 0;

 return m_nDecodedFrame;
}




Decode function always returns 0.
If i have to pass my datas from Ffmpeg demuxer, how can i pass type of uint8_t* data to demuxer ?
My data always starts with 0x00 0x00 0x00 0x01. This is start frame tag.


-
Encoding of video returns 0, and nothing written to the output file
14 juillet 2014, par AnilJI have written a code to record the webcam feed into a file on disk. I am attempting to do this using IContainer class rather than IMediaWriter class. I am pasting the code snippet below showing important sections of the code.
The problem I am facing is that nothing is being written to the file. Some of the observations I have made are as follows :
- In the Record() function, the ’while’ loop is kicked off, but the mVideoEncoder.encodeVideo(packet, frame, offset) ; method always returns zero (0). This results in no picture complete and no data is being written to the output file. Can you please provide clue as to what is missing ?
- I checked that the frame size is 80640, which confirms that frame has data.
- I see that only header and trailer is being written to the file.
Let me know if you need any other information.
public class WebcamRecorder {
private boolean StartVideoEncoder() {
boolean result = true;
// Open a container
mPositionInMicroseconds = 0;
mOutputContainer = IContainer.make();
mOutputContainer.open(mOutputFileName, IContainer.Type.WRITE, null);
// Create the video stream and get its coder
ICodec videoCodec = ICodec.findEncodingCodec(ICodec.ID.CODEC_ID_H264);
IStream videoStream = mOutputContainer.addNewStream(videoCodec);
mVideoEncoder = videoStream.getStreamCoder();
// Setup the stream coder
mFrameRate = IRational.make(1, 30);
mVideoEncoder.setWidth(Constants.RESAMPLE_PICT_WIDTH);
mVideoEncoder.setHeight(Constants.RESAMPLE_PICT_HEIGHT);
mVideoEncoder.setFrameRate(mFrameRate);
mVideoEncoder.setTimeBase(IRational.make(mFrameRate.getDenominator(),
mFrameRate.getNumerator()));
mVideoEncoder.setBitRate(350000);
mVideoEncoder.setNumPicturesInGroupOfPictures(30);
mVideoEncoder.setPixelType(IPixelFormat.Type.YUV420P);
mVideoEncoder.setFlag(IStreamCoder.Flags.FLAG_QSCALE, true);
mVideoEncoder.setGlobalQuality(0);
// Open the encoder
mVideoEncoder.open(null, null);
// Write the header
mOutputContainer.writeHeader();
return result;
}
public void Record() {
picture = GetNextPicture();
image = Utils.videoPictureToImage(picture);
// convert to the right image type
BufferedImage bgrScreen = ConvertToType(image, BufferedImage.TYPE_3BYTE_BGR);
IConverter converter = ConverterFactory.createConverter(bgrScreen, mVideoEncoder.getPixelType());
IVideoPicture frame = converter.toPicture(bgrScreen, mPositionInMicroseconds);
frame.setQuality(0);
IPacket packet = IPacket.make();
int offset = 0;
while (offset < frame.getSize()) {
int bytesEncoded = mVideoEncoder.encodeVideo(packet, frame, offset);
if (bytesEncoded < 0) {
throw new RuntimeException("Unable to encode video.");
}
offset += bytesEncoded;
if (packet.isComplete()) {
System.out.println("Packet is complete");
if (mOutputContainer.writePacket(packet) < 0) {
throw new RuntimeException(
"Could not write packet to container.");
}
// Update frame time
mPositionInMicroseconds += (mFrameRate.getDouble() * Math.pow(1000, 2));
break;
}
}
}
public void Cleanup() {
if (mOutputContainer != null) {
mOutputContainer.writeTrailer();
mOutputContainer.close();
// mOutputContainer.flushPackets();
}
if (mVideoEncoder != null) {
mVideoEncoder.close();
}
}
} -
FFmpeg returns empty byte when retrieving frames with python
13 août 2020, par Ronald SaunfeI am trying to retrieve frames from a video frame by frame using ffmpeg which i downloaded here but i get an empty response as byte :
i need someone to outline what my problem is.I got the solution from a blog here
Here is my source code :


import subprocess as sp

command=['bin\\ffmpeg.exe',
'-i','%s'%self.source,
'-f','image2pipe',
'-pix_fmt','rgb24',
'-vcodex','rawvideo','-']

self.pipe = sp.Popen(command, stdout = sp.PIPE, bufsize = 10**8)
Raw_image = self.pipe.stdout.read(420*360*3)