1

我需要获取这个在 h264 中但在 flv 容器中编码的文件,然后将其放入 mp4、3gp 或任何 android MediaPlayer 可以理解的文件格式。

我想在本地做这个。因为我不会解码或编码任何东西,所以我认为我不会浪费很多能量(我错了吗?)

我按照这里的说明http://www.roman10.net/?p=394并且可以成功编译和使用 ffmpeg 并将其与 mp4 和 3gp 文件一起使用。

但是当涉及到 flv 文件时,它会失败。我知道在 ffmpeg for android 的特定端口中没有 flv 文件的格式定义。

例如,没有 libavformat/flv.h 头文件。

也许这就是为什么它有效:

extern AVInputFormat ff_mov_demuxer;
av_register_input_format(&ff_mov_demuxer);

虽然这失败了:

extern AVInputFormat ff_flv_demuxer;
av_register_input_format(&ff_flv_demuxer);

问题是,隧道尽头有灯吗?有人做过类似的事情吗?有用吗?我的意思是,我总是可以将 flv 媒体文件放入 Flash 播放器中,瞧.. 问题是这将是一个特殊的解决方案,因为它不适用于所有那些运行速度较慢的设备但还不能运行 Flash 的人.

尼尔森

PS。以防万一。以下是有关我正在谈论的文件的一些信息:

ffmpeg -i rio.flv 
ffmpeg version N-32624-gea8de10, Copyright (c) 2000-2011 the FFmpeg developers
  built on Sep 15 2011 23:31:42 with gcc 4.5.2
  configuration: --enable-libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-libx264 --enable-libxvid --enable-gpl --enable-nonfree
  libavutil    51. 16. 0 / 51. 16. 0
  libavcodec   53. 15. 0 / 53. 15. 0
  libavformat  53. 12. 0 / 53. 12. 0
  libavdevice  53.  3. 0 / 53.  3. 0
  libavfilter   2. 42. 0 /  2. 42. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0

Seems stream 0 codec frame rate differs from container frame rate: 2000.00 (2000/1) -> 14.99 (15000/1001)
Input #0, flv, from 'rio.flv':
  Duration: 00:01:00.06, start: 0.000000, bitrate: 783 kb/s
    Stream #0.0: Video: h264 (Main), yuv420p, 704x480 [SAR 10:11 DAR 4:3], 14.99 tbr, 1k tbn, 2k tbc
4

0 回答 0