
Recherche avancée
Autres articles (74)
-
Mise à jour de la version 0.1 vers 0.2
24 juin 2013, parExplications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...) -
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
Sur d’autres sites (10138)
-
FFmpeg live streaming for media source extensions(MSE)
1er septembre 2022, par IceCreamVanI try implement video live streaming from RTSP stream to webpage with media source extensions(MSE) with using FFmpeg


Expected system diagram.




I know that this task can realize with HLS or WebRTC, but HLS have large delay and WebRTC very hard to implementation.


I want catch RTSP stream with FFMPEG split it to ISO BMMF(ISO/IEC 14496-12) chuncks in "live mode" and send it to my web server by TCP in which i restream this chunks to webpage by websocket. In webpage i append chunck to buffer sourceBuffer.appendBuffer(new Uint8Array(chunck)) and video play in streaming mode.


Problem in first step with ffmpeg i can easy split RTSP stream to segments with this


ffmpeg -i test.mp4 -map 0 -c copy -f segment -segment_time 2 -reset_timestamps 1 output_%03d.mp4



but i cant redirect output to tcp ://127.0.0.1 or pipe:1, if i correctly understood segment not work with pipes. For example i can easy send video frames in jpg by TCP with image2 catch ff d9 bytes in TCP stream and split stream to jpg images.


ffmpeg -i rtsp://127.0.0.1:8554 -f image2pipe tcp://127.0.0.1:7400



How i can split RTSP stream to ISO BMMF chunks for sending to webpage for playing with media source extensions ? Or other way to prepare RTSP stream with FFmpeg for playing in MSE. Maybe i not correctly understood how working MSE and how prepare video for playing.


-
How to accurately/precisely seek to a timestamp in media with ffmpeg API ?
11 novembre 2024, par wangt13I am writing a simple audio player with
ffmpeg
ver.4.4.4, and I want to seek to specific timestamp of the audio media (a MP3 file).

Here is my code.
I am using
avformat_seek_file()
with flags ofAVSEEK_FLAG_ANY | AVSEEK_FLAG_BACKWARD
, and when I setseek_pos
to 10 second when it is playing frames of 3rd second, it seemed NOT jump to the 10th second, it only played the audios after 3rd second !

Then I added the code skipping/discarding the packets whose pts is before the seek position. This time, it loops in the
if (curr_s < seek_ts)
, not going to 10th seconds.

It seemed NO
keyframe
at 10th second.

void decode_func(...)
{
 while (1) {
 if (av_read_frame(pfmtctx, packet) < 0) {
 avcodec_flush_buffers(pcodectx);
 printf("Got end of media, breaking\n");
 break;
 }
 /**
 * Discard the packet of pts before seek position
 */
 curr_s = packet->pts * av_q2d(pfmtctx->streams[stream]->time_base);
 if (seek_ts) {
 if (curr_s < seek_ts) {
 avcodec_flush_buffers(pcodectx);
 av_frame_unref(pFrame);
 continue;
 } else {
 seek_ts = 0;
 }
 }
 if (seek_req) {
 int64_t seek_abs;
 seek_req = 0;
 seek_abs = (seek_pos)*AV_TIME_BASE;
 printf("Seek to %lld, pts: %lld\n", seek_abs, packet->pts;
 if (seek_abs < 0) {
 seek_abs = 0;
 }
 if (avformat_seek_file(pfmtctx, -1, INT64_MIN, seek_abs, INT64_MAX, AVSEEK_FLAG_ANY | AVSEEK_FLAG_BACKWARD) >= 0) {
 avcodec_flush_buffers(pcodectx);
 seek_ts = seek_abs;
 continue;
 } else {
 printf("Failed to seek to %lld\n", seek_abs);
 seek_ts = 0;
 }
 }

 res = avcodec_send_packet(pcodectx, packet);
 while (res >= 0) {
 res = avcodec_receive_frame(pcodectx, pFrame);
 if (res == AVERROR(EAGAIN)) {
 break;
 } else if (res == AVERROR_EOF) {
 break;
 } else if (res >= 0) {
 /// Processing decoded frame
 }
 av_frame_unref(frame);
 }
}



So, how can I precisely (almost) seek to a timestamp with FFMPEG ?


-
FFmpeg to transfer from bad media
31 décembre 2017, par TheSavoI have an SDcard that has two videos recorded from an old phone. The media is bad and I have already run SpinRite and chkdsk, to fix the errors. The files still fail to copy completely.
I can play some portion of the files in VLC player. It plays about as far as File copy and TeraCopy before the copy job fails.
They and MP4 files. I would like to use ffmpeg to transfer the portion of the video that will play out. is-i
the best parameter ?ffmpeg -i H:\badfile.mp4 e:\portion.mp4
Here is the output from mediainfo if that helps
Complete name : H:\DCIM\badfile.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/3gp4)
File size : 422 MiB
Duration : 3 min 46 s
Overall bit rate : 15.6 Mb/s
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings : CABAC / 1 Ref Frames
Format settings, CABAC : Yes
Format settings, RefFrames : 1 frame
Format settings, GOP : M=1, N=61
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 3 min 45 s
Bit rate : 15.5 Mb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 19.469 FPS
Minimum frame rate : 14.085 FPS
Maximum frame rate : 30.303 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.385
Stream size : 418 MiB (99%)
Title : VideoHandle
Language : English
Encoded date : UTC 2013-09-17 13:18:06
Tagged date : UTC 2013-09-17 13:18:06
mdhd_Duration : 225892Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : mp4a-40-2
Duration : 3 min 46 s
Bit rate mode : Constant
Bit rate : 128 kb/s
Nominal bit rate : 96.0 kb/s
Channel(s) : 2 channels
Channel positions : Front : L R
Sampling rate : 44.1 kHz
Frame rate : 43.066 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 3.46 MiB (1%)
Title : SoundHandle
Language : English
Encoded date : UTC 2013-09-17 13:18:06
Tagged date : UTC 2013-09-17 13:18:06