首页 > 编程语言 >音视频:JavaCV 视频切片(MPEG-TS)(HLS)

音视频:JavaCV 视频切片(MPEG-TS)(HLS)

时间:2022-12-31 12:11:45浏览次数:45  
标签:MPEG Opening HLS 000000002483b5c0 hls ts 音视频 video writing

需要进行简单的音视频编程,如果不是特别数据C/C++,那么JavaCV应该是比较好的选择,下面记录一下使用JavaCV 视频切片(MPEG-TS)(HLS)的方法。

注意:存放HLS切片的目录必须存在(不会自动创建)

1. 代码实现

通过recorder.setOption进行HLS切片配置:

public class Sample36 {

    public static void main(String[] args) throws Exception {
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("E:\\lpl.mp4");
        grabber.start();
        
        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("E:\\hls\\index.m3u8", grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());
        recorder.setFormat("hls");
        recorder.setOption("hls_time", "10");
        recorder.setOption("hls_playlist_type", "vod");
        recorder.setOption("hls_list_size", "0");
        recorder.setOption("hls_segment_filename", "E:\\hls\\video_%04d.ts");
        recorder.start(grabber.getFormatContext());
        
        AVPacket packet = null;
        while ((packet = grabber.grabPacket()) != null) {
            recorder.recordPacket(packet);
            avcodec.av_packet_unref(packet);
        }
        
        recorder.close();
        grabber.close();
    }
}

2. 效果展示

视频切片后会生成m3u8索引文件和TS切片视频:

3. 日志打印

下面是切片打印的日志:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\lpl.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:13:08.00, start: 0.046000, bitrate: 899 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 2560x1600 [SAR 1:1 DAR 8:5], 823 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
[hls @ 000000002483b5c0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
[hls @ 000000002483b5c0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, hls, to 'E:\hls\index.m3u8':
  Metadata:
    encoder         : Lavf58.45.100
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 2560x1600 [SAR 1:1 DAR 8:5], q=2-31, 823 kb/s, 30 fps, 90k tbn, 30 tbc
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0000.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0001.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0002.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0003.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0004.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0005.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0006.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0007.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0008.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0009.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0010.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0011.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0012.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0013.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0014.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0015.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0016.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0017.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0018.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0019.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0020.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0021.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0022.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0023.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0024.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0025.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0026.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0027.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0028.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0029.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0030.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0031.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0032.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0033.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0034.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0035.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0036.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0037.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0038.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0039.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0040.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0041.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0042.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0043.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0044.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0045.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0046.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0047.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0048.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0049.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0050.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0051.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0052.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0053.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0054.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0055.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0056.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0057.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0058.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0059.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0060.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0061.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0062.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0063.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0064.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0065.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0066.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0067.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0068.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0069.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0070.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0071.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0072.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0073.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0074.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0075.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0076.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0077.ts' for writing
[hls @ 000000002483b5c0] Opening 'E:\hls\video_0078.ts' for writing

标签:MPEG,Opening,HLS,000000002483b5c0,hls,ts,音视频,video,writing
From: https://www.cnblogs.com/michong2022/p/17016423.html

相关文章