日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用ffmpeg 将mp4文件转化未hls文件

發(fā)布時(shí)間:2025/3/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用ffmpeg 将mp4文件转化未hls文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用laravel-admin后臺(tái)先寫一個(gè)視頻上傳

protected function form(){$form = new Form(new Video());$form->text('video_title', __('Video title'));// uniqueName(隨機(jī)生成一個(gè)文件名) move(放入的文件夾)$form->file('video_url', __('Video url'))->uniqueName()->move("video");$form->number('goods_id', __('Goods id'));return $form;}

寫一個(gè)控制器 用于linux定時(shí)器去調(diào)用

//視頻自動(dòng)解碼public function decoder(){//獲取狀態(tài)值為0的所有數(shù)據(jù) (數(shù)據(jù)庫表 0為未)$video = Video::where("video_status",0)->get();//給出提示 多會(huì)開始執(zhí)行的轉(zhuǎn)碼echo "開始轉(zhuǎn)碼:".date("Y-m-d H:i:s");//判斷是否有數(shù)據(jù)if($video){//循環(huán)執(zhí)行 因?yàn)椴灰欢ㄊ且粭l數(shù)據(jù)foreach($video as $k=>$v){//獲取當(dāng)前的id$id = $v->id;//開始轉(zhuǎn)碼Video::where(['id'=>$id])->update(['video_status'=>1]); //更新轉(zhuǎn)碼狀態(tài)為 1 開始轉(zhuǎn)碼//使得客戶端結(jié)束連接后,需要大量時(shí)間運(yùn)行的任務(wù)能夠繼續(xù)運(yùn)行。fastcgi_finish_request();//必須要有此函數(shù)否則定時(shí)任務(wù)會(huì)報(bào)錯(cuò)//所需參數(shù)//當(dāng)前視頻路徑$video_path = $v->video_url;//轉(zhuǎn)碼后的視頻路徑$decode_path = "video_out".$id."/";//m3u8文件名$m3u8 = $decode_path.$v->video_title.".m3u8";//分片文件名$ts = $decode_path.$v->video_title."%03d.ts";//創(chuàng)建文件夾 加 2>&1可以查看錯(cuò)誤信息$dir = "cd storage/public/ && mkdir -p hls/$decode_path 2>&1";shell_exec($dir);//執(zhí)行解碼$cmd = "cd storage/public/ && ffmpeg -i {$video_path} -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list hls/{$m3u8} -segment_time 15 hls/{$ts} 2>&1";//執(zhí)行shell_exec($cmd);//獲取m3u8路徑$m3u8_path = "storage/public/hls/".$decode_path;//修改數(shù)據(jù)庫Video::where("id",$id)->update(["video_status"=>2,"video_m3u8"=>$m3u8_path]);}}

linux定時(shí)任務(wù)調(diào)試時(shí)
注:linux定時(shí)任務(wù)為 crontab -e 下填入 * * * * *(對(duì)應(yīng)分時(shí)日月周)
/usr/bin/curl http://local.shop1.com/decode
調(diào)試則直接復(fù)制除 * 號(hào)之外的去linux粘貼看是否有返回值即可

會(huì)報(bào)301需要去綁定ip 在/etc/hosts 下加

//xxx為自己的ip 后面為自己的域名 xxx.xxx.xxx.xxx local.shop1.com

之后如果還有錯(cuò)誤那就是 fastcgi_finish_request() 這個(gè)函數(shù)沒有添加

總結(jié)

以上是生活随笔為你收集整理的使用ffmpeg 将mp4文件转化未hls文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。