JavaCpp-FFMpeg avio_reading Example

JavaCpp FFMpeg Examples -1

1.(avio_reading)
从内存中读取音视频文件,本示例可以深入改造成从udp或者tcp中获取文件

c语言代码链接

Java代码

@Test
	public void test_avio_reading() throws Exception {
		String sourceFilePath = home + "wexin.mp4";
		try (FileInputStream is = new FileInputStream(sourceFilePath)) {
			AVFormatContext inputContext = avformat.avformat_alloc_context();
			int avio_ctx_buffer_size = 4096;
			BytePointer buffer = new BytePointer(avutil.av_malloc(avio_ctx_buffer_size));//必须要调用av_malloc
			AVIOContext avIOContext = avformat.avio_alloc_context(buffer, avio_ctx_buffer_size, 0, null, new Read_packet_Pointer_BytePointer_int() {
				@Override
				public int call(Pointer opaque, BytePointer buf, int buf_size) {
					try {
						byte[] b = new byte[buf_size];
						int size = is.read(b, 0, buf_size);
						if (size < 0) {
							return 0;
						} else {
							buf.put(b, 0, size);
							return size;
						}
					} catch (Throwable t) {
						System.err.println("Error on InputStream.read(): " + t);
						return -1;
					}
				}

			}, null, null);
			inputContext.pb(avIOContext);
			if (avformat.avformat_open_input(inputContext, (BytePointer) null, null, null) < 0) {
				throw new RuntimeException("打开文件失败");
			}
			avformat.avformat_find_stream_info(inputContext, (PointerPointer<?>) null);
			avformat.av_dump_format(inputContext, 0, "", 0);
			avformat.avformat_close_input(inputContext);
		}
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

victorkevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值