ffmpeg - 使用 Xuggle 对 HTTP 实时流进行编码

标签 ffmpeg video-encoding http-live-streaming xuggle xuggler

我创建了一个基于 Xuggle 的服务器系统,将传入的文件编码为 H264 并对其进行分段。但是,在 Quicktime 中播放视频时,它几乎可以正常工作(有时音频会出现小问题),但是当从一个质量流更改为另一个质量流时,图像会丢失。

所以我运行了'mediastreamvalidator'并得到了以下错误:

ERROR: (-1) Unknown video codec: 1836069494 (program 0, track 0) ERROR: (-1) failed to parse segment as either an MPEG-2 TS or an ES



所以我使用 FFMPEG 来获取有关 codex 的一些信息:
我的 Xuggler 编码的结果:
Input #0, mpegts, from 'segment_0.ts':
  Duration: 00:00:09.40, start: 0.000000, bitrate: 3618 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 960x540 [PAR 1:1 DAR 16:9], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x101]: Audio: mp2, 48000 Hz, stereo, s16, 128 kb/s

Compressor 创建的文件的结果:
Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 25.00 (25/1)
Input #0, mpegts, from 'fileSequence1.ts':
  Duration: 00:00:09.97, start: 19.984578, bitrate: 5308 kb/s
  Program 1 
    Stream #0.0[0x101]: Video: h264 (Main), yuv420p, 960x540, 25 tbr, 90k tbn, 180k tbc
    Stream #0.1[0x102]: Audio: aac, 22050 Hz, stereo, s16, 32 kb/s

在我看来,主要区别在于 Xuggler 编码文件显示的是 Video: mpeg2video 而不是 h264。但是,在编码时,我确实将 Coder 设置为 ICodec.ID.CODEC_ID_H264。

我怎样才能强制它使用h264。音频也是一样。我指定了 AAC 并获得了 MP2。

我随后直接使用了 FFMPEG,结果是:
Input #0, mpegts, from 'encoded.ts':
  Duration: 00:00:24.16, start: 1.400000, bitrate: 360 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0.0[0x100]: Video: h264 (Main), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x101](eng): Audio: aac, 48000 Hz, stereo, s16, 57 kb/s

这样看起来更好。我可以直接使用 FFMPEG,但是通过使用 Xuggler,我可以分割文件,同时更容易跟踪进程的进度。

最佳答案

我暂时离开了 Xuggle,使用 FFMPEG 进行编码和分段,仅使用它来获取编码信息等。
目前需要两个过程(首先编码,然后用 FFMPEG 分段),但希望很快 FFMPEG 将允许在编码时动态分段

关于ffmpeg - 使用 Xuggle 对 HTTP 实时流进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402600/

相关文章:

android - 从 Surface 编码时 Adreno GPU 上的编码器崩溃

ffmpeg - mpeg-dash 工具包,我怎样才能制作这样的视频?

video - ffmpeg:多个视频过滤器顺序问题

android - 如何为 Android 上的实时视频流准备文件?

android - Android 4 上的 Http Live Streaming( Ice Cream Sandwich )

php - FFMPEG:如何在 FFMPEG Php 中使用 S3 url

ffmpeg - 使用 FFmpeg 3.4 输出/检测 NDI 问题

api - 如何使用 ffmpeg av_interleaved_write_frame() 写入 x264_encoder_encode() 生成的 NAL

video - 如何在 libavformat 中设置 RTP 有效负载类型?

swift - 错误域=AVFoundationErrorDomain 代码=-11835 "Cannot Open"