linux 声卡设备文件夹,linux下ffmpeg采集音视频设备

linux下ffmpeg采集音视频设备

发布时间:2019-05-24 11:38,

浏览次数:669

, 标签:

linux

ffmpeg

<>Linux下查看音视频设备

1、视频输入设备:

命令查看:ls /sys/class/video4linux/

执行结果如下:

如果系统存在video4linux文件夹说明已安装过视频驱动,video4linux目录下每个链接文件代表一个视频设备

查看video0下有哪些文件:ls /sys/class/video4linux/video0

执行结果如下:

读取name文件信息:USB 2.0 CAMERA 为video0视频设备的名称

2、音频输入设备:

命令查看音频输入设备:cat /proc/asound/cards

转载下:

https://blog.csdn.net/tang_chuanlin/article/details/86081102

https://www.cnblogs.com/rushoutasia/p/6409639.html

<>ffmpeg采集音视频设备

1、采集视频设备USB 2.0 CAMERA:

linux: is->filename="/dev/video0"

windows: is->filename="video=USB 2.0 CAMERA"

补充:

通过SDL2.0渲染YUV420p:

int rtp_playinit(){ avdevice_register_all(); av_register_all(); #if

USED_NETWORK avformat_network_init(); #endif SDL_SetMainReady(); if (SDL_Init

(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) { av_log(NULL,

AV_LOG_FATAL, "Could not initialize SDL - %s\n", SDL_GetError()); #if

USED_NETWORK avformat_network_deinit(); #endif return -1; } return 0; } static

int sdl_window_init(rtpVideoState *is){ int videoWidth=is->video_ctx->width;

int videoHeight=is->video_ctx->height; int

access=SDL_TEXTUREACCESS_STREAMING;//SDL_TEXTUREACCESS_STREAMING Uint32

format=SDL_PIXELFORMAT_YV12; if(is->hwnd==NULL){ return -1; }

is->sdl_Window=SDL_CreateWindowFrom(is->hwnd); if(is->sdl_Window){

SDL_ShowWindow(is->sdl_Window); fprintf(stdout,"SDL_CreateWindow OK\n");

fflush(stdout); }else{ fprintf(stdout,"SDL_CreateWindow failed\n");

fflush(stdout); return -1; } is->sdl_Render =

SDL_CreateRenderer(is->sdl_Window,-1,0); if(is->sdl_Render==NULL){

fprintf(stdout,"SDL_CreateRenderer: failed\n"); fflush(stdout); return -1; }

is->sdl_Texture = SDL_CreateTexture(is->sdl_Render, format,

access,videoWidth,videoHeight); if(is->sdl_Texture==NULL){

fprintf(stdout,"SDL_CreateTexture: failed\n"); fflush(stdout); return -1; }

return 0; } static void sdl_window_deinit(rtpVideoState *is){

if(is->sdl_Texture){ SDL_DestroyTexture(is->sdl_Texture); is->sdl_Texture=NULL;

} if(is->sdl_Render){ SDL_DestroyRenderer(is->sdl_Render); is->sdl_Render=NULL;

} if(is->sdl_Window){ SDL_DestroyWindow(is->sdl_Window); is->sdl_Window=NULL; }

}

<>渲染部分代码:

SDL_UpdateYUVTexture(decoder->sdl_Texture, NULL, pFrameYUV->data[0],

pFrameYUV->linesize[0],pFrameYUV->data[1],

pFrameYUV->linesize[1],pFrameYUV->data[2], pFrameYUV->linesize[2]); //

SDL_UpdateTexture(decoder->sdl_Texture,

NULL,pFrameYUV->data[0],pFrameYUV->linesize[0]);

SDL_RenderClear(decoder->sdl_Render);

SDL_RenderCopy(decoder->sdl_Render,decoder->sdl_Texture, NULL,NULL);

SDL_RenderPresent(decoder->sdl_Render );

注:SDL_ShowWindow(is->sdl_Window); 缺少这一行,第二次用同句柄初始化将黑屏,画面不出来。

单做下笔记,如有不对请打脸!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值