
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 (10553)
-
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 -
FFmpeg 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