movplayer.cpp
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is MPEG4IP.
  13.  * 
  14.  * The Initial Developer of the Original Code is Cisco Systems Inc.
  15.  * Portions created by Cisco Systems Inc. are
  16.  * Copyright (C) Cisco Systems Inc. 2000, 2001.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s): 
  19.  *              Bill May        wmay@cisco.com
  20.  */
  21. /* 
  22.  * movplayer.cpp - test program for quicktime library
  23.  */
  24. #include <stdlib.h>
  25. #include <stdio.h>
  26. #include <string.h>
  27. #include <errno.h>
  28. #include <unistd.h>
  29. #include <syslog.h>
  30. #include <fstream.h>
  31. #include <strstream.h>
  32. #include <quicktime.h>
  33. int main (int argc, char **argv)
  34. {
  35.   char *name;
  36.   int ret;
  37.   argv++;
  38.   argc--;
  39.   if (*argv == NULL) {
  40.     name = "/home/wmay/content/batman_av.mov";
  41.   } else {
  42.     name = *argv;
  43.   }
  44.   
  45.   ret = quicktime_check_sig(name);
  46.   if (ret == 1) {
  47.     printf("Looks like qt movien");
  48.   } else {
  49.     printf("return from check_sig is %d", ret);
  50.     exit(0);
  51.   }
  52.   quicktime_t *file;
  53.   file = quicktime_open(name, 1, 0, 0);
  54.   if (file == NULL) {
  55.     printf("Couldn't open file %sn", name);
  56.     exit(1);
  57.   }
  58.   int video = quicktime_video_tracks(file);
  59.   int audio = quicktime_audio_tracks(file);
  60.   int track_chan = quicktime_track_channels(file, 0);
  61.   printf("Video tracks %d audio tracks %d trackchan %dn", video, audio,
  62.  track_chan);
  63.   printf("Video compressor :%s:n", quicktime_video_compressor(file, 0));
  64.   if (video > 0) {
  65.     long vlen = quicktime_video_length(file, 0);
  66.     int vw, vh;
  67.     float fr;
  68.     vw = quicktime_video_width(file, 0);
  69.     vh = quicktime_video_height(file, 0);
  70.     fr = quicktime_video_frame_rate(file, 0);
  71.     printf("len %ld vw %d vh %d frame rate %gn", vlen, vw, vh, fr);
  72. #if 0
  73.     FILE *ofile = fopen("temp.mp4v", "w");
  74.     unsigned char *buffer = (unsigned char *)malloc(8 * 1024);
  75.     long max_fsize = 8 * 1024;
  76.     for (long frame_on = 0; frame_on < vlen; frame_on++) {
  77.       long next_frame = quicktime_frame_size(file, frame_on, 0);
  78.       if (next_frame > max_fsize) {
  79. max_fsize = next_frame;
  80. free(buffer);
  81. buffer = (unsigned char *)malloc(max_fsize);
  82.       }
  83.       next_frame = quicktime_read_frame(file, 
  84. buffer,
  85. 0);
  86.       printf("Framesize %ldn", next_frame);
  87.       fwrite(buffer, next_frame, sizeof(unsigned char), ofile);
  88.     }
  89.     fclose(ofile);
  90. #endif
  91.       
  92.   }
  93.   
  94.   if (audio > 0) {
  95.     long sample = quicktime_audio_sample_rate(file, 0);
  96.     long audiolen = quicktime_audio_length(file, 0);
  97.     int bits = quicktime_audio_bits(file, 0);
  98.     printf("Audio sample %ld len %ld bits %dn", sample, audiolen, bits);
  99.     printf("Audio compressor :%s:n", quicktime_audio_compressor(file, 0));
  100. #if 0
  101.     unsigned char buffer[8096];
  102.     FILE *ofile = fopen("temp.aac", "w");
  103.     uint32_t retsize;
  104.     for (long ix = 0; ix < audiolen; ix++) {
  105.       retsize = quicktime_read_audio_frame(file, buffer, 0);
  106.       //printf("Frame %ld - len %d", ix, retsize);
  107.       fwrite(buffer, retsize, sizeof(char), ofile);
  108.     }
  109.     fclose(ofile);
  110. #endif
  111.   }
  112.   quicktime_close(file);
  113. }