Streaming Media/Media Tools
-
VLC 미디어 재생의 데이타 흐름 다이어그램Streaming Media/Media Tools 2016. 12. 16. 14:24
아래는 VLC로 미디어 파일을 재생할 경우 구성되는 요소와 데이터의 흐름을 나타낸 다이어그램이다. read는 받는 쪽에서 데이터를 가져오는 방식이고 send/play는 보내는 쪽에서 밀어내는 방식이다. thread간에는 fifo(queue)로 이용하는 데이터를 전달한다. VLC의 객체 간의 구성을 데이타 흐름과 같이 구성해보면 다음과 같다. 실선은 객체의 부모/자식의 관계, 두꺼운 점선(···)은 데이타의 흐름과 관련된 구성(연결관계), 점선(---)은 객체의 일부 구성(포함관계)을 나타낸다. 2013/06/17 - [Practice/FFmpeg] - FFmpeg 데이타 흐름 다이어그램
-
FFmpeg으로 트랜스코딩하는 프로그램 만들기Streaming Media/Media Tools 2013. 6. 21. 13:50
선행 학습FFmpeg으로 재생하는 프로그램 만들기 예제 코드 static AVFormatContext *fmt_ctx = NULL; static AVCodecContext *dec_ctx = NULL; static int vst_idx = -1; void open_input_file() { AVCodec *dec; /* open input streams */ avformat_open_input(&fmt_ctx, filename, NULL, NULL); /* select the video stream */ vst_idx = av_find_best_stream(fmt_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, &dec, 0); dec_ctx = fmt_ctx->streams[vst_idx]-..
-
FFmpeg으로 재생하는 프로그램 만들기Streaming Media/Media Tools 2013. 6. 20. 11:30
선행 학습FFmpeg으로 미디어 스트림 열기 예제 코드 static AVFormatContext *fmt_ctx = NULL; void play() { AVStream *st; AVPacket pkt; AVFrame *frm = av_frame_alloc(); int got_frame; while (1) { av_read_frame(fmt_ctx, &pkt); st = fmt_ctx->streams[pkt.stream_index]; avcodec_get_frame_defaults(frm); switch (st->codec->codec_type) { case AVMEDIA_TYPE_AUDIO: avcodec_decode_audio4(st->codec, frm, &got_frame, &pkt); break;..
-
FFmpeg으로 미디어 스트림 열기Streaming Media/Media Tools 2013. 6. 19. 13:34
예제 코드 static AVFormatContext *fmt_ctx = NULL; void open_input_file() { avformat_open_input(&fmt_ctx, filename, NULL, NULL); for (i = 0; i nb_streams; i++) { AVStream *st = fmt_ctx->streams[i]; AVCodec *dec; avcodec_open2(st->codec, dec, NULL); } } void close_input_file() { for (i = 0; i nb_streams; i++) { AVStream *st = fmt_ctx->streams[i]; avcodec_close(st->codec); } avfor..
-
FFmpeg 데이타 흐름 다이어그램Streaming Media/Media Tools 2013. 6. 17. 17:16
요즘에 쓰레드를 사용하지 않고 동작하는 경우는 거의 없다고 본다. 따라서 쓰레드를 사용하는 상태를 가정하여 데이타의 흐름을 다이어그램으로 정리한다. 이 다이어그램에 관한 몇 가지 사전 안내 ffmpeg에 대해서 분석하는 것은 이제 시작이다. 다이어그램이 틀렸을 가능성을 염두한다. ffmpeg의 소스코드는 2013년 5월 정도에 git 으로 받아왔다. 흐름의 추적은 emacs와 gtags를 사용했다. 다이어그램은 dia로 작성했다. 내맘대로 다이어그램이다. 즉, UML이니 뭐니 하는 그런 것이 아니다. 서로 알아보면 그만이지 않는가? 고침 `av_codec_xxx'이 아니라 'avcodec_xxx'이다. (예: av_codec_encode_video2 -> avcodec_encode_video2) 쓰레드를..
-
FFmpeg 기본 자료형 - AVFifoBufferStreaming Media/Media Tools 2013. 6. 10. 14:59
순환하는 FIFO 이다. av_fifo_generic_read / av_fifo_generic_write 버퍼에 데이타를 읽고/쓴다.콜백 함수를 사용하지 않으면, 메모리의 복사가 발생한다.읽은 만큼 FIFO를 버린다. (av_fifo_drain 함수 참조)읽고/쓰기 함수에서 FIFO의 크기를 검사하지 않는 점을 주의한다. av_fifo_peek2 오프셋의 데이타의 주소를 반환한다.FIFO 자체에 어떠한 변경도 가하지 않는다. av_fifo_size 저장된 데이타의 크기이다. av_fifo_space 저장 가능한 크기이다. 즉, 버퍼의 크기 - 저장된 데이타의 크기 av_fifo_alloc / av_fifo_free FIFO 구조체의 자원을 생성/소멸한다. av_fifo_grow FIFO의 버퍼의 크기를 ..
-
WebRTC: 비디오 캡쳐화면 보여주기Streaming Media/Media Tools 2013. 3. 12. 17:51
MediaStream MediaStream API는 동기화된 미디어 스트림을 나타낸다. 예를 들면, 캡코더와 마이크로부터 입력받은 스트림은 동기화된 비디오와 오디오 트랙을 가진다. http://www.w3.org/TR/mediacapture-streams/#stream-api 태그 태그는 HTML5에 소개된 것으로, 동영상이나 미디어 스트림과 같은 비디오를 표현하는데 사용한다. http://www.w3schools.com/tags/tag_video.asp 출처: http://www.html5rocks.com/en/tutorials/getusermedia/intro/
-
FFmpeg 소개Streaming Media/Media Tools 2012. 11. 2. 14:53
FFmpeg은 완벽하고 플랫폼 의존적이지 않은 미디어 프레임워크이다. 여러가지 도구와 개발 라이브러리 제공한다. 홈페이지 제공하는 도구ffmpeg - 미디어 포맷 변환 도구 ffserver - 라이브 방송을 하는 멀티미디어 스트리밍 서버 ffplay - 간단한 멀티미디어 플레이어 ffprobe - 간단한 멀티미디어 스트림 분석기 개발 라이브러리libavutil - 다양한 개발 도구 라이브러리 libavcodec - 오디오/비디오 코덱 라이브러리 libavformat - 멀티미디어 컨테이너의 디먹서/먹서 라이브러리 libavdevice - 입출력 장치 제어 라이브러리 libavfilter - 미디어 필터 라이브러리 libswscale - 이미지 처리 라이브러리 libswresample - 오디오 처리 라이..