有没有办法从 flv(h264、aac)中解复用 h264 视频流?

有没有办法从 flv(h264、aac)中解复用 h264 视频流?

使用ffmpeg从 .flv 视频中解复用 h264 流总是会得到一个无法重新复用到 .mp4 容器中的流(使用MP4Box from package *gpac),ffmpeg)。

这是产生“无效”流的解复用命令..(未知格式

ffmpeg -i "(h264-aac).flv"  # get stream info
  # Stream #0.0: Video: h264, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 259 kb/s, 29.97 tbr, 1k tbn, 59.94 tbc

ffmpeg -y -map "0.0" -vcodec copy -an -i "(h264-aac).flv" \
                                         "(h264-aac).flv.h264" 

我也尝试过:-f h264,但得到了同样的错误。

上面的命令在针对容器中的视频运行时有效.mp4,所以这可能是特定于flv(?)的东西。

我最接近隔离 h264 视频流的是使用以下命令;但它将流包装在一个flv失去了纵横比的容器中......

ffmpeg -y -map "0.0" -vcodec copy -an -i "(h264-aac).flv" \
                                         "(h264-aac).flv.NEW.flv" 

有什么办法可以抓取这个视频流吗?

附言。我已经尝试了几个不同的输入 .flv 视频,...同样的错误。

答案1

中间步骤的目的是什么在最终将原始 H.264 流混合到 .mp4 容器之前,将其存储为非容器文件?

当然,原始 mpeg2 视频流或 .aac 音轨可以在没有容器开销的情况下进行存储,但正如您所意识到的,应用程序友好的文件扩展名的明显候选者 - .avc、.h264、.ts - 不可以。似乎使 FFmpeg 或 VLC 更容易操作原始 H.264 流。

如果您的 H.264 流注定要存放在 .mp4 容器中,为什么不将视频流直接从 .flv 文件复制到 .mp4 文件中并将其存储在那里,直到您准备好将音频复用到最终产品中?

命令行看起来像这样:

  ffmpeg -i infile.flv -an -vcodec copy outfile.mp4

如果 FFmpeg 响应这个简单的命令行而抛出错误消息,则您实际上可能有一个损坏的文件。

相关内容