顯示具有 m3u 標籤的文章。 顯示所有文章
顯示具有 m3u 標籤的文章。 顯示所有文章

2017年5月22日 星期一

[macOS] m3u/m3u8 -> grep -> xargs -> wget -> ffmpeg: ts -> mp4

目的是把 m3u8 的資料備份,接著又覺得檔案一堆,不如就用 ffmepg 轉 mp4 ,久久用一次,又忘得差不多。

連續動作:

$ wget http://.../index.m3u8 -O index.m3u8
$ grep -v "#" index.m3u8 | xargs wget
$ vim index.m3u8
:%s/http[^\/]+//g
:%s/?.*//g
$ grep -v "#" index.m3u8 | tr -d '\r' | awk '{cmd="mv "$1"* "$1; print cmd}'
$ grep -v "#" index.m3u8 | tr -d '\r' | awk '{cmd="mv "$1"* "$1; system(cmd)}'
$ ffmpeg -i index.m3u8 -vcodec copy -acodec copy -bsf:a aac_adtstoasc out.mp4

2014年1月26日 星期日

[OSX] 使用 ffmpeg 將 mp4 list 依序串接起來 (ffmpeg concat) @ Mac OS X 10.9

最近研究了一下對岸的影音播放,發現有的服務實作時,將一部短片以固定時間進行切割,這樣在服務眾人或是走 P2P 時,可以很方便進行分流,然而,若要把它弄成一個檔案,那就得花點功夫了,好家在用 ffmpeg 就可以搞定囉:How to concatenate (join, merge) media files

以 mp4 為例:

$ ffmpeg -i file1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts '/tmp/tmp1'
$ ffmpeg -i file2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts '/tmp/tmp2'
$ ffmpeg -i "concat:/tmp/tmp1|/tmp/tmp2" -c copy -bsf:a aac_adtstoasc output.mp4


接著,嫌太慢就寫個 script 來處理 XDD

$ python ffmpeg-concat-mp4-files.py --files file1.mp4 file2.mp4 --output out.mp4
$ python ffmpeg-concat-mp4-files.py --m3u /tmp/m3u.list --output out.mp4


其中 m3u 是支援 http 的描述,也就是會把網路上的東西用 wget 下載回 tmp 區。因此 ffmpeg-concat-mp4-files.py 需要有 ffmpeg 跟 wget 指令才能。