
Recherche avancée
Médias (9)
-
Stereo master soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Elephants Dream - Cover of the soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#3 The Safest Place
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (60)
-
List of compatible distributions
26 avril 2011, parThe table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...) -
Changer son thème graphique
22 février 2011, parLe thème graphique ne touche pas à la disposition à proprement dite des éléments dans la page. Il ne fait que modifier l’apparence des éléments.
Le placement peut être modifié effectivement, mais cette modification n’est que visuelle et non pas au niveau de la représentation sémantique de la page.
Modifier le thème graphique utilisé
Pour modifier le thème graphique utilisé, il est nécessaire que le plugin zen-garden soit activé sur le site.
Il suffit ensuite de se rendre dans l’espace de configuration du (...) -
Demande de création d’un canal
12 mars 2010, parEn fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)
Sur d’autres sites (8216)
-
Revision 5938 : pour swfupload ce n’est pas data.result.message mais data.message
29 septembre 2011, par kent1 — Logpour swfupload ce n’est pas data.result.message mais data.message
-
FFProbe generated data don't seem to agree with calculated data using ffmpeg libraries
18 janvier 2020, par ark1974Using ffmpeg library avformat I am trying to check if the ffprobe generated data agrees with the data generated by the library. The code objective is to try to seek to the nearest key frame. When trying to seek at 100 frame or less, the codes returns 0 all the time.
When trying to seek at 200 frame, the codes returns 4 all the time. But the result ie 4th frame don’t seem to be right. Where am I wrong ? Is my time_base conversion to actual frame faulty ?The test result using ffprobe
Filename = test.mp4
Duration = 00:00:10.56
Fps = 25
Total frames = 256
The key frames pkt_pts_time are at 2.120000 and 0.000000 (using -skip_frame nokey )
Corresponding pkt_duration_time: 0.040000 and 0.040000 ( same, why?)Abstract of the code :
// Objective: seek to the nearest key frame
frameIndex = 200;
int64_t timeBase = (int64_t(pCodecCtx->time_base.num) * AV_TIME_BASE) / int64_t(pCodecCtx->time_base.den);
int64_t seekTarget = int64_t(frameIndex) * timeBase;
if (av_seek_frame(pFormatCtx, -1, seekTarget, AVSEEK_FLAG_FRAME | AVSEEK_FLAG_BACKWARD) < 0) return -1;
//convert the time_base to actual frame
auto time2frame = [&](int64_t tb) {
return tb * int64_t(pCodecCtx->time_base.den) / (int64_t(pCodecCtx->time_base.num) * AV_TIME_BASE);
};
AVPacket avPacket;
int result = av_read_frame(pFormatCtx, &avPacket);
if (result == 0) {
auto dts = avPacket.dts;
auto pts = avPacket.pts;
auto idx = avPacket.stream_index;
auto f = time2frame(pts); // expecting the actual frame here
std::cout << dts << pts << idx << f;
} -
How to save the video stream as h264
16 mars 2023, par aaadddzxcI pull the stream through ffmpeg, and then save the video of this stream as an h264 file, but the saved file cannot be played. Why is this ?


The h264 saved by the following code cannot be played,i dont know why...


i try to vlc play, but cant play the h264 file.


can be save to h264 without avformat_alloc_output_context2 function ?


#include <thread>
#include <iostream>
#include <fstream>
extern "C"
{
#include <libavcodec></libavcodec>avcodec.h>
#include <libavcodec></libavcodec>bsf.h>
#include <libavformat></libavformat>avformat.h>
}

#pragma comment(lib,"avcodec.lib")
#pragma comment(lib,"avdevice.lib")
#pragma comment(lib,"avfilter.lib")
#pragma comment(lib,"avformat.lib")
#pragma comment(lib,"avutil.lib")
#pragma comment(lib,"swresample.lib")
#pragma comment(lib,"swscale.lib")

int mp4toannexb(AVBSFContext* bsf_ctx, AVPacket* pkt, std::ofstream& out)
{
 int ret;

 ret = av_bsf_send_packet(bsf_ctx, pkt);
 if (ret < 0) {
 std::cout << "bsf send packet failed, errno:" << ret << std::endl;
 return -1;
 }

 for (;;) {
 ret = av_bsf_receive_packet(bsf_ctx, pkt);
 if (AVERROR_EOF == ret || AVERROR(EAGAIN) == ret) {
 return 0;
 }
 if (ret < 0) {
 std::cout << "Could not receive packet, errno:" << ret << std::endl;
 return -1;
 }
 out.write((const char*)pkt->data, pkt->size);
 }
 return 0;
}


int main()
{
 AVOutputFormat* ofmt = NULL;
 AVFormatContext* ifmt_ctx = NULL;
 AVBSFContext* bsf_ctx = NULL;
 AVPacket* pkt = NULL;
 const char* in_filename = "http://192.168.1.12:8088/live/123.flv";
 int ret = -1;
 int video_index = -1;
 std::ofstream outh264("D:\\ConsoleApplication1\\Debug\\out.h264", std::ios::binary | std::ios::trunc);

 avformat_network_init();

 if ((ifmt_ctx = avformat_alloc_context()) == NULL) {
 std::cout << "avformat_alloc_context failed." << std::endl;
 exit(1);
 }

 if ((ret = avformat_open_input(&ifmt_ctx, in_filename, 0, 0)) < 0) {
 std::cout << "Could not open input file." << std::endl;
 exit(1);
 }

 if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) < 0) {
 std::cout << "Failed to retrieve input stream information" << std::endl;
 return -1;
 }

 if (!(pkt = av_packet_alloc())) {
 std::cout << "Could not allocate packet" << std::endl;
 return -1;
 }

 video_index = av_find_best_stream(ifmt_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, NULL, 0);
 if (video_index < 0) {
 std::cout << "Could not find stream " << std::string(av_get_media_type_string(AVMEDIA_TYPE_VIDEO)) << std::endl;
 return -1;
 }

 av_dump_format(ifmt_ctx, 0, in_filename, 0);

 const AVBitStreamFilter* filter = av_bsf_get_by_name("h264_mp4toannexb");
 if (NULL == filter) {
 std::cout << "Could not create filter" << std::endl;
 return -1;
 }

 ret = av_bsf_alloc(filter, &bsf_ctx);
 if (ret < 0) {
 printf("Could not alloc bitstream filter \n");
 return -1;
 }

 // avcodec_parameters_from_context
 ret = avcodec_parameters_copy(bsf_ctx->par_in, ifmt_ctx->streams[video_index]->codecpar);
 if (ret < 0) {
 printf("Parameter copy filed, errno: %d \n", ret);
 return -1;
 }

 ret = av_bsf_init(bsf_ctx);
 if (ret < 0) {
 printf("BSF init failed, errno: %d \n", ret);
 return -1;
 }

 while (av_read_frame(ifmt_ctx, pkt) >= 0) {
 if (pkt->stream_index == video_index)
 {
 mp4toannexb(bsf_ctx, pkt, outh264);
 }
 av_packet_unref(pkt);
 }
 outh264.close();
 avformat_close_input(&ifmt_ctx);
 av_packet_free(&pkt);
 av_bsf_free(&bsf_ctx);

 return 0;
}
</fstream></iostream></thread>