2010-04-23 6 views

Répondre

0

Voici ce que je fais et il fonctionne très bien pour moi. Appelez

ffmpeg -i District9.mov 

Ensuite, trouver la longueur de la vidéo dans l'extrait ci-dessous avec une expression régulière ou une simple vérification de type string.startWith(" Duration:"):

Seems stream 0 codec frame rate differs from container frame rate: 5994.00 
(5994/1) -> 29.97 (30000/1001) 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/stu/Movies/District9.mov': 
    Duration: 00:02:32.20, start: 0.000000, bitrate: 9808 kb/s 
    Stream #0.0(eng): Video: h264, yuv420p, 1920x1056, 29.97tbr, 2997tbn, 5994tbc 
    Stream #0.1(eng): Audio: aac, 44100 Hz, 2 channels, s16 
    Stream #0.2(eng): Data: tmcd/0x64636D74 

Vous aurez devrait être en mesure de trouver de manière cohérente et en toute sécurité Duration: hh:mm:ss.nn et analyser pour déterminer la taille du clip vidéo source.

8

Pourquoi voulez-vous analyser la sortie? Au lieu d'utiliser les API FFMpeg pour obtenir la durée du flux audio du fichier. On ne peut pas compter sur les chaînes de sortie, dire que l'équipe de développement décide de changer les journaux à l'avenir. Donc, utilisez des API pour obtenir la durée.

Procédez comme suit:

1. av_register_all(); 

2. AVFormatContext * inAudioFormat = NULL; 
    inAudioFormat = avformat_alloc_context(); 
    int errorCode = av_open_input_file(& inAudioFormat, "your_audio_file_path", NULL, 0, NULL); 

3. int numberOfStreams = inAudioFormat->nb_streams; 
    AVStream *audioStream = NULL; 
    for (int i=0; i<numberOfStreams; i++) 
    { 
     AVStream *st = inAudioFormat->streams[i]; 

     if (st->codec->codec_type == CODEC_TYPE_AUDIO) 
     { 
      audioStream = st; 
      break; 
     } 
    } 

4. double divideFactor; 
    divideFactor = (double)1/rationalToDouble(audioStream->time_base); 

5. double durationOfAudio = (double) audioStream->duration/divideFactor; 

6. av_close_input_file(inAudioFormat); 

Je nai inclus des contrôles d'erreur dans ce code, vous pouvez travailler par vous-même. J'espère que ça aide.